Skip to main content

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(
9346                    <fidl_fuchsia_io_common::Operations as fidl::encoding::ValueTypeMarker>::borrow,
9347                ),
9348                encoder,
9349                offset + cur_offset,
9350                depth,
9351            )?;
9352
9353            _prev_end_offset = cur_offset + envelope_size;
9354
9355            Ok(())
9356        }
9357    }
9358
9359    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Directory {
9360        #[inline(always)]
9361        fn new_empty() -> Self {
9362            Self::default()
9363        }
9364
9365        unsafe fn decode(
9366            &mut self,
9367            decoder: &mut fidl::encoding::Decoder<'_, D>,
9368            offset: usize,
9369            mut depth: fidl::encoding::Depth,
9370        ) -> fidl::Result<()> {
9371            decoder.debug_check_bounds::<Self>(offset);
9372            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9373                None => return Err(fidl::Error::NotNullable),
9374                Some(len) => len,
9375            };
9376            // Calling decoder.out_of_line_offset(0) is not allowed.
9377            if len == 0 {
9378                return Ok(());
9379            };
9380            depth.increment()?;
9381            let envelope_size = 8;
9382            let bytes_len = len * envelope_size;
9383            let offset = decoder.out_of_line_offset(bytes_len)?;
9384            // Decode the envelope for each type.
9385            let mut _next_ordinal_to_read = 0;
9386            let mut next_offset = offset;
9387            let end_offset = offset + bytes_len;
9388            _next_ordinal_to_read += 1;
9389            if next_offset >= end_offset {
9390                return Ok(());
9391            }
9392
9393            // Decode unknown envelopes for gaps in ordinals.
9394            while _next_ordinal_to_read < 1 {
9395                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9396                _next_ordinal_to_read += 1;
9397                next_offset += envelope_size;
9398            }
9399
9400            let next_out_of_line = decoder.next_out_of_line();
9401            let handles_before = decoder.remaining_handles();
9402            if let Some((inlined, num_bytes, num_handles)) =
9403                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9404            {
9405                let member_inline_size =
9406                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9407                        decoder.context,
9408                    );
9409                if inlined != (member_inline_size <= 4) {
9410                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9411                }
9412                let inner_offset;
9413                let mut inner_depth = depth.clone();
9414                if inlined {
9415                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9416                    inner_offset = next_offset;
9417                } else {
9418                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9419                    inner_depth.increment()?;
9420                }
9421                let val_ref = self
9422                    .name
9423                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9424                fidl::decode!(
9425                    fidl::encoding::BoundedString<100>,
9426                    D,
9427                    val_ref,
9428                    decoder,
9429                    inner_offset,
9430                    inner_depth
9431                )?;
9432                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9433                {
9434                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9435                }
9436                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9437                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9438                }
9439            }
9440
9441            next_offset += envelope_size;
9442            _next_ordinal_to_read += 1;
9443            if next_offset >= end_offset {
9444                return Ok(());
9445            }
9446
9447            // Decode unknown envelopes for gaps in ordinals.
9448            while _next_ordinal_to_read < 2 {
9449                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9450                _next_ordinal_to_read += 1;
9451                next_offset += envelope_size;
9452            }
9453
9454            let next_out_of_line = decoder.next_out_of_line();
9455            let handles_before = decoder.remaining_handles();
9456            if let Some((inlined, num_bytes, num_handles)) =
9457                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9458            {
9459                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9460                if inlined != (member_inline_size <= 4) {
9461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9462                }
9463                let inner_offset;
9464                let mut inner_depth = depth.clone();
9465                if inlined {
9466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9467                    inner_offset = next_offset;
9468                } else {
9469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9470                    inner_depth.increment()?;
9471                }
9472                let val_ref = self.source_path.get_or_insert_with(|| {
9473                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
9474                });
9475                fidl::decode!(
9476                    fidl::encoding::BoundedString<1024>,
9477                    D,
9478                    val_ref,
9479                    decoder,
9480                    inner_offset,
9481                    inner_depth
9482                )?;
9483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9484                {
9485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9486                }
9487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9489                }
9490            }
9491
9492            next_offset += envelope_size;
9493            _next_ordinal_to_read += 1;
9494            if next_offset >= end_offset {
9495                return Ok(());
9496            }
9497
9498            // Decode unknown envelopes for gaps in ordinals.
9499            while _next_ordinal_to_read < 3 {
9500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9501                _next_ordinal_to_read += 1;
9502                next_offset += envelope_size;
9503            }
9504
9505            let next_out_of_line = decoder.next_out_of_line();
9506            let handles_before = decoder.remaining_handles();
9507            if let Some((inlined, num_bytes, num_handles)) =
9508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9509            {
9510                let member_inline_size =
9511                    <fidl_fuchsia_io_common::Operations as fidl::encoding::TypeMarker>::inline_size(
9512                        decoder.context,
9513                    );
9514                if inlined != (member_inline_size <= 4) {
9515                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9516                }
9517                let inner_offset;
9518                let mut inner_depth = depth.clone();
9519                if inlined {
9520                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9521                    inner_offset = next_offset;
9522                } else {
9523                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9524                    inner_depth.increment()?;
9525                }
9526                let val_ref = self
9527                    .rights
9528                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_io_common::Operations, D));
9529                fidl::decode!(
9530                    fidl_fuchsia_io_common::Operations,
9531                    D,
9532                    val_ref,
9533                    decoder,
9534                    inner_offset,
9535                    inner_depth
9536                )?;
9537                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9538                {
9539                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9540                }
9541                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9542                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9543                }
9544            }
9545
9546            next_offset += envelope_size;
9547
9548            // Decode the remaining unknown envelopes.
9549            while next_offset < end_offset {
9550                _next_ordinal_to_read += 1;
9551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9552                next_offset += envelope_size;
9553            }
9554
9555            Ok(())
9556        }
9557    }
9558
9559    impl Environment {
9560        #[inline(always)]
9561        fn max_ordinal_present(&self) -> u64 {
9562            if let Some(_) = self.stop_timeout_ms {
9563                return 6;
9564            }
9565            if let Some(_) = self.debug_capabilities {
9566                return 5;
9567            }
9568            if let Some(_) = self.resolvers {
9569                return 4;
9570            }
9571            if let Some(_) = self.runners {
9572                return 3;
9573            }
9574            if let Some(_) = self.extends {
9575                return 2;
9576            }
9577            if let Some(_) = self.name {
9578                return 1;
9579            }
9580            0
9581        }
9582    }
9583
9584    impl fidl::encoding::ValueTypeMarker for Environment {
9585        type Borrowed<'a> = &'a Self;
9586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9587            value
9588        }
9589    }
9590
9591    unsafe impl fidl::encoding::TypeMarker for Environment {
9592        type Owned = Self;
9593
9594        #[inline(always)]
9595        fn inline_align(_context: fidl::encoding::Context) -> usize {
9596            8
9597        }
9598
9599        #[inline(always)]
9600        fn inline_size(_context: fidl::encoding::Context) -> usize {
9601            16
9602        }
9603    }
9604
9605    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
9606        for &Environment
9607    {
9608        unsafe fn encode(
9609            self,
9610            encoder: &mut fidl::encoding::Encoder<'_, D>,
9611            offset: usize,
9612            mut depth: fidl::encoding::Depth,
9613        ) -> fidl::Result<()> {
9614            encoder.debug_check_bounds::<Environment>(offset);
9615            // Vector header
9616            let max_ordinal: u64 = self.max_ordinal_present();
9617            encoder.write_num(max_ordinal, offset);
9618            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9619            // Calling encoder.out_of_line_offset(0) is not allowed.
9620            if max_ordinal == 0 {
9621                return Ok(());
9622            }
9623            depth.increment()?;
9624            let envelope_size = 8;
9625            let bytes_len = max_ordinal as usize * envelope_size;
9626            #[allow(unused_variables)]
9627            let offset = encoder.out_of_line_offset(bytes_len);
9628            let mut _prev_end_offset: usize = 0;
9629            if 1 > max_ordinal {
9630                return Ok(());
9631            }
9632
9633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9634            // are envelope_size bytes.
9635            let cur_offset: usize = (1 - 1) * envelope_size;
9636
9637            // Zero reserved fields.
9638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9639
9640            // Safety:
9641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9643            //   envelope_size bytes, there is always sufficient room.
9644            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9645                self.name.as_ref().map(
9646                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9647                ),
9648                encoder,
9649                offset + cur_offset,
9650                depth,
9651            )?;
9652
9653            _prev_end_offset = cur_offset + envelope_size;
9654            if 2 > max_ordinal {
9655                return Ok(());
9656            }
9657
9658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9659            // are envelope_size bytes.
9660            let cur_offset: usize = (2 - 1) * envelope_size;
9661
9662            // Zero reserved fields.
9663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9664
9665            // Safety:
9666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9668            //   envelope_size bytes, there is always sufficient room.
9669            fidl::encoding::encode_in_envelope_optional::<EnvironmentExtends, D>(
9670                self.extends
9671                    .as_ref()
9672                    .map(<EnvironmentExtends as fidl::encoding::ValueTypeMarker>::borrow),
9673                encoder,
9674                offset + cur_offset,
9675                depth,
9676            )?;
9677
9678            _prev_end_offset = cur_offset + envelope_size;
9679            if 3 > max_ordinal {
9680                return Ok(());
9681            }
9682
9683            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9684            // are envelope_size bytes.
9685            let cur_offset: usize = (3 - 1) * envelope_size;
9686
9687            // Zero reserved fields.
9688            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9689
9690            // Safety:
9691            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9692            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9693            //   envelope_size bytes, there is always sufficient room.
9694            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<RunnerRegistration>, D>(
9695            self.runners.as_ref().map(<fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9696            encoder, offset + cur_offset, depth
9697        )?;
9698
9699            _prev_end_offset = cur_offset + envelope_size;
9700            if 4 > max_ordinal {
9701                return Ok(());
9702            }
9703
9704            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9705            // are envelope_size bytes.
9706            let cur_offset: usize = (4 - 1) * envelope_size;
9707
9708            // Zero reserved fields.
9709            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9710
9711            // Safety:
9712            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9713            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9714            //   envelope_size bytes, there is always sufficient room.
9715            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ResolverRegistration>, D>(
9716            self.resolvers.as_ref().map(<fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9717            encoder, offset + cur_offset, depth
9718        )?;
9719
9720            _prev_end_offset = cur_offset + envelope_size;
9721            if 5 > max_ordinal {
9722                return Ok(());
9723            }
9724
9725            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9726            // are envelope_size bytes.
9727            let cur_offset: usize = (5 - 1) * envelope_size;
9728
9729            // Zero reserved fields.
9730            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9731
9732            // Safety:
9733            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9734            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9735            //   envelope_size bytes, there is always sufficient room.
9736            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DebugRegistration>, D>(
9737            self.debug_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9738            encoder, offset + cur_offset, depth
9739        )?;
9740
9741            _prev_end_offset = cur_offset + envelope_size;
9742            if 6 > max_ordinal {
9743                return Ok(());
9744            }
9745
9746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9747            // are envelope_size bytes.
9748            let cur_offset: usize = (6 - 1) * envelope_size;
9749
9750            // Zero reserved fields.
9751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9752
9753            // Safety:
9754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9756            //   envelope_size bytes, there is always sufficient room.
9757            fidl::encoding::encode_in_envelope_optional::<u32, D>(
9758                self.stop_timeout_ms.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9759                encoder,
9760                offset + cur_offset,
9761                depth,
9762            )?;
9763
9764            _prev_end_offset = cur_offset + envelope_size;
9765
9766            Ok(())
9767        }
9768    }
9769
9770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
9771        #[inline(always)]
9772        fn new_empty() -> Self {
9773            Self::default()
9774        }
9775
9776        unsafe fn decode(
9777            &mut self,
9778            decoder: &mut fidl::encoding::Decoder<'_, D>,
9779            offset: usize,
9780            mut depth: fidl::encoding::Depth,
9781        ) -> fidl::Result<()> {
9782            decoder.debug_check_bounds::<Self>(offset);
9783            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9784                None => return Err(fidl::Error::NotNullable),
9785                Some(len) => len,
9786            };
9787            // Calling decoder.out_of_line_offset(0) is not allowed.
9788            if len == 0 {
9789                return Ok(());
9790            };
9791            depth.increment()?;
9792            let envelope_size = 8;
9793            let bytes_len = len * envelope_size;
9794            let offset = decoder.out_of_line_offset(bytes_len)?;
9795            // Decode the envelope for each type.
9796            let mut _next_ordinal_to_read = 0;
9797            let mut next_offset = offset;
9798            let end_offset = offset + bytes_len;
9799            _next_ordinal_to_read += 1;
9800            if next_offset >= end_offset {
9801                return Ok(());
9802            }
9803
9804            // Decode unknown envelopes for gaps in ordinals.
9805            while _next_ordinal_to_read < 1 {
9806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9807                _next_ordinal_to_read += 1;
9808                next_offset += envelope_size;
9809            }
9810
9811            let next_out_of_line = decoder.next_out_of_line();
9812            let handles_before = decoder.remaining_handles();
9813            if let Some((inlined, num_bytes, num_handles)) =
9814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9815            {
9816                let member_inline_size =
9817                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9818                        decoder.context,
9819                    );
9820                if inlined != (member_inline_size <= 4) {
9821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9822                }
9823                let inner_offset;
9824                let mut inner_depth = depth.clone();
9825                if inlined {
9826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9827                    inner_offset = next_offset;
9828                } else {
9829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9830                    inner_depth.increment()?;
9831                }
9832                let val_ref = self
9833                    .name
9834                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9835                fidl::decode!(
9836                    fidl::encoding::BoundedString<100>,
9837                    D,
9838                    val_ref,
9839                    decoder,
9840                    inner_offset,
9841                    inner_depth
9842                )?;
9843                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9844                {
9845                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9846                }
9847                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9848                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9849                }
9850            }
9851
9852            next_offset += envelope_size;
9853            _next_ordinal_to_read += 1;
9854            if next_offset >= end_offset {
9855                return Ok(());
9856            }
9857
9858            // Decode unknown envelopes for gaps in ordinals.
9859            while _next_ordinal_to_read < 2 {
9860                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9861                _next_ordinal_to_read += 1;
9862                next_offset += envelope_size;
9863            }
9864
9865            let next_out_of_line = decoder.next_out_of_line();
9866            let handles_before = decoder.remaining_handles();
9867            if let Some((inlined, num_bytes, num_handles)) =
9868                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9869            {
9870                let member_inline_size =
9871                    <EnvironmentExtends as fidl::encoding::TypeMarker>::inline_size(
9872                        decoder.context,
9873                    );
9874                if inlined != (member_inline_size <= 4) {
9875                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9876                }
9877                let inner_offset;
9878                let mut inner_depth = depth.clone();
9879                if inlined {
9880                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9881                    inner_offset = next_offset;
9882                } else {
9883                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9884                    inner_depth.increment()?;
9885                }
9886                let val_ref =
9887                    self.extends.get_or_insert_with(|| fidl::new_empty!(EnvironmentExtends, D));
9888                fidl::decode!(EnvironmentExtends, D, val_ref, decoder, inner_offset, inner_depth)?;
9889                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9890                {
9891                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9892                }
9893                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9894                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9895                }
9896            }
9897
9898            next_offset += envelope_size;
9899            _next_ordinal_to_read += 1;
9900            if next_offset >= end_offset {
9901                return Ok(());
9902            }
9903
9904            // Decode unknown envelopes for gaps in ordinals.
9905            while _next_ordinal_to_read < 3 {
9906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9907                _next_ordinal_to_read += 1;
9908                next_offset += envelope_size;
9909            }
9910
9911            let next_out_of_line = decoder.next_out_of_line();
9912            let handles_before = decoder.remaining_handles();
9913            if let Some((inlined, num_bytes, num_handles)) =
9914                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9915            {
9916                let member_inline_size = <fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9917                if inlined != (member_inline_size <= 4) {
9918                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9919                }
9920                let inner_offset;
9921                let mut inner_depth = depth.clone();
9922                if inlined {
9923                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9924                    inner_offset = next_offset;
9925                } else {
9926                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9927                    inner_depth.increment()?;
9928                }
9929                let val_ref = self.runners.get_or_insert_with(|| {
9930                    fidl::new_empty!(fidl::encoding::UnboundedVector<RunnerRegistration>, D)
9931                });
9932                fidl::decode!(
9933                    fidl::encoding::UnboundedVector<RunnerRegistration>,
9934                    D,
9935                    val_ref,
9936                    decoder,
9937                    inner_offset,
9938                    inner_depth
9939                )?;
9940                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9941                {
9942                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9943                }
9944                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9945                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9946                }
9947            }
9948
9949            next_offset += envelope_size;
9950            _next_ordinal_to_read += 1;
9951            if next_offset >= end_offset {
9952                return Ok(());
9953            }
9954
9955            // Decode unknown envelopes for gaps in ordinals.
9956            while _next_ordinal_to_read < 4 {
9957                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9958                _next_ordinal_to_read += 1;
9959                next_offset += envelope_size;
9960            }
9961
9962            let next_out_of_line = decoder.next_out_of_line();
9963            let handles_before = decoder.remaining_handles();
9964            if let Some((inlined, num_bytes, num_handles)) =
9965                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9966            {
9967                let member_inline_size = <fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9968                if inlined != (member_inline_size <= 4) {
9969                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9970                }
9971                let inner_offset;
9972                let mut inner_depth = depth.clone();
9973                if inlined {
9974                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9975                    inner_offset = next_offset;
9976                } else {
9977                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9978                    inner_depth.increment()?;
9979                }
9980                let val_ref = self.resolvers.get_or_insert_with(|| {
9981                    fidl::new_empty!(fidl::encoding::UnboundedVector<ResolverRegistration>, D)
9982                });
9983                fidl::decode!(
9984                    fidl::encoding::UnboundedVector<ResolverRegistration>,
9985                    D,
9986                    val_ref,
9987                    decoder,
9988                    inner_offset,
9989                    inner_depth
9990                )?;
9991                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9992                {
9993                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9994                }
9995                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9996                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9997                }
9998            }
9999
10000            next_offset += envelope_size;
10001            _next_ordinal_to_read += 1;
10002            if next_offset >= end_offset {
10003                return Ok(());
10004            }
10005
10006            // Decode unknown envelopes for gaps in ordinals.
10007            while _next_ordinal_to_read < 5 {
10008                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10009                _next_ordinal_to_read += 1;
10010                next_offset += envelope_size;
10011            }
10012
10013            let next_out_of_line = decoder.next_out_of_line();
10014            let handles_before = decoder.remaining_handles();
10015            if let Some((inlined, num_bytes, num_handles)) =
10016                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10017            {
10018                let member_inline_size = <fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10019                if inlined != (member_inline_size <= 4) {
10020                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10021                }
10022                let inner_offset;
10023                let mut inner_depth = depth.clone();
10024                if inlined {
10025                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10026                    inner_offset = next_offset;
10027                } else {
10028                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10029                    inner_depth.increment()?;
10030                }
10031                let val_ref = self.debug_capabilities.get_or_insert_with(|| {
10032                    fidl::new_empty!(fidl::encoding::UnboundedVector<DebugRegistration>, D)
10033                });
10034                fidl::decode!(
10035                    fidl::encoding::UnboundedVector<DebugRegistration>,
10036                    D,
10037                    val_ref,
10038                    decoder,
10039                    inner_offset,
10040                    inner_depth
10041                )?;
10042                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10043                {
10044                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10045                }
10046                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10047                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10048                }
10049            }
10050
10051            next_offset += envelope_size;
10052            _next_ordinal_to_read += 1;
10053            if next_offset >= end_offset {
10054                return Ok(());
10055            }
10056
10057            // Decode unknown envelopes for gaps in ordinals.
10058            while _next_ordinal_to_read < 6 {
10059                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10060                _next_ordinal_to_read += 1;
10061                next_offset += envelope_size;
10062            }
10063
10064            let next_out_of_line = decoder.next_out_of_line();
10065            let handles_before = decoder.remaining_handles();
10066            if let Some((inlined, num_bytes, num_handles)) =
10067                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10068            {
10069                let member_inline_size =
10070                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10071                if inlined != (member_inline_size <= 4) {
10072                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10073                }
10074                let inner_offset;
10075                let mut inner_depth = depth.clone();
10076                if inlined {
10077                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10078                    inner_offset = next_offset;
10079                } else {
10080                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10081                    inner_depth.increment()?;
10082                }
10083                let val_ref = self.stop_timeout_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
10084                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
10085                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10086                {
10087                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10088                }
10089                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10090                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10091                }
10092            }
10093
10094            next_offset += envelope_size;
10095
10096            // Decode the remaining unknown envelopes.
10097            while next_offset < end_offset {
10098                _next_ordinal_to_read += 1;
10099                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10100                next_offset += envelope_size;
10101            }
10102
10103            Ok(())
10104        }
10105    }
10106
10107    impl EventStream {
10108        #[inline(always)]
10109        fn max_ordinal_present(&self) -> u64 {
10110            if let Some(_) = self.name {
10111                return 1;
10112            }
10113            0
10114        }
10115    }
10116
10117    impl fidl::encoding::ValueTypeMarker for EventStream {
10118        type Borrowed<'a> = &'a Self;
10119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10120            value
10121        }
10122    }
10123
10124    unsafe impl fidl::encoding::TypeMarker for EventStream {
10125        type Owned = Self;
10126
10127        #[inline(always)]
10128        fn inline_align(_context: fidl::encoding::Context) -> usize {
10129            8
10130        }
10131
10132        #[inline(always)]
10133        fn inline_size(_context: fidl::encoding::Context) -> usize {
10134            16
10135        }
10136    }
10137
10138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventStream, D>
10139        for &EventStream
10140    {
10141        unsafe fn encode(
10142            self,
10143            encoder: &mut fidl::encoding::Encoder<'_, D>,
10144            offset: usize,
10145            mut depth: fidl::encoding::Depth,
10146        ) -> fidl::Result<()> {
10147            encoder.debug_check_bounds::<EventStream>(offset);
10148            // Vector header
10149            let max_ordinal: u64 = self.max_ordinal_present();
10150            encoder.write_num(max_ordinal, offset);
10151            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10152            // Calling encoder.out_of_line_offset(0) is not allowed.
10153            if max_ordinal == 0 {
10154                return Ok(());
10155            }
10156            depth.increment()?;
10157            let envelope_size = 8;
10158            let bytes_len = max_ordinal as usize * envelope_size;
10159            #[allow(unused_variables)]
10160            let offset = encoder.out_of_line_offset(bytes_len);
10161            let mut _prev_end_offset: usize = 0;
10162            if 1 > max_ordinal {
10163                return Ok(());
10164            }
10165
10166            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10167            // are envelope_size bytes.
10168            let cur_offset: usize = (1 - 1) * envelope_size;
10169
10170            // Zero reserved fields.
10171            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10172
10173            // Safety:
10174            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10175            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10176            //   envelope_size bytes, there is always sufficient room.
10177            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10178                self.name.as_ref().map(
10179                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10180                ),
10181                encoder,
10182                offset + cur_offset,
10183                depth,
10184            )?;
10185
10186            _prev_end_offset = cur_offset + envelope_size;
10187
10188            Ok(())
10189        }
10190    }
10191
10192    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventStream {
10193        #[inline(always)]
10194        fn new_empty() -> Self {
10195            Self::default()
10196        }
10197
10198        unsafe fn decode(
10199            &mut self,
10200            decoder: &mut fidl::encoding::Decoder<'_, D>,
10201            offset: usize,
10202            mut depth: fidl::encoding::Depth,
10203        ) -> fidl::Result<()> {
10204            decoder.debug_check_bounds::<Self>(offset);
10205            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10206                None => return Err(fidl::Error::NotNullable),
10207                Some(len) => len,
10208            };
10209            // Calling decoder.out_of_line_offset(0) is not allowed.
10210            if len == 0 {
10211                return Ok(());
10212            };
10213            depth.increment()?;
10214            let envelope_size = 8;
10215            let bytes_len = len * envelope_size;
10216            let offset = decoder.out_of_line_offset(bytes_len)?;
10217            // Decode the envelope for each type.
10218            let mut _next_ordinal_to_read = 0;
10219            let mut next_offset = offset;
10220            let end_offset = offset + bytes_len;
10221            _next_ordinal_to_read += 1;
10222            if next_offset >= end_offset {
10223                return Ok(());
10224            }
10225
10226            // Decode unknown envelopes for gaps in ordinals.
10227            while _next_ordinal_to_read < 1 {
10228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10229                _next_ordinal_to_read += 1;
10230                next_offset += envelope_size;
10231            }
10232
10233            let next_out_of_line = decoder.next_out_of_line();
10234            let handles_before = decoder.remaining_handles();
10235            if let Some((inlined, num_bytes, num_handles)) =
10236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10237            {
10238                let member_inline_size =
10239                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10240                        decoder.context,
10241                    );
10242                if inlined != (member_inline_size <= 4) {
10243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10244                }
10245                let inner_offset;
10246                let mut inner_depth = depth.clone();
10247                if inlined {
10248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10249                    inner_offset = next_offset;
10250                } else {
10251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10252                    inner_depth.increment()?;
10253                }
10254                let val_ref = self
10255                    .name
10256                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10257                fidl::decode!(
10258                    fidl::encoding::BoundedString<100>,
10259                    D,
10260                    val_ref,
10261                    decoder,
10262                    inner_offset,
10263                    inner_depth
10264                )?;
10265                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10266                {
10267                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10268                }
10269                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10270                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10271                }
10272            }
10273
10274            next_offset += envelope_size;
10275
10276            // Decode the remaining unknown envelopes.
10277            while next_offset < end_offset {
10278                _next_ordinal_to_read += 1;
10279                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10280                next_offset += envelope_size;
10281            }
10282
10283            Ok(())
10284        }
10285    }
10286
10287    impl EventSubscription {
10288        #[inline(always)]
10289        fn max_ordinal_present(&self) -> u64 {
10290            if let Some(_) = self.event_name {
10291                return 1;
10292            }
10293            0
10294        }
10295    }
10296
10297    impl fidl::encoding::ValueTypeMarker for EventSubscription {
10298        type Borrowed<'a> = &'a Self;
10299        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10300            value
10301        }
10302    }
10303
10304    unsafe impl fidl::encoding::TypeMarker for EventSubscription {
10305        type Owned = Self;
10306
10307        #[inline(always)]
10308        fn inline_align(_context: fidl::encoding::Context) -> usize {
10309            8
10310        }
10311
10312        #[inline(always)]
10313        fn inline_size(_context: fidl::encoding::Context) -> usize {
10314            16
10315        }
10316    }
10317
10318    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventSubscription, D>
10319        for &EventSubscription
10320    {
10321        unsafe fn encode(
10322            self,
10323            encoder: &mut fidl::encoding::Encoder<'_, D>,
10324            offset: usize,
10325            mut depth: fidl::encoding::Depth,
10326        ) -> fidl::Result<()> {
10327            encoder.debug_check_bounds::<EventSubscription>(offset);
10328            // Vector header
10329            let max_ordinal: u64 = self.max_ordinal_present();
10330            encoder.write_num(max_ordinal, offset);
10331            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10332            // Calling encoder.out_of_line_offset(0) is not allowed.
10333            if max_ordinal == 0 {
10334                return Ok(());
10335            }
10336            depth.increment()?;
10337            let envelope_size = 8;
10338            let bytes_len = max_ordinal as usize * envelope_size;
10339            #[allow(unused_variables)]
10340            let offset = encoder.out_of_line_offset(bytes_len);
10341            let mut _prev_end_offset: usize = 0;
10342            if 1 > max_ordinal {
10343                return Ok(());
10344            }
10345
10346            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10347            // are envelope_size bytes.
10348            let cur_offset: usize = (1 - 1) * envelope_size;
10349
10350            // Zero reserved fields.
10351            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10352
10353            // Safety:
10354            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10355            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10356            //   envelope_size bytes, there is always sufficient room.
10357            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10358                self.event_name.as_ref().map(
10359                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10360                ),
10361                encoder,
10362                offset + cur_offset,
10363                depth,
10364            )?;
10365
10366            _prev_end_offset = cur_offset + envelope_size;
10367
10368            Ok(())
10369        }
10370    }
10371
10372    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventSubscription {
10373        #[inline(always)]
10374        fn new_empty() -> Self {
10375            Self::default()
10376        }
10377
10378        unsafe fn decode(
10379            &mut self,
10380            decoder: &mut fidl::encoding::Decoder<'_, D>,
10381            offset: usize,
10382            mut depth: fidl::encoding::Depth,
10383        ) -> fidl::Result<()> {
10384            decoder.debug_check_bounds::<Self>(offset);
10385            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10386                None => return Err(fidl::Error::NotNullable),
10387                Some(len) => len,
10388            };
10389            // Calling decoder.out_of_line_offset(0) is not allowed.
10390            if len == 0 {
10391                return Ok(());
10392            };
10393            depth.increment()?;
10394            let envelope_size = 8;
10395            let bytes_len = len * envelope_size;
10396            let offset = decoder.out_of_line_offset(bytes_len)?;
10397            // Decode the envelope for each type.
10398            let mut _next_ordinal_to_read = 0;
10399            let mut next_offset = offset;
10400            let end_offset = offset + bytes_len;
10401            _next_ordinal_to_read += 1;
10402            if next_offset >= end_offset {
10403                return Ok(());
10404            }
10405
10406            // Decode unknown envelopes for gaps in ordinals.
10407            while _next_ordinal_to_read < 1 {
10408                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10409                _next_ordinal_to_read += 1;
10410                next_offset += envelope_size;
10411            }
10412
10413            let next_out_of_line = decoder.next_out_of_line();
10414            let handles_before = decoder.remaining_handles();
10415            if let Some((inlined, num_bytes, num_handles)) =
10416                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10417            {
10418                let member_inline_size =
10419                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10420                        decoder.context,
10421                    );
10422                if inlined != (member_inline_size <= 4) {
10423                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10424                }
10425                let inner_offset;
10426                let mut inner_depth = depth.clone();
10427                if inlined {
10428                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10429                    inner_offset = next_offset;
10430                } else {
10431                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10432                    inner_depth.increment()?;
10433                }
10434                let val_ref = self
10435                    .event_name
10436                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10437                fidl::decode!(
10438                    fidl::encoding::BoundedString<100>,
10439                    D,
10440                    val_ref,
10441                    decoder,
10442                    inner_offset,
10443                    inner_depth
10444                )?;
10445                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10446                {
10447                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10448                }
10449                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10450                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10451                }
10452            }
10453
10454            next_offset += envelope_size;
10455
10456            // Decode the remaining unknown envelopes.
10457            while next_offset < end_offset {
10458                _next_ordinal_to_read += 1;
10459                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10460                next_offset += envelope_size;
10461            }
10462
10463            Ok(())
10464        }
10465    }
10466
10467    impl ExposeConfiguration {
10468        #[inline(always)]
10469        fn max_ordinal_present(&self) -> u64 {
10470            if let Some(_) = self.source_dictionary {
10471                return 6;
10472            }
10473            if let Some(_) = self.availability {
10474                return 5;
10475            }
10476            if let Some(_) = self.target_name {
10477                return 4;
10478            }
10479            if let Some(_) = self.target {
10480                return 3;
10481            }
10482            if let Some(_) = self.source_name {
10483                return 2;
10484            }
10485            if let Some(_) = self.source {
10486                return 1;
10487            }
10488            0
10489        }
10490    }
10491
10492    impl fidl::encoding::ValueTypeMarker for ExposeConfiguration {
10493        type Borrowed<'a> = &'a Self;
10494        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10495            value
10496        }
10497    }
10498
10499    unsafe impl fidl::encoding::TypeMarker for ExposeConfiguration {
10500        type Owned = Self;
10501
10502        #[inline(always)]
10503        fn inline_align(_context: fidl::encoding::Context) -> usize {
10504            8
10505        }
10506
10507        #[inline(always)]
10508        fn inline_size(_context: fidl::encoding::Context) -> usize {
10509            16
10510        }
10511    }
10512
10513    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeConfiguration, D>
10514        for &ExposeConfiguration
10515    {
10516        unsafe fn encode(
10517            self,
10518            encoder: &mut fidl::encoding::Encoder<'_, D>,
10519            offset: usize,
10520            mut depth: fidl::encoding::Depth,
10521        ) -> fidl::Result<()> {
10522            encoder.debug_check_bounds::<ExposeConfiguration>(offset);
10523            // Vector header
10524            let max_ordinal: u64 = self.max_ordinal_present();
10525            encoder.write_num(max_ordinal, offset);
10526            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10527            // Calling encoder.out_of_line_offset(0) is not allowed.
10528            if max_ordinal == 0 {
10529                return Ok(());
10530            }
10531            depth.increment()?;
10532            let envelope_size = 8;
10533            let bytes_len = max_ordinal as usize * envelope_size;
10534            #[allow(unused_variables)]
10535            let offset = encoder.out_of_line_offset(bytes_len);
10536            let mut _prev_end_offset: usize = 0;
10537            if 1 > max_ordinal {
10538                return Ok(());
10539            }
10540
10541            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10542            // are envelope_size bytes.
10543            let cur_offset: usize = (1 - 1) * envelope_size;
10544
10545            // Zero reserved fields.
10546            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10547
10548            // Safety:
10549            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10550            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10551            //   envelope_size bytes, there is always sufficient room.
10552            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10553                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10554                encoder,
10555                offset + cur_offset,
10556                depth,
10557            )?;
10558
10559            _prev_end_offset = cur_offset + envelope_size;
10560            if 2 > max_ordinal {
10561                return Ok(());
10562            }
10563
10564            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10565            // are envelope_size bytes.
10566            let cur_offset: usize = (2 - 1) * envelope_size;
10567
10568            // Zero reserved fields.
10569            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10570
10571            // Safety:
10572            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10573            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10574            //   envelope_size bytes, there is always sufficient room.
10575            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10576                self.source_name.as_ref().map(
10577                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10578                ),
10579                encoder,
10580                offset + cur_offset,
10581                depth,
10582            )?;
10583
10584            _prev_end_offset = cur_offset + envelope_size;
10585            if 3 > max_ordinal {
10586                return Ok(());
10587            }
10588
10589            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10590            // are envelope_size bytes.
10591            let cur_offset: usize = (3 - 1) * envelope_size;
10592
10593            // Zero reserved fields.
10594            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10595
10596            // Safety:
10597            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10598            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10599            //   envelope_size bytes, there is always sufficient room.
10600            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10601                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10602                encoder,
10603                offset + cur_offset,
10604                depth,
10605            )?;
10606
10607            _prev_end_offset = cur_offset + envelope_size;
10608            if 4 > max_ordinal {
10609                return Ok(());
10610            }
10611
10612            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10613            // are envelope_size bytes.
10614            let cur_offset: usize = (4 - 1) * envelope_size;
10615
10616            // Zero reserved fields.
10617            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10618
10619            // Safety:
10620            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10621            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10622            //   envelope_size bytes, there is always sufficient room.
10623            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10624                self.target_name.as_ref().map(
10625                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10626                ),
10627                encoder,
10628                offset + cur_offset,
10629                depth,
10630            )?;
10631
10632            _prev_end_offset = cur_offset + envelope_size;
10633            if 5 > max_ordinal {
10634                return Ok(());
10635            }
10636
10637            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10638            // are envelope_size bytes.
10639            let cur_offset: usize = (5 - 1) * envelope_size;
10640
10641            // Zero reserved fields.
10642            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10643
10644            // Safety:
10645            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10646            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10647            //   envelope_size bytes, there is always sufficient room.
10648            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
10649                self.availability
10650                    .as_ref()
10651                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
10652                encoder,
10653                offset + cur_offset,
10654                depth,
10655            )?;
10656
10657            _prev_end_offset = cur_offset + envelope_size;
10658            if 6 > max_ordinal {
10659                return Ok(());
10660            }
10661
10662            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10663            // are envelope_size bytes.
10664            let cur_offset: usize = (6 - 1) * envelope_size;
10665
10666            // Zero reserved fields.
10667            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10668
10669            // Safety:
10670            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10671            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10672            //   envelope_size bytes, there is always sufficient room.
10673            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
10674            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
10675            encoder, offset + cur_offset, depth
10676        )?;
10677
10678            _prev_end_offset = cur_offset + envelope_size;
10679
10680            Ok(())
10681        }
10682    }
10683
10684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeConfiguration {
10685        #[inline(always)]
10686        fn new_empty() -> Self {
10687            Self::default()
10688        }
10689
10690        unsafe fn decode(
10691            &mut self,
10692            decoder: &mut fidl::encoding::Decoder<'_, D>,
10693            offset: usize,
10694            mut depth: fidl::encoding::Depth,
10695        ) -> fidl::Result<()> {
10696            decoder.debug_check_bounds::<Self>(offset);
10697            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10698                None => return Err(fidl::Error::NotNullable),
10699                Some(len) => len,
10700            };
10701            // Calling decoder.out_of_line_offset(0) is not allowed.
10702            if len == 0 {
10703                return Ok(());
10704            };
10705            depth.increment()?;
10706            let envelope_size = 8;
10707            let bytes_len = len * envelope_size;
10708            let offset = decoder.out_of_line_offset(bytes_len)?;
10709            // Decode the envelope for each type.
10710            let mut _next_ordinal_to_read = 0;
10711            let mut next_offset = offset;
10712            let end_offset = offset + bytes_len;
10713            _next_ordinal_to_read += 1;
10714            if next_offset >= end_offset {
10715                return Ok(());
10716            }
10717
10718            // Decode unknown envelopes for gaps in ordinals.
10719            while _next_ordinal_to_read < 1 {
10720                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10721                _next_ordinal_to_read += 1;
10722                next_offset += envelope_size;
10723            }
10724
10725            let next_out_of_line = decoder.next_out_of_line();
10726            let handles_before = decoder.remaining_handles();
10727            if let Some((inlined, num_bytes, num_handles)) =
10728                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10729            {
10730                let member_inline_size =
10731                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10732                if inlined != (member_inline_size <= 4) {
10733                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10734                }
10735                let inner_offset;
10736                let mut inner_depth = depth.clone();
10737                if inlined {
10738                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10739                    inner_offset = next_offset;
10740                } else {
10741                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10742                    inner_depth.increment()?;
10743                }
10744                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10745                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10746                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10747                {
10748                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10749                }
10750                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10751                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10752                }
10753            }
10754
10755            next_offset += envelope_size;
10756            _next_ordinal_to_read += 1;
10757            if next_offset >= end_offset {
10758                return Ok(());
10759            }
10760
10761            // Decode unknown envelopes for gaps in ordinals.
10762            while _next_ordinal_to_read < 2 {
10763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10764                _next_ordinal_to_read += 1;
10765                next_offset += envelope_size;
10766            }
10767
10768            let next_out_of_line = decoder.next_out_of_line();
10769            let handles_before = decoder.remaining_handles();
10770            if let Some((inlined, num_bytes, num_handles)) =
10771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10772            {
10773                let member_inline_size =
10774                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10775                        decoder.context,
10776                    );
10777                if inlined != (member_inline_size <= 4) {
10778                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10779                }
10780                let inner_offset;
10781                let mut inner_depth = depth.clone();
10782                if inlined {
10783                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10784                    inner_offset = next_offset;
10785                } else {
10786                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10787                    inner_depth.increment()?;
10788                }
10789                let val_ref = self
10790                    .source_name
10791                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10792                fidl::decode!(
10793                    fidl::encoding::BoundedString<100>,
10794                    D,
10795                    val_ref,
10796                    decoder,
10797                    inner_offset,
10798                    inner_depth
10799                )?;
10800                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10801                {
10802                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10803                }
10804                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10805                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10806                }
10807            }
10808
10809            next_offset += envelope_size;
10810            _next_ordinal_to_read += 1;
10811            if next_offset >= end_offset {
10812                return Ok(());
10813            }
10814
10815            // Decode unknown envelopes for gaps in ordinals.
10816            while _next_ordinal_to_read < 3 {
10817                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10818                _next_ordinal_to_read += 1;
10819                next_offset += envelope_size;
10820            }
10821
10822            let next_out_of_line = decoder.next_out_of_line();
10823            let handles_before = decoder.remaining_handles();
10824            if let Some((inlined, num_bytes, num_handles)) =
10825                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10826            {
10827                let member_inline_size =
10828                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10829                if inlined != (member_inline_size <= 4) {
10830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10831                }
10832                let inner_offset;
10833                let mut inner_depth = depth.clone();
10834                if inlined {
10835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10836                    inner_offset = next_offset;
10837                } else {
10838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10839                    inner_depth.increment()?;
10840                }
10841                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10842                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10843                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10844                {
10845                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10846                }
10847                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10848                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10849                }
10850            }
10851
10852            next_offset += envelope_size;
10853            _next_ordinal_to_read += 1;
10854            if next_offset >= end_offset {
10855                return Ok(());
10856            }
10857
10858            // Decode unknown envelopes for gaps in ordinals.
10859            while _next_ordinal_to_read < 4 {
10860                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10861                _next_ordinal_to_read += 1;
10862                next_offset += envelope_size;
10863            }
10864
10865            let next_out_of_line = decoder.next_out_of_line();
10866            let handles_before = decoder.remaining_handles();
10867            if let Some((inlined, num_bytes, num_handles)) =
10868                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10869            {
10870                let member_inline_size =
10871                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10872                        decoder.context,
10873                    );
10874                if inlined != (member_inline_size <= 4) {
10875                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10876                }
10877                let inner_offset;
10878                let mut inner_depth = depth.clone();
10879                if inlined {
10880                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10881                    inner_offset = next_offset;
10882                } else {
10883                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10884                    inner_depth.increment()?;
10885                }
10886                let val_ref = self
10887                    .target_name
10888                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10889                fidl::decode!(
10890                    fidl::encoding::BoundedString<100>,
10891                    D,
10892                    val_ref,
10893                    decoder,
10894                    inner_offset,
10895                    inner_depth
10896                )?;
10897                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10898                {
10899                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10900                }
10901                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10902                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10903                }
10904            }
10905
10906            next_offset += envelope_size;
10907            _next_ordinal_to_read += 1;
10908            if next_offset >= end_offset {
10909                return Ok(());
10910            }
10911
10912            // Decode unknown envelopes for gaps in ordinals.
10913            while _next_ordinal_to_read < 5 {
10914                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10915                _next_ordinal_to_read += 1;
10916                next_offset += envelope_size;
10917            }
10918
10919            let next_out_of_line = decoder.next_out_of_line();
10920            let handles_before = decoder.remaining_handles();
10921            if let Some((inlined, num_bytes, num_handles)) =
10922                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10923            {
10924                let member_inline_size =
10925                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10926                if inlined != (member_inline_size <= 4) {
10927                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10928                }
10929                let inner_offset;
10930                let mut inner_depth = depth.clone();
10931                if inlined {
10932                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10933                    inner_offset = next_offset;
10934                } else {
10935                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10936                    inner_depth.increment()?;
10937                }
10938                let val_ref =
10939                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
10940                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
10941                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10942                {
10943                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10944                }
10945                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10946                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10947                }
10948            }
10949
10950            next_offset += envelope_size;
10951            _next_ordinal_to_read += 1;
10952            if next_offset >= end_offset {
10953                return Ok(());
10954            }
10955
10956            // Decode unknown envelopes for gaps in ordinals.
10957            while _next_ordinal_to_read < 6 {
10958                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10959                _next_ordinal_to_read += 1;
10960                next_offset += envelope_size;
10961            }
10962
10963            let next_out_of_line = decoder.next_out_of_line();
10964            let handles_before = decoder.remaining_handles();
10965            if let Some((inlined, num_bytes, num_handles)) =
10966                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10967            {
10968                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10969                if inlined != (member_inline_size <= 4) {
10970                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10971                }
10972                let inner_offset;
10973                let mut inner_depth = depth.clone();
10974                if inlined {
10975                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10976                    inner_offset = next_offset;
10977                } else {
10978                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10979                    inner_depth.increment()?;
10980                }
10981                let val_ref = self.source_dictionary.get_or_insert_with(|| {
10982                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
10983                });
10984                fidl::decode!(
10985                    fidl::encoding::BoundedString<1024>,
10986                    D,
10987                    val_ref,
10988                    decoder,
10989                    inner_offset,
10990                    inner_depth
10991                )?;
10992                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10993                {
10994                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10995                }
10996                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10997                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10998                }
10999            }
11000
11001            next_offset += envelope_size;
11002
11003            // Decode the remaining unknown envelopes.
11004            while next_offset < end_offset {
11005                _next_ordinal_to_read += 1;
11006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11007                next_offset += envelope_size;
11008            }
11009
11010            Ok(())
11011        }
11012    }
11013
11014    impl ExposeDictionary {
11015        #[inline(always)]
11016        fn max_ordinal_present(&self) -> u64 {
11017            if let Some(_) = self.source_dictionary {
11018                return 6;
11019            }
11020            if let Some(_) = self.availability {
11021                return 5;
11022            }
11023            if let Some(_) = self.target_name {
11024                return 4;
11025            }
11026            if let Some(_) = self.target {
11027                return 3;
11028            }
11029            if let Some(_) = self.source_name {
11030                return 2;
11031            }
11032            if let Some(_) = self.source {
11033                return 1;
11034            }
11035            0
11036        }
11037    }
11038
11039    impl fidl::encoding::ValueTypeMarker for ExposeDictionary {
11040        type Borrowed<'a> = &'a Self;
11041        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11042            value
11043        }
11044    }
11045
11046    unsafe impl fidl::encoding::TypeMarker for ExposeDictionary {
11047        type Owned = Self;
11048
11049        #[inline(always)]
11050        fn inline_align(_context: fidl::encoding::Context) -> usize {
11051            8
11052        }
11053
11054        #[inline(always)]
11055        fn inline_size(_context: fidl::encoding::Context) -> usize {
11056            16
11057        }
11058    }
11059
11060    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDictionary, D>
11061        for &ExposeDictionary
11062    {
11063        unsafe fn encode(
11064            self,
11065            encoder: &mut fidl::encoding::Encoder<'_, D>,
11066            offset: usize,
11067            mut depth: fidl::encoding::Depth,
11068        ) -> fidl::Result<()> {
11069            encoder.debug_check_bounds::<ExposeDictionary>(offset);
11070            // Vector header
11071            let max_ordinal: u64 = self.max_ordinal_present();
11072            encoder.write_num(max_ordinal, offset);
11073            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11074            // Calling encoder.out_of_line_offset(0) is not allowed.
11075            if max_ordinal == 0 {
11076                return Ok(());
11077            }
11078            depth.increment()?;
11079            let envelope_size = 8;
11080            let bytes_len = max_ordinal as usize * envelope_size;
11081            #[allow(unused_variables)]
11082            let offset = encoder.out_of_line_offset(bytes_len);
11083            let mut _prev_end_offset: usize = 0;
11084            if 1 > max_ordinal {
11085                return Ok(());
11086            }
11087
11088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11089            // are envelope_size bytes.
11090            let cur_offset: usize = (1 - 1) * envelope_size;
11091
11092            // Zero reserved fields.
11093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11094
11095            // Safety:
11096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11098            //   envelope_size bytes, there is always sufficient room.
11099            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11100                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11101                encoder,
11102                offset + cur_offset,
11103                depth,
11104            )?;
11105
11106            _prev_end_offset = cur_offset + envelope_size;
11107            if 2 > max_ordinal {
11108                return Ok(());
11109            }
11110
11111            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11112            // are envelope_size bytes.
11113            let cur_offset: usize = (2 - 1) * envelope_size;
11114
11115            // Zero reserved fields.
11116            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11117
11118            // Safety:
11119            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11120            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11121            //   envelope_size bytes, there is always sufficient room.
11122            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11123                self.source_name.as_ref().map(
11124                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11125                ),
11126                encoder,
11127                offset + cur_offset,
11128                depth,
11129            )?;
11130
11131            _prev_end_offset = cur_offset + envelope_size;
11132            if 3 > max_ordinal {
11133                return Ok(());
11134            }
11135
11136            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11137            // are envelope_size bytes.
11138            let cur_offset: usize = (3 - 1) * envelope_size;
11139
11140            // Zero reserved fields.
11141            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11142
11143            // Safety:
11144            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11145            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11146            //   envelope_size bytes, there is always sufficient room.
11147            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11148                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11149                encoder,
11150                offset + cur_offset,
11151                depth,
11152            )?;
11153
11154            _prev_end_offset = cur_offset + envelope_size;
11155            if 4 > max_ordinal {
11156                return Ok(());
11157            }
11158
11159            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11160            // are envelope_size bytes.
11161            let cur_offset: usize = (4 - 1) * envelope_size;
11162
11163            // Zero reserved fields.
11164            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11165
11166            // Safety:
11167            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11168            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11169            //   envelope_size bytes, there is always sufficient room.
11170            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11171                self.target_name.as_ref().map(
11172                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11173                ),
11174                encoder,
11175                offset + cur_offset,
11176                depth,
11177            )?;
11178
11179            _prev_end_offset = cur_offset + envelope_size;
11180            if 5 > max_ordinal {
11181                return Ok(());
11182            }
11183
11184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11185            // are envelope_size bytes.
11186            let cur_offset: usize = (5 - 1) * envelope_size;
11187
11188            // Zero reserved fields.
11189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11190
11191            // Safety:
11192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11194            //   envelope_size bytes, there is always sufficient room.
11195            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
11196                self.availability
11197                    .as_ref()
11198                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
11199                encoder,
11200                offset + cur_offset,
11201                depth,
11202            )?;
11203
11204            _prev_end_offset = cur_offset + envelope_size;
11205            if 6 > max_ordinal {
11206                return Ok(());
11207            }
11208
11209            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11210            // are envelope_size bytes.
11211            let cur_offset: usize = (6 - 1) * envelope_size;
11212
11213            // Zero reserved fields.
11214            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11215
11216            // Safety:
11217            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11218            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11219            //   envelope_size bytes, there is always sufficient room.
11220            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11221            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11222            encoder, offset + cur_offset, depth
11223        )?;
11224
11225            _prev_end_offset = cur_offset + envelope_size;
11226
11227            Ok(())
11228        }
11229    }
11230
11231    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDictionary {
11232        #[inline(always)]
11233        fn new_empty() -> Self {
11234            Self::default()
11235        }
11236
11237        unsafe fn decode(
11238            &mut self,
11239            decoder: &mut fidl::encoding::Decoder<'_, D>,
11240            offset: usize,
11241            mut depth: fidl::encoding::Depth,
11242        ) -> fidl::Result<()> {
11243            decoder.debug_check_bounds::<Self>(offset);
11244            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11245                None => return Err(fidl::Error::NotNullable),
11246                Some(len) => len,
11247            };
11248            // Calling decoder.out_of_line_offset(0) is not allowed.
11249            if len == 0 {
11250                return Ok(());
11251            };
11252            depth.increment()?;
11253            let envelope_size = 8;
11254            let bytes_len = len * envelope_size;
11255            let offset = decoder.out_of_line_offset(bytes_len)?;
11256            // Decode the envelope for each type.
11257            let mut _next_ordinal_to_read = 0;
11258            let mut next_offset = offset;
11259            let end_offset = offset + bytes_len;
11260            _next_ordinal_to_read += 1;
11261            if next_offset >= end_offset {
11262                return Ok(());
11263            }
11264
11265            // Decode unknown envelopes for gaps in ordinals.
11266            while _next_ordinal_to_read < 1 {
11267                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11268                _next_ordinal_to_read += 1;
11269                next_offset += envelope_size;
11270            }
11271
11272            let next_out_of_line = decoder.next_out_of_line();
11273            let handles_before = decoder.remaining_handles();
11274            if let Some((inlined, num_bytes, num_handles)) =
11275                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11276            {
11277                let member_inline_size =
11278                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11279                if inlined != (member_inline_size <= 4) {
11280                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11281                }
11282                let inner_offset;
11283                let mut inner_depth = depth.clone();
11284                if inlined {
11285                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11286                    inner_offset = next_offset;
11287                } else {
11288                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11289                    inner_depth.increment()?;
11290                }
11291                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11292                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11293                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11294                {
11295                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11296                }
11297                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11298                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11299                }
11300            }
11301
11302            next_offset += envelope_size;
11303            _next_ordinal_to_read += 1;
11304            if next_offset >= end_offset {
11305                return Ok(());
11306            }
11307
11308            // Decode unknown envelopes for gaps in ordinals.
11309            while _next_ordinal_to_read < 2 {
11310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11311                _next_ordinal_to_read += 1;
11312                next_offset += envelope_size;
11313            }
11314
11315            let next_out_of_line = decoder.next_out_of_line();
11316            let handles_before = decoder.remaining_handles();
11317            if let Some((inlined, num_bytes, num_handles)) =
11318                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11319            {
11320                let member_inline_size =
11321                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11322                        decoder.context,
11323                    );
11324                if inlined != (member_inline_size <= 4) {
11325                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11326                }
11327                let inner_offset;
11328                let mut inner_depth = depth.clone();
11329                if inlined {
11330                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11331                    inner_offset = next_offset;
11332                } else {
11333                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11334                    inner_depth.increment()?;
11335                }
11336                let val_ref = self
11337                    .source_name
11338                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11339                fidl::decode!(
11340                    fidl::encoding::BoundedString<100>,
11341                    D,
11342                    val_ref,
11343                    decoder,
11344                    inner_offset,
11345                    inner_depth
11346                )?;
11347                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11348                {
11349                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11350                }
11351                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11352                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11353                }
11354            }
11355
11356            next_offset += envelope_size;
11357            _next_ordinal_to_read += 1;
11358            if next_offset >= end_offset {
11359                return Ok(());
11360            }
11361
11362            // Decode unknown envelopes for gaps in ordinals.
11363            while _next_ordinal_to_read < 3 {
11364                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11365                _next_ordinal_to_read += 1;
11366                next_offset += envelope_size;
11367            }
11368
11369            let next_out_of_line = decoder.next_out_of_line();
11370            let handles_before = decoder.remaining_handles();
11371            if let Some((inlined, num_bytes, num_handles)) =
11372                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11373            {
11374                let member_inline_size =
11375                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11376                if inlined != (member_inline_size <= 4) {
11377                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11378                }
11379                let inner_offset;
11380                let mut inner_depth = depth.clone();
11381                if inlined {
11382                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11383                    inner_offset = next_offset;
11384                } else {
11385                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11386                    inner_depth.increment()?;
11387                }
11388                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11389                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11390                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11391                {
11392                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11393                }
11394                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11395                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11396                }
11397            }
11398
11399            next_offset += envelope_size;
11400            _next_ordinal_to_read += 1;
11401            if next_offset >= end_offset {
11402                return Ok(());
11403            }
11404
11405            // Decode unknown envelopes for gaps in ordinals.
11406            while _next_ordinal_to_read < 4 {
11407                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11408                _next_ordinal_to_read += 1;
11409                next_offset += envelope_size;
11410            }
11411
11412            let next_out_of_line = decoder.next_out_of_line();
11413            let handles_before = decoder.remaining_handles();
11414            if let Some((inlined, num_bytes, num_handles)) =
11415                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11416            {
11417                let member_inline_size =
11418                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11419                        decoder.context,
11420                    );
11421                if inlined != (member_inline_size <= 4) {
11422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11423                }
11424                let inner_offset;
11425                let mut inner_depth = depth.clone();
11426                if inlined {
11427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11428                    inner_offset = next_offset;
11429                } else {
11430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11431                    inner_depth.increment()?;
11432                }
11433                let val_ref = self
11434                    .target_name
11435                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11436                fidl::decode!(
11437                    fidl::encoding::BoundedString<100>,
11438                    D,
11439                    val_ref,
11440                    decoder,
11441                    inner_offset,
11442                    inner_depth
11443                )?;
11444                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11445                {
11446                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11447                }
11448                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11449                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11450                }
11451            }
11452
11453            next_offset += envelope_size;
11454            _next_ordinal_to_read += 1;
11455            if next_offset >= end_offset {
11456                return Ok(());
11457            }
11458
11459            // Decode unknown envelopes for gaps in ordinals.
11460            while _next_ordinal_to_read < 5 {
11461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11462                _next_ordinal_to_read += 1;
11463                next_offset += envelope_size;
11464            }
11465
11466            let next_out_of_line = decoder.next_out_of_line();
11467            let handles_before = decoder.remaining_handles();
11468            if let Some((inlined, num_bytes, num_handles)) =
11469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11470            {
11471                let member_inline_size =
11472                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11473                if inlined != (member_inline_size <= 4) {
11474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11475                }
11476                let inner_offset;
11477                let mut inner_depth = depth.clone();
11478                if inlined {
11479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11480                    inner_offset = next_offset;
11481                } else {
11482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11483                    inner_depth.increment()?;
11484                }
11485                let val_ref =
11486                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
11487                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
11488                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11489                {
11490                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11491                }
11492                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11493                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11494                }
11495            }
11496
11497            next_offset += envelope_size;
11498            _next_ordinal_to_read += 1;
11499            if next_offset >= end_offset {
11500                return Ok(());
11501            }
11502
11503            // Decode unknown envelopes for gaps in ordinals.
11504            while _next_ordinal_to_read < 6 {
11505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11506                _next_ordinal_to_read += 1;
11507                next_offset += envelope_size;
11508            }
11509
11510            let next_out_of_line = decoder.next_out_of_line();
11511            let handles_before = decoder.remaining_handles();
11512            if let Some((inlined, num_bytes, num_handles)) =
11513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11514            {
11515                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11516                if inlined != (member_inline_size <= 4) {
11517                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11518                }
11519                let inner_offset;
11520                let mut inner_depth = depth.clone();
11521                if inlined {
11522                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11523                    inner_offset = next_offset;
11524                } else {
11525                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11526                    inner_depth.increment()?;
11527                }
11528                let val_ref = self.source_dictionary.get_or_insert_with(|| {
11529                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
11530                });
11531                fidl::decode!(
11532                    fidl::encoding::BoundedString<1024>,
11533                    D,
11534                    val_ref,
11535                    decoder,
11536                    inner_offset,
11537                    inner_depth
11538                )?;
11539                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11540                {
11541                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11542                }
11543                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11544                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11545                }
11546            }
11547
11548            next_offset += envelope_size;
11549
11550            // Decode the remaining unknown envelopes.
11551            while next_offset < end_offset {
11552                _next_ordinal_to_read += 1;
11553                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11554                next_offset += envelope_size;
11555            }
11556
11557            Ok(())
11558        }
11559    }
11560
11561    impl ExposeDirectory {
11562        #[inline(always)]
11563        fn max_ordinal_present(&self) -> u64 {
11564            if let Some(_) = self.source_dictionary {
11565                return 8;
11566            }
11567            if let Some(_) = self.availability {
11568                return 7;
11569            }
11570            if let Some(_) = self.subdir {
11571                return 6;
11572            }
11573            if let Some(_) = self.rights {
11574                return 5;
11575            }
11576            if let Some(_) = self.target_name {
11577                return 4;
11578            }
11579            if let Some(_) = self.target {
11580                return 3;
11581            }
11582            if let Some(_) = self.source_name {
11583                return 2;
11584            }
11585            if let Some(_) = self.source {
11586                return 1;
11587            }
11588            0
11589        }
11590    }
11591
11592    impl fidl::encoding::ValueTypeMarker for ExposeDirectory {
11593        type Borrowed<'a> = &'a Self;
11594        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11595            value
11596        }
11597    }
11598
11599    unsafe impl fidl::encoding::TypeMarker for ExposeDirectory {
11600        type Owned = Self;
11601
11602        #[inline(always)]
11603        fn inline_align(_context: fidl::encoding::Context) -> usize {
11604            8
11605        }
11606
11607        #[inline(always)]
11608        fn inline_size(_context: fidl::encoding::Context) -> usize {
11609            16
11610        }
11611    }
11612
11613    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDirectory, D>
11614        for &ExposeDirectory
11615    {
11616        unsafe fn encode(
11617            self,
11618            encoder: &mut fidl::encoding::Encoder<'_, D>,
11619            offset: usize,
11620            mut depth: fidl::encoding::Depth,
11621        ) -> fidl::Result<()> {
11622            encoder.debug_check_bounds::<ExposeDirectory>(offset);
11623            // Vector header
11624            let max_ordinal: u64 = self.max_ordinal_present();
11625            encoder.write_num(max_ordinal, offset);
11626            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11627            // Calling encoder.out_of_line_offset(0) is not allowed.
11628            if max_ordinal == 0 {
11629                return Ok(());
11630            }
11631            depth.increment()?;
11632            let envelope_size = 8;
11633            let bytes_len = max_ordinal as usize * envelope_size;
11634            #[allow(unused_variables)]
11635            let offset = encoder.out_of_line_offset(bytes_len);
11636            let mut _prev_end_offset: usize = 0;
11637            if 1 > max_ordinal {
11638                return Ok(());
11639            }
11640
11641            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11642            // are envelope_size bytes.
11643            let cur_offset: usize = (1 - 1) * envelope_size;
11644
11645            // Zero reserved fields.
11646            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11647
11648            // Safety:
11649            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11650            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11651            //   envelope_size bytes, there is always sufficient room.
11652            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11653                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11654                encoder,
11655                offset + cur_offset,
11656                depth,
11657            )?;
11658
11659            _prev_end_offset = cur_offset + envelope_size;
11660            if 2 > max_ordinal {
11661                return Ok(());
11662            }
11663
11664            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11665            // are envelope_size bytes.
11666            let cur_offset: usize = (2 - 1) * envelope_size;
11667
11668            // Zero reserved fields.
11669            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11670
11671            // Safety:
11672            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11673            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11674            //   envelope_size bytes, there is always sufficient room.
11675            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11676                self.source_name.as_ref().map(
11677                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11678                ),
11679                encoder,
11680                offset + cur_offset,
11681                depth,
11682            )?;
11683
11684            _prev_end_offset = cur_offset + envelope_size;
11685            if 3 > max_ordinal {
11686                return Ok(());
11687            }
11688
11689            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11690            // are envelope_size bytes.
11691            let cur_offset: usize = (3 - 1) * envelope_size;
11692
11693            // Zero reserved fields.
11694            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11695
11696            // Safety:
11697            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11698            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11699            //   envelope_size bytes, there is always sufficient room.
11700            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11701                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11702                encoder,
11703                offset + cur_offset,
11704                depth,
11705            )?;
11706
11707            _prev_end_offset = cur_offset + envelope_size;
11708            if 4 > max_ordinal {
11709                return Ok(());
11710            }
11711
11712            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11713            // are envelope_size bytes.
11714            let cur_offset: usize = (4 - 1) * envelope_size;
11715
11716            // Zero reserved fields.
11717            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11718
11719            // Safety:
11720            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11721            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11722            //   envelope_size bytes, there is always sufficient room.
11723            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11724                self.target_name.as_ref().map(
11725                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11726                ),
11727                encoder,
11728                offset + cur_offset,
11729                depth,
11730            )?;
11731
11732            _prev_end_offset = cur_offset + envelope_size;
11733            if 5 > max_ordinal {
11734                return Ok(());
11735            }
11736
11737            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11738            // are envelope_size bytes.
11739            let cur_offset: usize = (5 - 1) * envelope_size;
11740
11741            // Zero reserved fields.
11742            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11743
11744            // Safety:
11745            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11746            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11747            //   envelope_size bytes, there is always sufficient room.
11748            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io_common::Operations, D>(
11749                self.rights.as_ref().map(
11750                    <fidl_fuchsia_io_common::Operations as fidl::encoding::ValueTypeMarker>::borrow,
11751                ),
11752                encoder,
11753                offset + cur_offset,
11754                depth,
11755            )?;
11756
11757            _prev_end_offset = cur_offset + envelope_size;
11758            if 6 > max_ordinal {
11759                return Ok(());
11760            }
11761
11762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11763            // are envelope_size bytes.
11764            let cur_offset: usize = (6 - 1) * envelope_size;
11765
11766            // Zero reserved fields.
11767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11768
11769            // Safety:
11770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11772            //   envelope_size bytes, there is always sufficient room.
11773            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11774            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11775            encoder, offset + cur_offset, depth
11776        )?;
11777
11778            _prev_end_offset = cur_offset + envelope_size;
11779            if 7 > max_ordinal {
11780                return Ok(());
11781            }
11782
11783            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11784            // are envelope_size bytes.
11785            let cur_offset: usize = (7 - 1) * envelope_size;
11786
11787            // Zero reserved fields.
11788            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11789
11790            // Safety:
11791            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11792            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11793            //   envelope_size bytes, there is always sufficient room.
11794            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
11795                self.availability
11796                    .as_ref()
11797                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
11798                encoder,
11799                offset + cur_offset,
11800                depth,
11801            )?;
11802
11803            _prev_end_offset = cur_offset + envelope_size;
11804            if 8 > max_ordinal {
11805                return Ok(());
11806            }
11807
11808            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11809            // are envelope_size bytes.
11810            let cur_offset: usize = (8 - 1) * envelope_size;
11811
11812            // Zero reserved fields.
11813            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11814
11815            // Safety:
11816            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11817            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11818            //   envelope_size bytes, there is always sufficient room.
11819            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11820            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11821            encoder, offset + cur_offset, depth
11822        )?;
11823
11824            _prev_end_offset = cur_offset + envelope_size;
11825
11826            Ok(())
11827        }
11828    }
11829
11830    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDirectory {
11831        #[inline(always)]
11832        fn new_empty() -> Self {
11833            Self::default()
11834        }
11835
11836        unsafe fn decode(
11837            &mut self,
11838            decoder: &mut fidl::encoding::Decoder<'_, D>,
11839            offset: usize,
11840            mut depth: fidl::encoding::Depth,
11841        ) -> fidl::Result<()> {
11842            decoder.debug_check_bounds::<Self>(offset);
11843            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11844                None => return Err(fidl::Error::NotNullable),
11845                Some(len) => len,
11846            };
11847            // Calling decoder.out_of_line_offset(0) is not allowed.
11848            if len == 0 {
11849                return Ok(());
11850            };
11851            depth.increment()?;
11852            let envelope_size = 8;
11853            let bytes_len = len * envelope_size;
11854            let offset = decoder.out_of_line_offset(bytes_len)?;
11855            // Decode the envelope for each type.
11856            let mut _next_ordinal_to_read = 0;
11857            let mut next_offset = offset;
11858            let end_offset = offset + bytes_len;
11859            _next_ordinal_to_read += 1;
11860            if next_offset >= end_offset {
11861                return Ok(());
11862            }
11863
11864            // Decode unknown envelopes for gaps in ordinals.
11865            while _next_ordinal_to_read < 1 {
11866                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11867                _next_ordinal_to_read += 1;
11868                next_offset += envelope_size;
11869            }
11870
11871            let next_out_of_line = decoder.next_out_of_line();
11872            let handles_before = decoder.remaining_handles();
11873            if let Some((inlined, num_bytes, num_handles)) =
11874                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11875            {
11876                let member_inline_size =
11877                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11878                if inlined != (member_inline_size <= 4) {
11879                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11880                }
11881                let inner_offset;
11882                let mut inner_depth = depth.clone();
11883                if inlined {
11884                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11885                    inner_offset = next_offset;
11886                } else {
11887                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11888                    inner_depth.increment()?;
11889                }
11890                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11891                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11892                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11893                {
11894                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11895                }
11896                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11897                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11898                }
11899            }
11900
11901            next_offset += envelope_size;
11902            _next_ordinal_to_read += 1;
11903            if next_offset >= end_offset {
11904                return Ok(());
11905            }
11906
11907            // Decode unknown envelopes for gaps in ordinals.
11908            while _next_ordinal_to_read < 2 {
11909                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11910                _next_ordinal_to_read += 1;
11911                next_offset += envelope_size;
11912            }
11913
11914            let next_out_of_line = decoder.next_out_of_line();
11915            let handles_before = decoder.remaining_handles();
11916            if let Some((inlined, num_bytes, num_handles)) =
11917                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11918            {
11919                let member_inline_size =
11920                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11921                        decoder.context,
11922                    );
11923                if inlined != (member_inline_size <= 4) {
11924                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11925                }
11926                let inner_offset;
11927                let mut inner_depth = depth.clone();
11928                if inlined {
11929                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11930                    inner_offset = next_offset;
11931                } else {
11932                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11933                    inner_depth.increment()?;
11934                }
11935                let val_ref = self
11936                    .source_name
11937                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11938                fidl::decode!(
11939                    fidl::encoding::BoundedString<100>,
11940                    D,
11941                    val_ref,
11942                    decoder,
11943                    inner_offset,
11944                    inner_depth
11945                )?;
11946                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11947                {
11948                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11949                }
11950                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11951                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11952                }
11953            }
11954
11955            next_offset += envelope_size;
11956            _next_ordinal_to_read += 1;
11957            if next_offset >= end_offset {
11958                return Ok(());
11959            }
11960
11961            // Decode unknown envelopes for gaps in ordinals.
11962            while _next_ordinal_to_read < 3 {
11963                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11964                _next_ordinal_to_read += 1;
11965                next_offset += envelope_size;
11966            }
11967
11968            let next_out_of_line = decoder.next_out_of_line();
11969            let handles_before = decoder.remaining_handles();
11970            if let Some((inlined, num_bytes, num_handles)) =
11971                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11972            {
11973                let member_inline_size =
11974                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11975                if inlined != (member_inline_size <= 4) {
11976                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11977                }
11978                let inner_offset;
11979                let mut inner_depth = depth.clone();
11980                if inlined {
11981                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11982                    inner_offset = next_offset;
11983                } else {
11984                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11985                    inner_depth.increment()?;
11986                }
11987                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11988                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11989                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11990                {
11991                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11992                }
11993                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11994                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11995                }
11996            }
11997
11998            next_offset += envelope_size;
11999            _next_ordinal_to_read += 1;
12000            if next_offset >= end_offset {
12001                return Ok(());
12002            }
12003
12004            // Decode unknown envelopes for gaps in ordinals.
12005            while _next_ordinal_to_read < 4 {
12006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12007                _next_ordinal_to_read += 1;
12008                next_offset += envelope_size;
12009            }
12010
12011            let next_out_of_line = decoder.next_out_of_line();
12012            let handles_before = decoder.remaining_handles();
12013            if let Some((inlined, num_bytes, num_handles)) =
12014                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12015            {
12016                let member_inline_size =
12017                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12018                        decoder.context,
12019                    );
12020                if inlined != (member_inline_size <= 4) {
12021                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12022                }
12023                let inner_offset;
12024                let mut inner_depth = depth.clone();
12025                if inlined {
12026                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12027                    inner_offset = next_offset;
12028                } else {
12029                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12030                    inner_depth.increment()?;
12031                }
12032                let val_ref = self
12033                    .target_name
12034                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12035                fidl::decode!(
12036                    fidl::encoding::BoundedString<100>,
12037                    D,
12038                    val_ref,
12039                    decoder,
12040                    inner_offset,
12041                    inner_depth
12042                )?;
12043                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12044                {
12045                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12046                }
12047                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12048                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12049                }
12050            }
12051
12052            next_offset += envelope_size;
12053            _next_ordinal_to_read += 1;
12054            if next_offset >= end_offset {
12055                return Ok(());
12056            }
12057
12058            // Decode unknown envelopes for gaps in ordinals.
12059            while _next_ordinal_to_read < 5 {
12060                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12061                _next_ordinal_to_read += 1;
12062                next_offset += envelope_size;
12063            }
12064
12065            let next_out_of_line = decoder.next_out_of_line();
12066            let handles_before = decoder.remaining_handles();
12067            if let Some((inlined, num_bytes, num_handles)) =
12068                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12069            {
12070                let member_inline_size =
12071                    <fidl_fuchsia_io_common::Operations as fidl::encoding::TypeMarker>::inline_size(
12072                        decoder.context,
12073                    );
12074                if inlined != (member_inline_size <= 4) {
12075                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12076                }
12077                let inner_offset;
12078                let mut inner_depth = depth.clone();
12079                if inlined {
12080                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12081                    inner_offset = next_offset;
12082                } else {
12083                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12084                    inner_depth.increment()?;
12085                }
12086                let val_ref = self
12087                    .rights
12088                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_io_common::Operations, D));
12089                fidl::decode!(
12090                    fidl_fuchsia_io_common::Operations,
12091                    D,
12092                    val_ref,
12093                    decoder,
12094                    inner_offset,
12095                    inner_depth
12096                )?;
12097                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12098                {
12099                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12100                }
12101                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12102                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12103                }
12104            }
12105
12106            next_offset += envelope_size;
12107            _next_ordinal_to_read += 1;
12108            if next_offset >= end_offset {
12109                return Ok(());
12110            }
12111
12112            // Decode unknown envelopes for gaps in ordinals.
12113            while _next_ordinal_to_read < 6 {
12114                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12115                _next_ordinal_to_read += 1;
12116                next_offset += envelope_size;
12117            }
12118
12119            let next_out_of_line = decoder.next_out_of_line();
12120            let handles_before = decoder.remaining_handles();
12121            if let Some((inlined, num_bytes, num_handles)) =
12122                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12123            {
12124                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12125                if inlined != (member_inline_size <= 4) {
12126                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12127                }
12128                let inner_offset;
12129                let mut inner_depth = depth.clone();
12130                if inlined {
12131                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12132                    inner_offset = next_offset;
12133                } else {
12134                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12135                    inner_depth.increment()?;
12136                }
12137                let val_ref = self.subdir.get_or_insert_with(|| {
12138                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12139                });
12140                fidl::decode!(
12141                    fidl::encoding::BoundedString<1024>,
12142                    D,
12143                    val_ref,
12144                    decoder,
12145                    inner_offset,
12146                    inner_depth
12147                )?;
12148                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12149                {
12150                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12151                }
12152                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12153                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12154                }
12155            }
12156
12157            next_offset += envelope_size;
12158            _next_ordinal_to_read += 1;
12159            if next_offset >= end_offset {
12160                return Ok(());
12161            }
12162
12163            // Decode unknown envelopes for gaps in ordinals.
12164            while _next_ordinal_to_read < 7 {
12165                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12166                _next_ordinal_to_read += 1;
12167                next_offset += envelope_size;
12168            }
12169
12170            let next_out_of_line = decoder.next_out_of_line();
12171            let handles_before = decoder.remaining_handles();
12172            if let Some((inlined, num_bytes, num_handles)) =
12173                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12174            {
12175                let member_inline_size =
12176                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12177                if inlined != (member_inline_size <= 4) {
12178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12179                }
12180                let inner_offset;
12181                let mut inner_depth = depth.clone();
12182                if inlined {
12183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12184                    inner_offset = next_offset;
12185                } else {
12186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12187                    inner_depth.increment()?;
12188                }
12189                let val_ref =
12190                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
12191                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
12192                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12193                {
12194                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12195                }
12196                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12197                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12198                }
12199            }
12200
12201            next_offset += envelope_size;
12202            _next_ordinal_to_read += 1;
12203            if next_offset >= end_offset {
12204                return Ok(());
12205            }
12206
12207            // Decode unknown envelopes for gaps in ordinals.
12208            while _next_ordinal_to_read < 8 {
12209                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12210                _next_ordinal_to_read += 1;
12211                next_offset += envelope_size;
12212            }
12213
12214            let next_out_of_line = decoder.next_out_of_line();
12215            let handles_before = decoder.remaining_handles();
12216            if let Some((inlined, num_bytes, num_handles)) =
12217                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12218            {
12219                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12220                if inlined != (member_inline_size <= 4) {
12221                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12222                }
12223                let inner_offset;
12224                let mut inner_depth = depth.clone();
12225                if inlined {
12226                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12227                    inner_offset = next_offset;
12228                } else {
12229                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12230                    inner_depth.increment()?;
12231                }
12232                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12233                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12234                });
12235                fidl::decode!(
12236                    fidl::encoding::BoundedString<1024>,
12237                    D,
12238                    val_ref,
12239                    decoder,
12240                    inner_offset,
12241                    inner_depth
12242                )?;
12243                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12244                {
12245                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12246                }
12247                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12248                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12249                }
12250            }
12251
12252            next_offset += envelope_size;
12253
12254            // Decode the remaining unknown envelopes.
12255            while next_offset < end_offset {
12256                _next_ordinal_to_read += 1;
12257                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12258                next_offset += envelope_size;
12259            }
12260
12261            Ok(())
12262        }
12263    }
12264
12265    impl ExposeProtocol {
12266        #[inline(always)]
12267        fn max_ordinal_present(&self) -> u64 {
12268            if let Some(_) = self.source_dictionary {
12269                return 6;
12270            }
12271            if let Some(_) = self.availability {
12272                return 5;
12273            }
12274            if let Some(_) = self.target_name {
12275                return 4;
12276            }
12277            if let Some(_) = self.target {
12278                return 3;
12279            }
12280            if let Some(_) = self.source_name {
12281                return 2;
12282            }
12283            if let Some(_) = self.source {
12284                return 1;
12285            }
12286            0
12287        }
12288    }
12289
12290    impl fidl::encoding::ValueTypeMarker for ExposeProtocol {
12291        type Borrowed<'a> = &'a Self;
12292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12293            value
12294        }
12295    }
12296
12297    unsafe impl fidl::encoding::TypeMarker for ExposeProtocol {
12298        type Owned = Self;
12299
12300        #[inline(always)]
12301        fn inline_align(_context: fidl::encoding::Context) -> usize {
12302            8
12303        }
12304
12305        #[inline(always)]
12306        fn inline_size(_context: fidl::encoding::Context) -> usize {
12307            16
12308        }
12309    }
12310
12311    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeProtocol, D>
12312        for &ExposeProtocol
12313    {
12314        unsafe fn encode(
12315            self,
12316            encoder: &mut fidl::encoding::Encoder<'_, D>,
12317            offset: usize,
12318            mut depth: fidl::encoding::Depth,
12319        ) -> fidl::Result<()> {
12320            encoder.debug_check_bounds::<ExposeProtocol>(offset);
12321            // Vector header
12322            let max_ordinal: u64 = self.max_ordinal_present();
12323            encoder.write_num(max_ordinal, offset);
12324            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12325            // Calling encoder.out_of_line_offset(0) is not allowed.
12326            if max_ordinal == 0 {
12327                return Ok(());
12328            }
12329            depth.increment()?;
12330            let envelope_size = 8;
12331            let bytes_len = max_ordinal as usize * envelope_size;
12332            #[allow(unused_variables)]
12333            let offset = encoder.out_of_line_offset(bytes_len);
12334            let mut _prev_end_offset: usize = 0;
12335            if 1 > max_ordinal {
12336                return Ok(());
12337            }
12338
12339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12340            // are envelope_size bytes.
12341            let cur_offset: usize = (1 - 1) * envelope_size;
12342
12343            // Zero reserved fields.
12344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12345
12346            // Safety:
12347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12349            //   envelope_size bytes, there is always sufficient room.
12350            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12351                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12352                encoder,
12353                offset + cur_offset,
12354                depth,
12355            )?;
12356
12357            _prev_end_offset = cur_offset + envelope_size;
12358            if 2 > max_ordinal {
12359                return Ok(());
12360            }
12361
12362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12363            // are envelope_size bytes.
12364            let cur_offset: usize = (2 - 1) * envelope_size;
12365
12366            // Zero reserved fields.
12367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12368
12369            // Safety:
12370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12372            //   envelope_size bytes, there is always sufficient room.
12373            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12374                self.source_name.as_ref().map(
12375                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12376                ),
12377                encoder,
12378                offset + cur_offset,
12379                depth,
12380            )?;
12381
12382            _prev_end_offset = cur_offset + envelope_size;
12383            if 3 > max_ordinal {
12384                return Ok(());
12385            }
12386
12387            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12388            // are envelope_size bytes.
12389            let cur_offset: usize = (3 - 1) * envelope_size;
12390
12391            // Zero reserved fields.
12392            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12393
12394            // Safety:
12395            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12396            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12397            //   envelope_size bytes, there is always sufficient room.
12398            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12399                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12400                encoder,
12401                offset + cur_offset,
12402                depth,
12403            )?;
12404
12405            _prev_end_offset = cur_offset + envelope_size;
12406            if 4 > max_ordinal {
12407                return Ok(());
12408            }
12409
12410            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12411            // are envelope_size bytes.
12412            let cur_offset: usize = (4 - 1) * envelope_size;
12413
12414            // Zero reserved fields.
12415            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12416
12417            // Safety:
12418            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12419            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12420            //   envelope_size bytes, there is always sufficient room.
12421            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12422                self.target_name.as_ref().map(
12423                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12424                ),
12425                encoder,
12426                offset + cur_offset,
12427                depth,
12428            )?;
12429
12430            _prev_end_offset = cur_offset + envelope_size;
12431            if 5 > max_ordinal {
12432                return Ok(());
12433            }
12434
12435            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12436            // are envelope_size bytes.
12437            let cur_offset: usize = (5 - 1) * envelope_size;
12438
12439            // Zero reserved fields.
12440            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12441
12442            // Safety:
12443            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12444            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12445            //   envelope_size bytes, there is always sufficient room.
12446            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
12447                self.availability
12448                    .as_ref()
12449                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
12450                encoder,
12451                offset + cur_offset,
12452                depth,
12453            )?;
12454
12455            _prev_end_offset = cur_offset + envelope_size;
12456            if 6 > max_ordinal {
12457                return Ok(());
12458            }
12459
12460            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12461            // are envelope_size bytes.
12462            let cur_offset: usize = (6 - 1) * envelope_size;
12463
12464            // Zero reserved fields.
12465            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12466
12467            // Safety:
12468            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12469            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12470            //   envelope_size bytes, there is always sufficient room.
12471            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12472            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12473            encoder, offset + cur_offset, depth
12474        )?;
12475
12476            _prev_end_offset = cur_offset + envelope_size;
12477
12478            Ok(())
12479        }
12480    }
12481
12482    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeProtocol {
12483        #[inline(always)]
12484        fn new_empty() -> Self {
12485            Self::default()
12486        }
12487
12488        unsafe fn decode(
12489            &mut self,
12490            decoder: &mut fidl::encoding::Decoder<'_, D>,
12491            offset: usize,
12492            mut depth: fidl::encoding::Depth,
12493        ) -> fidl::Result<()> {
12494            decoder.debug_check_bounds::<Self>(offset);
12495            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12496                None => return Err(fidl::Error::NotNullable),
12497                Some(len) => len,
12498            };
12499            // Calling decoder.out_of_line_offset(0) is not allowed.
12500            if len == 0 {
12501                return Ok(());
12502            };
12503            depth.increment()?;
12504            let envelope_size = 8;
12505            let bytes_len = len * envelope_size;
12506            let offset = decoder.out_of_line_offset(bytes_len)?;
12507            // Decode the envelope for each type.
12508            let mut _next_ordinal_to_read = 0;
12509            let mut next_offset = offset;
12510            let end_offset = offset + bytes_len;
12511            _next_ordinal_to_read += 1;
12512            if next_offset >= end_offset {
12513                return Ok(());
12514            }
12515
12516            // Decode unknown envelopes for gaps in ordinals.
12517            while _next_ordinal_to_read < 1 {
12518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12519                _next_ordinal_to_read += 1;
12520                next_offset += envelope_size;
12521            }
12522
12523            let next_out_of_line = decoder.next_out_of_line();
12524            let handles_before = decoder.remaining_handles();
12525            if let Some((inlined, num_bytes, num_handles)) =
12526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12527            {
12528                let member_inline_size =
12529                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12530                if inlined != (member_inline_size <= 4) {
12531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12532                }
12533                let inner_offset;
12534                let mut inner_depth = depth.clone();
12535                if inlined {
12536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12537                    inner_offset = next_offset;
12538                } else {
12539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12540                    inner_depth.increment()?;
12541                }
12542                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12543                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12544                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12545                {
12546                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12547                }
12548                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12549                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12550                }
12551            }
12552
12553            next_offset += envelope_size;
12554            _next_ordinal_to_read += 1;
12555            if next_offset >= end_offset {
12556                return Ok(());
12557            }
12558
12559            // Decode unknown envelopes for gaps in ordinals.
12560            while _next_ordinal_to_read < 2 {
12561                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12562                _next_ordinal_to_read += 1;
12563                next_offset += envelope_size;
12564            }
12565
12566            let next_out_of_line = decoder.next_out_of_line();
12567            let handles_before = decoder.remaining_handles();
12568            if let Some((inlined, num_bytes, num_handles)) =
12569                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12570            {
12571                let member_inline_size =
12572                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12573                        decoder.context,
12574                    );
12575                if inlined != (member_inline_size <= 4) {
12576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12577                }
12578                let inner_offset;
12579                let mut inner_depth = depth.clone();
12580                if inlined {
12581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12582                    inner_offset = next_offset;
12583                } else {
12584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12585                    inner_depth.increment()?;
12586                }
12587                let val_ref = self
12588                    .source_name
12589                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12590                fidl::decode!(
12591                    fidl::encoding::BoundedString<100>,
12592                    D,
12593                    val_ref,
12594                    decoder,
12595                    inner_offset,
12596                    inner_depth
12597                )?;
12598                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12599                {
12600                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12601                }
12602                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12603                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12604                }
12605            }
12606
12607            next_offset += envelope_size;
12608            _next_ordinal_to_read += 1;
12609            if next_offset >= end_offset {
12610                return Ok(());
12611            }
12612
12613            // Decode unknown envelopes for gaps in ordinals.
12614            while _next_ordinal_to_read < 3 {
12615                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12616                _next_ordinal_to_read += 1;
12617                next_offset += envelope_size;
12618            }
12619
12620            let next_out_of_line = decoder.next_out_of_line();
12621            let handles_before = decoder.remaining_handles();
12622            if let Some((inlined, num_bytes, num_handles)) =
12623                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12624            {
12625                let member_inline_size =
12626                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12627                if inlined != (member_inline_size <= 4) {
12628                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12629                }
12630                let inner_offset;
12631                let mut inner_depth = depth.clone();
12632                if inlined {
12633                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12634                    inner_offset = next_offset;
12635                } else {
12636                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12637                    inner_depth.increment()?;
12638                }
12639                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12640                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12641                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12642                {
12643                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12644                }
12645                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12646                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12647                }
12648            }
12649
12650            next_offset += envelope_size;
12651            _next_ordinal_to_read += 1;
12652            if next_offset >= end_offset {
12653                return Ok(());
12654            }
12655
12656            // Decode unknown envelopes for gaps in ordinals.
12657            while _next_ordinal_to_read < 4 {
12658                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12659                _next_ordinal_to_read += 1;
12660                next_offset += envelope_size;
12661            }
12662
12663            let next_out_of_line = decoder.next_out_of_line();
12664            let handles_before = decoder.remaining_handles();
12665            if let Some((inlined, num_bytes, num_handles)) =
12666                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12667            {
12668                let member_inline_size =
12669                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12670                        decoder.context,
12671                    );
12672                if inlined != (member_inline_size <= 4) {
12673                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12674                }
12675                let inner_offset;
12676                let mut inner_depth = depth.clone();
12677                if inlined {
12678                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12679                    inner_offset = next_offset;
12680                } else {
12681                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12682                    inner_depth.increment()?;
12683                }
12684                let val_ref = self
12685                    .target_name
12686                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12687                fidl::decode!(
12688                    fidl::encoding::BoundedString<100>,
12689                    D,
12690                    val_ref,
12691                    decoder,
12692                    inner_offset,
12693                    inner_depth
12694                )?;
12695                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12696                {
12697                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12698                }
12699                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12700                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12701                }
12702            }
12703
12704            next_offset += envelope_size;
12705            _next_ordinal_to_read += 1;
12706            if next_offset >= end_offset {
12707                return Ok(());
12708            }
12709
12710            // Decode unknown envelopes for gaps in ordinals.
12711            while _next_ordinal_to_read < 5 {
12712                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12713                _next_ordinal_to_read += 1;
12714                next_offset += envelope_size;
12715            }
12716
12717            let next_out_of_line = decoder.next_out_of_line();
12718            let handles_before = decoder.remaining_handles();
12719            if let Some((inlined, num_bytes, num_handles)) =
12720                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12721            {
12722                let member_inline_size =
12723                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12724                if inlined != (member_inline_size <= 4) {
12725                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12726                }
12727                let inner_offset;
12728                let mut inner_depth = depth.clone();
12729                if inlined {
12730                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12731                    inner_offset = next_offset;
12732                } else {
12733                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12734                    inner_depth.increment()?;
12735                }
12736                let val_ref =
12737                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
12738                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
12739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12740                {
12741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12742                }
12743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12745                }
12746            }
12747
12748            next_offset += envelope_size;
12749            _next_ordinal_to_read += 1;
12750            if next_offset >= end_offset {
12751                return Ok(());
12752            }
12753
12754            // Decode unknown envelopes for gaps in ordinals.
12755            while _next_ordinal_to_read < 6 {
12756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12757                _next_ordinal_to_read += 1;
12758                next_offset += envelope_size;
12759            }
12760
12761            let next_out_of_line = decoder.next_out_of_line();
12762            let handles_before = decoder.remaining_handles();
12763            if let Some((inlined, num_bytes, num_handles)) =
12764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12765            {
12766                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12767                if inlined != (member_inline_size <= 4) {
12768                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12769                }
12770                let inner_offset;
12771                let mut inner_depth = depth.clone();
12772                if inlined {
12773                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12774                    inner_offset = next_offset;
12775                } else {
12776                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12777                    inner_depth.increment()?;
12778                }
12779                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12780                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12781                });
12782                fidl::decode!(
12783                    fidl::encoding::BoundedString<1024>,
12784                    D,
12785                    val_ref,
12786                    decoder,
12787                    inner_offset,
12788                    inner_depth
12789                )?;
12790                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12791                {
12792                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12793                }
12794                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12795                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12796                }
12797            }
12798
12799            next_offset += envelope_size;
12800
12801            // Decode the remaining unknown envelopes.
12802            while next_offset < end_offset {
12803                _next_ordinal_to_read += 1;
12804                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12805                next_offset += envelope_size;
12806            }
12807
12808            Ok(())
12809        }
12810    }
12811
12812    impl ExposeResolver {
12813        #[inline(always)]
12814        fn max_ordinal_present(&self) -> u64 {
12815            if let Some(_) = self.source_dictionary {
12816                return 6;
12817            }
12818            if let Some(_) = self.target_name {
12819                return 4;
12820            }
12821            if let Some(_) = self.target {
12822                return 3;
12823            }
12824            if let Some(_) = self.source_name {
12825                return 2;
12826            }
12827            if let Some(_) = self.source {
12828                return 1;
12829            }
12830            0
12831        }
12832    }
12833
12834    impl fidl::encoding::ValueTypeMarker for ExposeResolver {
12835        type Borrowed<'a> = &'a Self;
12836        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12837            value
12838        }
12839    }
12840
12841    unsafe impl fidl::encoding::TypeMarker for ExposeResolver {
12842        type Owned = Self;
12843
12844        #[inline(always)]
12845        fn inline_align(_context: fidl::encoding::Context) -> usize {
12846            8
12847        }
12848
12849        #[inline(always)]
12850        fn inline_size(_context: fidl::encoding::Context) -> usize {
12851            16
12852        }
12853    }
12854
12855    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeResolver, D>
12856        for &ExposeResolver
12857    {
12858        unsafe fn encode(
12859            self,
12860            encoder: &mut fidl::encoding::Encoder<'_, D>,
12861            offset: usize,
12862            mut depth: fidl::encoding::Depth,
12863        ) -> fidl::Result<()> {
12864            encoder.debug_check_bounds::<ExposeResolver>(offset);
12865            // Vector header
12866            let max_ordinal: u64 = self.max_ordinal_present();
12867            encoder.write_num(max_ordinal, offset);
12868            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12869            // Calling encoder.out_of_line_offset(0) is not allowed.
12870            if max_ordinal == 0 {
12871                return Ok(());
12872            }
12873            depth.increment()?;
12874            let envelope_size = 8;
12875            let bytes_len = max_ordinal as usize * envelope_size;
12876            #[allow(unused_variables)]
12877            let offset = encoder.out_of_line_offset(bytes_len);
12878            let mut _prev_end_offset: usize = 0;
12879            if 1 > max_ordinal {
12880                return Ok(());
12881            }
12882
12883            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12884            // are envelope_size bytes.
12885            let cur_offset: usize = (1 - 1) * envelope_size;
12886
12887            // Zero reserved fields.
12888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12889
12890            // Safety:
12891            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12892            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12893            //   envelope_size bytes, there is always sufficient room.
12894            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12895                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12896                encoder,
12897                offset + cur_offset,
12898                depth,
12899            )?;
12900
12901            _prev_end_offset = cur_offset + envelope_size;
12902            if 2 > max_ordinal {
12903                return Ok(());
12904            }
12905
12906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12907            // are envelope_size bytes.
12908            let cur_offset: usize = (2 - 1) * envelope_size;
12909
12910            // Zero reserved fields.
12911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12912
12913            // Safety:
12914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12916            //   envelope_size bytes, there is always sufficient room.
12917            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12918                self.source_name.as_ref().map(
12919                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12920                ),
12921                encoder,
12922                offset + cur_offset,
12923                depth,
12924            )?;
12925
12926            _prev_end_offset = cur_offset + envelope_size;
12927            if 3 > max_ordinal {
12928                return Ok(());
12929            }
12930
12931            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12932            // are envelope_size bytes.
12933            let cur_offset: usize = (3 - 1) * envelope_size;
12934
12935            // Zero reserved fields.
12936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12937
12938            // Safety:
12939            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12940            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12941            //   envelope_size bytes, there is always sufficient room.
12942            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12943                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12944                encoder,
12945                offset + cur_offset,
12946                depth,
12947            )?;
12948
12949            _prev_end_offset = cur_offset + envelope_size;
12950            if 4 > max_ordinal {
12951                return Ok(());
12952            }
12953
12954            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12955            // are envelope_size bytes.
12956            let cur_offset: usize = (4 - 1) * envelope_size;
12957
12958            // Zero reserved fields.
12959            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12960
12961            // Safety:
12962            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12963            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12964            //   envelope_size bytes, there is always sufficient room.
12965            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12966                self.target_name.as_ref().map(
12967                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12968                ),
12969                encoder,
12970                offset + cur_offset,
12971                depth,
12972            )?;
12973
12974            _prev_end_offset = cur_offset + envelope_size;
12975            if 6 > max_ordinal {
12976                return Ok(());
12977            }
12978
12979            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12980            // are envelope_size bytes.
12981            let cur_offset: usize = (6 - 1) * envelope_size;
12982
12983            // Zero reserved fields.
12984            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12985
12986            // Safety:
12987            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12988            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12989            //   envelope_size bytes, there is always sufficient room.
12990            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12991            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12992            encoder, offset + cur_offset, depth
12993        )?;
12994
12995            _prev_end_offset = cur_offset + envelope_size;
12996
12997            Ok(())
12998        }
12999    }
13000
13001    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeResolver {
13002        #[inline(always)]
13003        fn new_empty() -> Self {
13004            Self::default()
13005        }
13006
13007        unsafe fn decode(
13008            &mut self,
13009            decoder: &mut fidl::encoding::Decoder<'_, D>,
13010            offset: usize,
13011            mut depth: fidl::encoding::Depth,
13012        ) -> fidl::Result<()> {
13013            decoder.debug_check_bounds::<Self>(offset);
13014            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13015                None => return Err(fidl::Error::NotNullable),
13016                Some(len) => len,
13017            };
13018            // Calling decoder.out_of_line_offset(0) is not allowed.
13019            if len == 0 {
13020                return Ok(());
13021            };
13022            depth.increment()?;
13023            let envelope_size = 8;
13024            let bytes_len = len * envelope_size;
13025            let offset = decoder.out_of_line_offset(bytes_len)?;
13026            // Decode the envelope for each type.
13027            let mut _next_ordinal_to_read = 0;
13028            let mut next_offset = offset;
13029            let end_offset = offset + bytes_len;
13030            _next_ordinal_to_read += 1;
13031            if next_offset >= end_offset {
13032                return Ok(());
13033            }
13034
13035            // Decode unknown envelopes for gaps in ordinals.
13036            while _next_ordinal_to_read < 1 {
13037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13038                _next_ordinal_to_read += 1;
13039                next_offset += envelope_size;
13040            }
13041
13042            let next_out_of_line = decoder.next_out_of_line();
13043            let handles_before = decoder.remaining_handles();
13044            if let Some((inlined, num_bytes, num_handles)) =
13045                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13046            {
13047                let member_inline_size =
13048                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13049                if inlined != (member_inline_size <= 4) {
13050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13051                }
13052                let inner_offset;
13053                let mut inner_depth = depth.clone();
13054                if inlined {
13055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13056                    inner_offset = next_offset;
13057                } else {
13058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13059                    inner_depth.increment()?;
13060                }
13061                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13062                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13063                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13064                {
13065                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13066                }
13067                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13068                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13069                }
13070            }
13071
13072            next_offset += envelope_size;
13073            _next_ordinal_to_read += 1;
13074            if next_offset >= end_offset {
13075                return Ok(());
13076            }
13077
13078            // Decode unknown envelopes for gaps in ordinals.
13079            while _next_ordinal_to_read < 2 {
13080                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13081                _next_ordinal_to_read += 1;
13082                next_offset += envelope_size;
13083            }
13084
13085            let next_out_of_line = decoder.next_out_of_line();
13086            let handles_before = decoder.remaining_handles();
13087            if let Some((inlined, num_bytes, num_handles)) =
13088                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13089            {
13090                let member_inline_size =
13091                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13092                        decoder.context,
13093                    );
13094                if inlined != (member_inline_size <= 4) {
13095                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13096                }
13097                let inner_offset;
13098                let mut inner_depth = depth.clone();
13099                if inlined {
13100                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13101                    inner_offset = next_offset;
13102                } else {
13103                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13104                    inner_depth.increment()?;
13105                }
13106                let val_ref = self
13107                    .source_name
13108                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13109                fidl::decode!(
13110                    fidl::encoding::BoundedString<100>,
13111                    D,
13112                    val_ref,
13113                    decoder,
13114                    inner_offset,
13115                    inner_depth
13116                )?;
13117                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13118                {
13119                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13120                }
13121                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13122                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13123                }
13124            }
13125
13126            next_offset += envelope_size;
13127            _next_ordinal_to_read += 1;
13128            if next_offset >= end_offset {
13129                return Ok(());
13130            }
13131
13132            // Decode unknown envelopes for gaps in ordinals.
13133            while _next_ordinal_to_read < 3 {
13134                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13135                _next_ordinal_to_read += 1;
13136                next_offset += envelope_size;
13137            }
13138
13139            let next_out_of_line = decoder.next_out_of_line();
13140            let handles_before = decoder.remaining_handles();
13141            if let Some((inlined, num_bytes, num_handles)) =
13142                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13143            {
13144                let member_inline_size =
13145                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13146                if inlined != (member_inline_size <= 4) {
13147                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13148                }
13149                let inner_offset;
13150                let mut inner_depth = depth.clone();
13151                if inlined {
13152                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13153                    inner_offset = next_offset;
13154                } else {
13155                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13156                    inner_depth.increment()?;
13157                }
13158                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13159                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13160                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13161                {
13162                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13163                }
13164                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13165                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13166                }
13167            }
13168
13169            next_offset += envelope_size;
13170            _next_ordinal_to_read += 1;
13171            if next_offset >= end_offset {
13172                return Ok(());
13173            }
13174
13175            // Decode unknown envelopes for gaps in ordinals.
13176            while _next_ordinal_to_read < 4 {
13177                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13178                _next_ordinal_to_read += 1;
13179                next_offset += envelope_size;
13180            }
13181
13182            let next_out_of_line = decoder.next_out_of_line();
13183            let handles_before = decoder.remaining_handles();
13184            if let Some((inlined, num_bytes, num_handles)) =
13185                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13186            {
13187                let member_inline_size =
13188                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13189                        decoder.context,
13190                    );
13191                if inlined != (member_inline_size <= 4) {
13192                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13193                }
13194                let inner_offset;
13195                let mut inner_depth = depth.clone();
13196                if inlined {
13197                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13198                    inner_offset = next_offset;
13199                } else {
13200                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13201                    inner_depth.increment()?;
13202                }
13203                let val_ref = self
13204                    .target_name
13205                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13206                fidl::decode!(
13207                    fidl::encoding::BoundedString<100>,
13208                    D,
13209                    val_ref,
13210                    decoder,
13211                    inner_offset,
13212                    inner_depth
13213                )?;
13214                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13215                {
13216                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13217                }
13218                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13219                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13220                }
13221            }
13222
13223            next_offset += envelope_size;
13224            _next_ordinal_to_read += 1;
13225            if next_offset >= end_offset {
13226                return Ok(());
13227            }
13228
13229            // Decode unknown envelopes for gaps in ordinals.
13230            while _next_ordinal_to_read < 6 {
13231                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13232                _next_ordinal_to_read += 1;
13233                next_offset += envelope_size;
13234            }
13235
13236            let next_out_of_line = decoder.next_out_of_line();
13237            let handles_before = decoder.remaining_handles();
13238            if let Some((inlined, num_bytes, num_handles)) =
13239                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13240            {
13241                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13242                if inlined != (member_inline_size <= 4) {
13243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13244                }
13245                let inner_offset;
13246                let mut inner_depth = depth.clone();
13247                if inlined {
13248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13249                    inner_offset = next_offset;
13250                } else {
13251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13252                    inner_depth.increment()?;
13253                }
13254                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13255                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
13256                });
13257                fidl::decode!(
13258                    fidl::encoding::BoundedString<1024>,
13259                    D,
13260                    val_ref,
13261                    decoder,
13262                    inner_offset,
13263                    inner_depth
13264                )?;
13265                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13266                {
13267                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13268                }
13269                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13270                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13271                }
13272            }
13273
13274            next_offset += envelope_size;
13275
13276            // Decode the remaining unknown envelopes.
13277            while next_offset < end_offset {
13278                _next_ordinal_to_read += 1;
13279                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13280                next_offset += envelope_size;
13281            }
13282
13283            Ok(())
13284        }
13285    }
13286
13287    impl ExposeRunner {
13288        #[inline(always)]
13289        fn max_ordinal_present(&self) -> u64 {
13290            if let Some(_) = self.source_dictionary {
13291                return 6;
13292            }
13293            if let Some(_) = self.target_name {
13294                return 4;
13295            }
13296            if let Some(_) = self.target {
13297                return 3;
13298            }
13299            if let Some(_) = self.source_name {
13300                return 2;
13301            }
13302            if let Some(_) = self.source {
13303                return 1;
13304            }
13305            0
13306        }
13307    }
13308
13309    impl fidl::encoding::ValueTypeMarker for ExposeRunner {
13310        type Borrowed<'a> = &'a Self;
13311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13312            value
13313        }
13314    }
13315
13316    unsafe impl fidl::encoding::TypeMarker for ExposeRunner {
13317        type Owned = Self;
13318
13319        #[inline(always)]
13320        fn inline_align(_context: fidl::encoding::Context) -> usize {
13321            8
13322        }
13323
13324        #[inline(always)]
13325        fn inline_size(_context: fidl::encoding::Context) -> usize {
13326            16
13327        }
13328    }
13329
13330    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeRunner, D>
13331        for &ExposeRunner
13332    {
13333        unsafe fn encode(
13334            self,
13335            encoder: &mut fidl::encoding::Encoder<'_, D>,
13336            offset: usize,
13337            mut depth: fidl::encoding::Depth,
13338        ) -> fidl::Result<()> {
13339            encoder.debug_check_bounds::<ExposeRunner>(offset);
13340            // Vector header
13341            let max_ordinal: u64 = self.max_ordinal_present();
13342            encoder.write_num(max_ordinal, offset);
13343            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13344            // Calling encoder.out_of_line_offset(0) is not allowed.
13345            if max_ordinal == 0 {
13346                return Ok(());
13347            }
13348            depth.increment()?;
13349            let envelope_size = 8;
13350            let bytes_len = max_ordinal as usize * envelope_size;
13351            #[allow(unused_variables)]
13352            let offset = encoder.out_of_line_offset(bytes_len);
13353            let mut _prev_end_offset: usize = 0;
13354            if 1 > max_ordinal {
13355                return Ok(());
13356            }
13357
13358            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13359            // are envelope_size bytes.
13360            let cur_offset: usize = (1 - 1) * envelope_size;
13361
13362            // Zero reserved fields.
13363            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13364
13365            // Safety:
13366            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13367            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13368            //   envelope_size bytes, there is always sufficient room.
13369            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13370                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13371                encoder,
13372                offset + cur_offset,
13373                depth,
13374            )?;
13375
13376            _prev_end_offset = cur_offset + envelope_size;
13377            if 2 > max_ordinal {
13378                return Ok(());
13379            }
13380
13381            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13382            // are envelope_size bytes.
13383            let cur_offset: usize = (2 - 1) * envelope_size;
13384
13385            // Zero reserved fields.
13386            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13387
13388            // Safety:
13389            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13390            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13391            //   envelope_size bytes, there is always sufficient room.
13392            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13393                self.source_name.as_ref().map(
13394                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13395                ),
13396                encoder,
13397                offset + cur_offset,
13398                depth,
13399            )?;
13400
13401            _prev_end_offset = cur_offset + envelope_size;
13402            if 3 > max_ordinal {
13403                return Ok(());
13404            }
13405
13406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13407            // are envelope_size bytes.
13408            let cur_offset: usize = (3 - 1) * envelope_size;
13409
13410            // Zero reserved fields.
13411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13412
13413            // Safety:
13414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13416            //   envelope_size bytes, there is always sufficient room.
13417            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13418                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13419                encoder,
13420                offset + cur_offset,
13421                depth,
13422            )?;
13423
13424            _prev_end_offset = cur_offset + envelope_size;
13425            if 4 > max_ordinal {
13426                return Ok(());
13427            }
13428
13429            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13430            // are envelope_size bytes.
13431            let cur_offset: usize = (4 - 1) * envelope_size;
13432
13433            // Zero reserved fields.
13434            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13435
13436            // Safety:
13437            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13438            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13439            //   envelope_size bytes, there is always sufficient room.
13440            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13441                self.target_name.as_ref().map(
13442                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13443                ),
13444                encoder,
13445                offset + cur_offset,
13446                depth,
13447            )?;
13448
13449            _prev_end_offset = cur_offset + envelope_size;
13450            if 6 > max_ordinal {
13451                return Ok(());
13452            }
13453
13454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13455            // are envelope_size bytes.
13456            let cur_offset: usize = (6 - 1) * envelope_size;
13457
13458            // Zero reserved fields.
13459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13460
13461            // Safety:
13462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13464            //   envelope_size bytes, there is always sufficient room.
13465            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13466            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13467            encoder, offset + cur_offset, depth
13468        )?;
13469
13470            _prev_end_offset = cur_offset + envelope_size;
13471
13472            Ok(())
13473        }
13474    }
13475
13476    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeRunner {
13477        #[inline(always)]
13478        fn new_empty() -> Self {
13479            Self::default()
13480        }
13481
13482        unsafe fn decode(
13483            &mut self,
13484            decoder: &mut fidl::encoding::Decoder<'_, D>,
13485            offset: usize,
13486            mut depth: fidl::encoding::Depth,
13487        ) -> fidl::Result<()> {
13488            decoder.debug_check_bounds::<Self>(offset);
13489            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13490                None => return Err(fidl::Error::NotNullable),
13491                Some(len) => len,
13492            };
13493            // Calling decoder.out_of_line_offset(0) is not allowed.
13494            if len == 0 {
13495                return Ok(());
13496            };
13497            depth.increment()?;
13498            let envelope_size = 8;
13499            let bytes_len = len * envelope_size;
13500            let offset = decoder.out_of_line_offset(bytes_len)?;
13501            // Decode the envelope for each type.
13502            let mut _next_ordinal_to_read = 0;
13503            let mut next_offset = offset;
13504            let end_offset = offset + bytes_len;
13505            _next_ordinal_to_read += 1;
13506            if next_offset >= end_offset {
13507                return Ok(());
13508            }
13509
13510            // Decode unknown envelopes for gaps in ordinals.
13511            while _next_ordinal_to_read < 1 {
13512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13513                _next_ordinal_to_read += 1;
13514                next_offset += envelope_size;
13515            }
13516
13517            let next_out_of_line = decoder.next_out_of_line();
13518            let handles_before = decoder.remaining_handles();
13519            if let Some((inlined, num_bytes, num_handles)) =
13520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13521            {
13522                let member_inline_size =
13523                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13524                if inlined != (member_inline_size <= 4) {
13525                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13526                }
13527                let inner_offset;
13528                let mut inner_depth = depth.clone();
13529                if inlined {
13530                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13531                    inner_offset = next_offset;
13532                } else {
13533                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13534                    inner_depth.increment()?;
13535                }
13536                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13537                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13538                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13539                {
13540                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13541                }
13542                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13543                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13544                }
13545            }
13546
13547            next_offset += envelope_size;
13548            _next_ordinal_to_read += 1;
13549            if next_offset >= end_offset {
13550                return Ok(());
13551            }
13552
13553            // Decode unknown envelopes for gaps in ordinals.
13554            while _next_ordinal_to_read < 2 {
13555                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13556                _next_ordinal_to_read += 1;
13557                next_offset += envelope_size;
13558            }
13559
13560            let next_out_of_line = decoder.next_out_of_line();
13561            let handles_before = decoder.remaining_handles();
13562            if let Some((inlined, num_bytes, num_handles)) =
13563                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13564            {
13565                let member_inline_size =
13566                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13567                        decoder.context,
13568                    );
13569                if inlined != (member_inline_size <= 4) {
13570                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13571                }
13572                let inner_offset;
13573                let mut inner_depth = depth.clone();
13574                if inlined {
13575                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13576                    inner_offset = next_offset;
13577                } else {
13578                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13579                    inner_depth.increment()?;
13580                }
13581                let val_ref = self
13582                    .source_name
13583                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13584                fidl::decode!(
13585                    fidl::encoding::BoundedString<100>,
13586                    D,
13587                    val_ref,
13588                    decoder,
13589                    inner_offset,
13590                    inner_depth
13591                )?;
13592                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13593                {
13594                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13595                }
13596                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13597                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13598                }
13599            }
13600
13601            next_offset += envelope_size;
13602            _next_ordinal_to_read += 1;
13603            if next_offset >= end_offset {
13604                return Ok(());
13605            }
13606
13607            // Decode unknown envelopes for gaps in ordinals.
13608            while _next_ordinal_to_read < 3 {
13609                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13610                _next_ordinal_to_read += 1;
13611                next_offset += envelope_size;
13612            }
13613
13614            let next_out_of_line = decoder.next_out_of_line();
13615            let handles_before = decoder.remaining_handles();
13616            if let Some((inlined, num_bytes, num_handles)) =
13617                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13618            {
13619                let member_inline_size =
13620                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13621                if inlined != (member_inline_size <= 4) {
13622                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13623                }
13624                let inner_offset;
13625                let mut inner_depth = depth.clone();
13626                if inlined {
13627                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13628                    inner_offset = next_offset;
13629                } else {
13630                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13631                    inner_depth.increment()?;
13632                }
13633                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13634                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13635                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13636                {
13637                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13638                }
13639                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13640                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13641                }
13642            }
13643
13644            next_offset += envelope_size;
13645            _next_ordinal_to_read += 1;
13646            if next_offset >= end_offset {
13647                return Ok(());
13648            }
13649
13650            // Decode unknown envelopes for gaps in ordinals.
13651            while _next_ordinal_to_read < 4 {
13652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13653                _next_ordinal_to_read += 1;
13654                next_offset += envelope_size;
13655            }
13656
13657            let next_out_of_line = decoder.next_out_of_line();
13658            let handles_before = decoder.remaining_handles();
13659            if let Some((inlined, num_bytes, num_handles)) =
13660                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13661            {
13662                let member_inline_size =
13663                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13664                        decoder.context,
13665                    );
13666                if inlined != (member_inline_size <= 4) {
13667                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13668                }
13669                let inner_offset;
13670                let mut inner_depth = depth.clone();
13671                if inlined {
13672                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13673                    inner_offset = next_offset;
13674                } else {
13675                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13676                    inner_depth.increment()?;
13677                }
13678                let val_ref = self
13679                    .target_name
13680                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13681                fidl::decode!(
13682                    fidl::encoding::BoundedString<100>,
13683                    D,
13684                    val_ref,
13685                    decoder,
13686                    inner_offset,
13687                    inner_depth
13688                )?;
13689                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13690                {
13691                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13692                }
13693                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13694                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13695                }
13696            }
13697
13698            next_offset += envelope_size;
13699            _next_ordinal_to_read += 1;
13700            if next_offset >= end_offset {
13701                return Ok(());
13702            }
13703
13704            // Decode unknown envelopes for gaps in ordinals.
13705            while _next_ordinal_to_read < 6 {
13706                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13707                _next_ordinal_to_read += 1;
13708                next_offset += envelope_size;
13709            }
13710
13711            let next_out_of_line = decoder.next_out_of_line();
13712            let handles_before = decoder.remaining_handles();
13713            if let Some((inlined, num_bytes, num_handles)) =
13714                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13715            {
13716                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13717                if inlined != (member_inline_size <= 4) {
13718                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13719                }
13720                let inner_offset;
13721                let mut inner_depth = depth.clone();
13722                if inlined {
13723                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13724                    inner_offset = next_offset;
13725                } else {
13726                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13727                    inner_depth.increment()?;
13728                }
13729                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13730                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
13731                });
13732                fidl::decode!(
13733                    fidl::encoding::BoundedString<1024>,
13734                    D,
13735                    val_ref,
13736                    decoder,
13737                    inner_offset,
13738                    inner_depth
13739                )?;
13740                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13741                {
13742                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13743                }
13744                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13745                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13746                }
13747            }
13748
13749            next_offset += envelope_size;
13750
13751            // Decode the remaining unknown envelopes.
13752            while next_offset < end_offset {
13753                _next_ordinal_to_read += 1;
13754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13755                next_offset += envelope_size;
13756            }
13757
13758            Ok(())
13759        }
13760    }
13761
13762    impl ExposeService {
13763        #[inline(always)]
13764        fn max_ordinal_present(&self) -> u64 {
13765            if let Some(_) = self.source_dictionary {
13766                return 6;
13767            }
13768            if let Some(_) = self.availability {
13769                return 5;
13770            }
13771            if let Some(_) = self.target_name {
13772                return 4;
13773            }
13774            if let Some(_) = self.target {
13775                return 3;
13776            }
13777            if let Some(_) = self.source_name {
13778                return 2;
13779            }
13780            if let Some(_) = self.source {
13781                return 1;
13782            }
13783            0
13784        }
13785    }
13786
13787    impl fidl::encoding::ValueTypeMarker for ExposeService {
13788        type Borrowed<'a> = &'a Self;
13789        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13790            value
13791        }
13792    }
13793
13794    unsafe impl fidl::encoding::TypeMarker for ExposeService {
13795        type Owned = Self;
13796
13797        #[inline(always)]
13798        fn inline_align(_context: fidl::encoding::Context) -> usize {
13799            8
13800        }
13801
13802        #[inline(always)]
13803        fn inline_size(_context: fidl::encoding::Context) -> usize {
13804            16
13805        }
13806    }
13807
13808    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeService, D>
13809        for &ExposeService
13810    {
13811        unsafe fn encode(
13812            self,
13813            encoder: &mut fidl::encoding::Encoder<'_, D>,
13814            offset: usize,
13815            mut depth: fidl::encoding::Depth,
13816        ) -> fidl::Result<()> {
13817            encoder.debug_check_bounds::<ExposeService>(offset);
13818            // Vector header
13819            let max_ordinal: u64 = self.max_ordinal_present();
13820            encoder.write_num(max_ordinal, offset);
13821            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13822            // Calling encoder.out_of_line_offset(0) is not allowed.
13823            if max_ordinal == 0 {
13824                return Ok(());
13825            }
13826            depth.increment()?;
13827            let envelope_size = 8;
13828            let bytes_len = max_ordinal as usize * envelope_size;
13829            #[allow(unused_variables)]
13830            let offset = encoder.out_of_line_offset(bytes_len);
13831            let mut _prev_end_offset: usize = 0;
13832            if 1 > max_ordinal {
13833                return Ok(());
13834            }
13835
13836            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13837            // are envelope_size bytes.
13838            let cur_offset: usize = (1 - 1) * envelope_size;
13839
13840            // Zero reserved fields.
13841            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13842
13843            // Safety:
13844            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13845            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13846            //   envelope_size bytes, there is always sufficient room.
13847            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13848                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13849                encoder,
13850                offset + cur_offset,
13851                depth,
13852            )?;
13853
13854            _prev_end_offset = cur_offset + envelope_size;
13855            if 2 > max_ordinal {
13856                return Ok(());
13857            }
13858
13859            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13860            // are envelope_size bytes.
13861            let cur_offset: usize = (2 - 1) * envelope_size;
13862
13863            // Zero reserved fields.
13864            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13865
13866            // Safety:
13867            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13868            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13869            //   envelope_size bytes, there is always sufficient room.
13870            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13871                self.source_name.as_ref().map(
13872                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13873                ),
13874                encoder,
13875                offset + cur_offset,
13876                depth,
13877            )?;
13878
13879            _prev_end_offset = cur_offset + envelope_size;
13880            if 3 > max_ordinal {
13881                return Ok(());
13882            }
13883
13884            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13885            // are envelope_size bytes.
13886            let cur_offset: usize = (3 - 1) * envelope_size;
13887
13888            // Zero reserved fields.
13889            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13890
13891            // Safety:
13892            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13893            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13894            //   envelope_size bytes, there is always sufficient room.
13895            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13896                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13897                encoder,
13898                offset + cur_offset,
13899                depth,
13900            )?;
13901
13902            _prev_end_offset = cur_offset + envelope_size;
13903            if 4 > max_ordinal {
13904                return Ok(());
13905            }
13906
13907            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13908            // are envelope_size bytes.
13909            let cur_offset: usize = (4 - 1) * envelope_size;
13910
13911            // Zero reserved fields.
13912            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13913
13914            // Safety:
13915            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13916            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13917            //   envelope_size bytes, there is always sufficient room.
13918            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13919                self.target_name.as_ref().map(
13920                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13921                ),
13922                encoder,
13923                offset + cur_offset,
13924                depth,
13925            )?;
13926
13927            _prev_end_offset = cur_offset + envelope_size;
13928            if 5 > max_ordinal {
13929                return Ok(());
13930            }
13931
13932            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13933            // are envelope_size bytes.
13934            let cur_offset: usize = (5 - 1) * envelope_size;
13935
13936            // Zero reserved fields.
13937            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13938
13939            // Safety:
13940            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13941            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13942            //   envelope_size bytes, there is always sufficient room.
13943            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
13944                self.availability
13945                    .as_ref()
13946                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
13947                encoder,
13948                offset + cur_offset,
13949                depth,
13950            )?;
13951
13952            _prev_end_offset = cur_offset + envelope_size;
13953            if 6 > max_ordinal {
13954                return Ok(());
13955            }
13956
13957            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13958            // are envelope_size bytes.
13959            let cur_offset: usize = (6 - 1) * envelope_size;
13960
13961            // Zero reserved fields.
13962            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13963
13964            // Safety:
13965            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13966            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13967            //   envelope_size bytes, there is always sufficient room.
13968            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13969            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13970            encoder, offset + cur_offset, depth
13971        )?;
13972
13973            _prev_end_offset = cur_offset + envelope_size;
13974
13975            Ok(())
13976        }
13977    }
13978
13979    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeService {
13980        #[inline(always)]
13981        fn new_empty() -> Self {
13982            Self::default()
13983        }
13984
13985        unsafe fn decode(
13986            &mut self,
13987            decoder: &mut fidl::encoding::Decoder<'_, D>,
13988            offset: usize,
13989            mut depth: fidl::encoding::Depth,
13990        ) -> fidl::Result<()> {
13991            decoder.debug_check_bounds::<Self>(offset);
13992            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13993                None => return Err(fidl::Error::NotNullable),
13994                Some(len) => len,
13995            };
13996            // Calling decoder.out_of_line_offset(0) is not allowed.
13997            if len == 0 {
13998                return Ok(());
13999            };
14000            depth.increment()?;
14001            let envelope_size = 8;
14002            let bytes_len = len * envelope_size;
14003            let offset = decoder.out_of_line_offset(bytes_len)?;
14004            // Decode the envelope for each type.
14005            let mut _next_ordinal_to_read = 0;
14006            let mut next_offset = offset;
14007            let end_offset = offset + bytes_len;
14008            _next_ordinal_to_read += 1;
14009            if next_offset >= end_offset {
14010                return Ok(());
14011            }
14012
14013            // Decode unknown envelopes for gaps in ordinals.
14014            while _next_ordinal_to_read < 1 {
14015                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14016                _next_ordinal_to_read += 1;
14017                next_offset += envelope_size;
14018            }
14019
14020            let next_out_of_line = decoder.next_out_of_line();
14021            let handles_before = decoder.remaining_handles();
14022            if let Some((inlined, num_bytes, num_handles)) =
14023                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14024            {
14025                let member_inline_size =
14026                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14027                if inlined != (member_inline_size <= 4) {
14028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14029                }
14030                let inner_offset;
14031                let mut inner_depth = depth.clone();
14032                if inlined {
14033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14034                    inner_offset = next_offset;
14035                } else {
14036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14037                    inner_depth.increment()?;
14038                }
14039                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14040                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14041                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14042                {
14043                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14044                }
14045                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14046                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14047                }
14048            }
14049
14050            next_offset += envelope_size;
14051            _next_ordinal_to_read += 1;
14052            if next_offset >= end_offset {
14053                return Ok(());
14054            }
14055
14056            // Decode unknown envelopes for gaps in ordinals.
14057            while _next_ordinal_to_read < 2 {
14058                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14059                _next_ordinal_to_read += 1;
14060                next_offset += envelope_size;
14061            }
14062
14063            let next_out_of_line = decoder.next_out_of_line();
14064            let handles_before = decoder.remaining_handles();
14065            if let Some((inlined, num_bytes, num_handles)) =
14066                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14067            {
14068                let member_inline_size =
14069                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14070                        decoder.context,
14071                    );
14072                if inlined != (member_inline_size <= 4) {
14073                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14074                }
14075                let inner_offset;
14076                let mut inner_depth = depth.clone();
14077                if inlined {
14078                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14079                    inner_offset = next_offset;
14080                } else {
14081                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14082                    inner_depth.increment()?;
14083                }
14084                let val_ref = self
14085                    .source_name
14086                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14087                fidl::decode!(
14088                    fidl::encoding::BoundedString<100>,
14089                    D,
14090                    val_ref,
14091                    decoder,
14092                    inner_offset,
14093                    inner_depth
14094                )?;
14095                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14096                {
14097                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14098                }
14099                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14100                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14101                }
14102            }
14103
14104            next_offset += envelope_size;
14105            _next_ordinal_to_read += 1;
14106            if next_offset >= end_offset {
14107                return Ok(());
14108            }
14109
14110            // Decode unknown envelopes for gaps in ordinals.
14111            while _next_ordinal_to_read < 3 {
14112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14113                _next_ordinal_to_read += 1;
14114                next_offset += envelope_size;
14115            }
14116
14117            let next_out_of_line = decoder.next_out_of_line();
14118            let handles_before = decoder.remaining_handles();
14119            if let Some((inlined, num_bytes, num_handles)) =
14120                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14121            {
14122                let member_inline_size =
14123                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14124                if inlined != (member_inline_size <= 4) {
14125                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14126                }
14127                let inner_offset;
14128                let mut inner_depth = depth.clone();
14129                if inlined {
14130                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14131                    inner_offset = next_offset;
14132                } else {
14133                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14134                    inner_depth.increment()?;
14135                }
14136                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14137                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14138                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14139                {
14140                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14141                }
14142                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14143                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14144                }
14145            }
14146
14147            next_offset += envelope_size;
14148            _next_ordinal_to_read += 1;
14149            if next_offset >= end_offset {
14150                return Ok(());
14151            }
14152
14153            // Decode unknown envelopes for gaps in ordinals.
14154            while _next_ordinal_to_read < 4 {
14155                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14156                _next_ordinal_to_read += 1;
14157                next_offset += envelope_size;
14158            }
14159
14160            let next_out_of_line = decoder.next_out_of_line();
14161            let handles_before = decoder.remaining_handles();
14162            if let Some((inlined, num_bytes, num_handles)) =
14163                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14164            {
14165                let member_inline_size =
14166                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14167                        decoder.context,
14168                    );
14169                if inlined != (member_inline_size <= 4) {
14170                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14171                }
14172                let inner_offset;
14173                let mut inner_depth = depth.clone();
14174                if inlined {
14175                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14176                    inner_offset = next_offset;
14177                } else {
14178                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14179                    inner_depth.increment()?;
14180                }
14181                let val_ref = self
14182                    .target_name
14183                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14184                fidl::decode!(
14185                    fidl::encoding::BoundedString<100>,
14186                    D,
14187                    val_ref,
14188                    decoder,
14189                    inner_offset,
14190                    inner_depth
14191                )?;
14192                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14193                {
14194                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14195                }
14196                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14197                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14198                }
14199            }
14200
14201            next_offset += envelope_size;
14202            _next_ordinal_to_read += 1;
14203            if next_offset >= end_offset {
14204                return Ok(());
14205            }
14206
14207            // Decode unknown envelopes for gaps in ordinals.
14208            while _next_ordinal_to_read < 5 {
14209                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14210                _next_ordinal_to_read += 1;
14211                next_offset += envelope_size;
14212            }
14213
14214            let next_out_of_line = decoder.next_out_of_line();
14215            let handles_before = decoder.remaining_handles();
14216            if let Some((inlined, num_bytes, num_handles)) =
14217                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14218            {
14219                let member_inline_size =
14220                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14221                if inlined != (member_inline_size <= 4) {
14222                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14223                }
14224                let inner_offset;
14225                let mut inner_depth = depth.clone();
14226                if inlined {
14227                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14228                    inner_offset = next_offset;
14229                } else {
14230                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14231                    inner_depth.increment()?;
14232                }
14233                let val_ref =
14234                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
14235                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
14236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14237                {
14238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14239                }
14240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14242                }
14243            }
14244
14245            next_offset += envelope_size;
14246            _next_ordinal_to_read += 1;
14247            if next_offset >= end_offset {
14248                return Ok(());
14249            }
14250
14251            // Decode unknown envelopes for gaps in ordinals.
14252            while _next_ordinal_to_read < 6 {
14253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14254                _next_ordinal_to_read += 1;
14255                next_offset += envelope_size;
14256            }
14257
14258            let next_out_of_line = decoder.next_out_of_line();
14259            let handles_before = decoder.remaining_handles();
14260            if let Some((inlined, num_bytes, num_handles)) =
14261                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14262            {
14263                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14264                if inlined != (member_inline_size <= 4) {
14265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14266                }
14267                let inner_offset;
14268                let mut inner_depth = depth.clone();
14269                if inlined {
14270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14271                    inner_offset = next_offset;
14272                } else {
14273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14274                    inner_depth.increment()?;
14275                }
14276                let val_ref = self.source_dictionary.get_or_insert_with(|| {
14277                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14278                });
14279                fidl::decode!(
14280                    fidl::encoding::BoundedString<1024>,
14281                    D,
14282                    val_ref,
14283                    decoder,
14284                    inner_offset,
14285                    inner_depth
14286                )?;
14287                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14288                {
14289                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14290                }
14291                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14292                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14293                }
14294            }
14295
14296            next_offset += envelope_size;
14297
14298            // Decode the remaining unknown envelopes.
14299            while next_offset < end_offset {
14300                _next_ordinal_to_read += 1;
14301                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14302                next_offset += envelope_size;
14303            }
14304
14305            Ok(())
14306        }
14307    }
14308
14309    impl OfferConfiguration {
14310        #[inline(always)]
14311        fn max_ordinal_present(&self) -> u64 {
14312            if let Some(_) = self.source_dictionary {
14313                return 6;
14314            }
14315            if let Some(_) = self.availability {
14316                return 5;
14317            }
14318            if let Some(_) = self.target_name {
14319                return 4;
14320            }
14321            if let Some(_) = self.target {
14322                return 3;
14323            }
14324            if let Some(_) = self.source_name {
14325                return 2;
14326            }
14327            if let Some(_) = self.source {
14328                return 1;
14329            }
14330            0
14331        }
14332    }
14333
14334    impl fidl::encoding::ValueTypeMarker for OfferConfiguration {
14335        type Borrowed<'a> = &'a Self;
14336        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14337            value
14338        }
14339    }
14340
14341    unsafe impl fidl::encoding::TypeMarker for OfferConfiguration {
14342        type Owned = Self;
14343
14344        #[inline(always)]
14345        fn inline_align(_context: fidl::encoding::Context) -> usize {
14346            8
14347        }
14348
14349        #[inline(always)]
14350        fn inline_size(_context: fidl::encoding::Context) -> usize {
14351            16
14352        }
14353    }
14354
14355    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferConfiguration, D>
14356        for &OfferConfiguration
14357    {
14358        unsafe fn encode(
14359            self,
14360            encoder: &mut fidl::encoding::Encoder<'_, D>,
14361            offset: usize,
14362            mut depth: fidl::encoding::Depth,
14363        ) -> fidl::Result<()> {
14364            encoder.debug_check_bounds::<OfferConfiguration>(offset);
14365            // Vector header
14366            let max_ordinal: u64 = self.max_ordinal_present();
14367            encoder.write_num(max_ordinal, offset);
14368            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14369            // Calling encoder.out_of_line_offset(0) is not allowed.
14370            if max_ordinal == 0 {
14371                return Ok(());
14372            }
14373            depth.increment()?;
14374            let envelope_size = 8;
14375            let bytes_len = max_ordinal as usize * envelope_size;
14376            #[allow(unused_variables)]
14377            let offset = encoder.out_of_line_offset(bytes_len);
14378            let mut _prev_end_offset: usize = 0;
14379            if 1 > max_ordinal {
14380                return Ok(());
14381            }
14382
14383            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14384            // are envelope_size bytes.
14385            let cur_offset: usize = (1 - 1) * envelope_size;
14386
14387            // Zero reserved fields.
14388            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14389
14390            // Safety:
14391            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14392            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14393            //   envelope_size bytes, there is always sufficient room.
14394            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14395                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14396                encoder,
14397                offset + cur_offset,
14398                depth,
14399            )?;
14400
14401            _prev_end_offset = cur_offset + envelope_size;
14402            if 2 > max_ordinal {
14403                return Ok(());
14404            }
14405
14406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14407            // are envelope_size bytes.
14408            let cur_offset: usize = (2 - 1) * envelope_size;
14409
14410            // Zero reserved fields.
14411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14412
14413            // Safety:
14414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14416            //   envelope_size bytes, there is always sufficient room.
14417            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14418                self.source_name.as_ref().map(
14419                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14420                ),
14421                encoder,
14422                offset + cur_offset,
14423                depth,
14424            )?;
14425
14426            _prev_end_offset = cur_offset + envelope_size;
14427            if 3 > max_ordinal {
14428                return Ok(());
14429            }
14430
14431            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14432            // are envelope_size bytes.
14433            let cur_offset: usize = (3 - 1) * envelope_size;
14434
14435            // Zero reserved fields.
14436            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14437
14438            // Safety:
14439            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14440            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14441            //   envelope_size bytes, there is always sufficient room.
14442            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14443                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14444                encoder,
14445                offset + cur_offset,
14446                depth,
14447            )?;
14448
14449            _prev_end_offset = cur_offset + envelope_size;
14450            if 4 > max_ordinal {
14451                return Ok(());
14452            }
14453
14454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14455            // are envelope_size bytes.
14456            let cur_offset: usize = (4 - 1) * envelope_size;
14457
14458            // Zero reserved fields.
14459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14460
14461            // Safety:
14462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14464            //   envelope_size bytes, there is always sufficient room.
14465            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14466                self.target_name.as_ref().map(
14467                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14468                ),
14469                encoder,
14470                offset + cur_offset,
14471                depth,
14472            )?;
14473
14474            _prev_end_offset = cur_offset + envelope_size;
14475            if 5 > max_ordinal {
14476                return Ok(());
14477            }
14478
14479            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14480            // are envelope_size bytes.
14481            let cur_offset: usize = (5 - 1) * envelope_size;
14482
14483            // Zero reserved fields.
14484            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14485
14486            // Safety:
14487            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14488            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14489            //   envelope_size bytes, there is always sufficient room.
14490            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
14491                self.availability
14492                    .as_ref()
14493                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
14494                encoder,
14495                offset + cur_offset,
14496                depth,
14497            )?;
14498
14499            _prev_end_offset = cur_offset + envelope_size;
14500            if 6 > max_ordinal {
14501                return Ok(());
14502            }
14503
14504            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14505            // are envelope_size bytes.
14506            let cur_offset: usize = (6 - 1) * envelope_size;
14507
14508            // Zero reserved fields.
14509            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14510
14511            // Safety:
14512            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14513            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14514            //   envelope_size bytes, there is always sufficient room.
14515            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
14516            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
14517            encoder, offset + cur_offset, depth
14518        )?;
14519
14520            _prev_end_offset = cur_offset + envelope_size;
14521
14522            Ok(())
14523        }
14524    }
14525
14526    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferConfiguration {
14527        #[inline(always)]
14528        fn new_empty() -> Self {
14529            Self::default()
14530        }
14531
14532        unsafe fn decode(
14533            &mut self,
14534            decoder: &mut fidl::encoding::Decoder<'_, D>,
14535            offset: usize,
14536            mut depth: fidl::encoding::Depth,
14537        ) -> fidl::Result<()> {
14538            decoder.debug_check_bounds::<Self>(offset);
14539            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14540                None => return Err(fidl::Error::NotNullable),
14541                Some(len) => len,
14542            };
14543            // Calling decoder.out_of_line_offset(0) is not allowed.
14544            if len == 0 {
14545                return Ok(());
14546            };
14547            depth.increment()?;
14548            let envelope_size = 8;
14549            let bytes_len = len * envelope_size;
14550            let offset = decoder.out_of_line_offset(bytes_len)?;
14551            // Decode the envelope for each type.
14552            let mut _next_ordinal_to_read = 0;
14553            let mut next_offset = offset;
14554            let end_offset = offset + bytes_len;
14555            _next_ordinal_to_read += 1;
14556            if next_offset >= end_offset {
14557                return Ok(());
14558            }
14559
14560            // Decode unknown envelopes for gaps in ordinals.
14561            while _next_ordinal_to_read < 1 {
14562                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14563                _next_ordinal_to_read += 1;
14564                next_offset += envelope_size;
14565            }
14566
14567            let next_out_of_line = decoder.next_out_of_line();
14568            let handles_before = decoder.remaining_handles();
14569            if let Some((inlined, num_bytes, num_handles)) =
14570                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14571            {
14572                let member_inline_size =
14573                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14574                if inlined != (member_inline_size <= 4) {
14575                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14576                }
14577                let inner_offset;
14578                let mut inner_depth = depth.clone();
14579                if inlined {
14580                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14581                    inner_offset = next_offset;
14582                } else {
14583                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14584                    inner_depth.increment()?;
14585                }
14586                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14587                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14588                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14589                {
14590                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14591                }
14592                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14593                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14594                }
14595            }
14596
14597            next_offset += envelope_size;
14598            _next_ordinal_to_read += 1;
14599            if next_offset >= end_offset {
14600                return Ok(());
14601            }
14602
14603            // Decode unknown envelopes for gaps in ordinals.
14604            while _next_ordinal_to_read < 2 {
14605                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14606                _next_ordinal_to_read += 1;
14607                next_offset += envelope_size;
14608            }
14609
14610            let next_out_of_line = decoder.next_out_of_line();
14611            let handles_before = decoder.remaining_handles();
14612            if let Some((inlined, num_bytes, num_handles)) =
14613                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14614            {
14615                let member_inline_size =
14616                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14617                        decoder.context,
14618                    );
14619                if inlined != (member_inline_size <= 4) {
14620                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14621                }
14622                let inner_offset;
14623                let mut inner_depth = depth.clone();
14624                if inlined {
14625                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14626                    inner_offset = next_offset;
14627                } else {
14628                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14629                    inner_depth.increment()?;
14630                }
14631                let val_ref = self
14632                    .source_name
14633                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14634                fidl::decode!(
14635                    fidl::encoding::BoundedString<100>,
14636                    D,
14637                    val_ref,
14638                    decoder,
14639                    inner_offset,
14640                    inner_depth
14641                )?;
14642                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14643                {
14644                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14645                }
14646                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14647                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14648                }
14649            }
14650
14651            next_offset += envelope_size;
14652            _next_ordinal_to_read += 1;
14653            if next_offset >= end_offset {
14654                return Ok(());
14655            }
14656
14657            // Decode unknown envelopes for gaps in ordinals.
14658            while _next_ordinal_to_read < 3 {
14659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14660                _next_ordinal_to_read += 1;
14661                next_offset += envelope_size;
14662            }
14663
14664            let next_out_of_line = decoder.next_out_of_line();
14665            let handles_before = decoder.remaining_handles();
14666            if let Some((inlined, num_bytes, num_handles)) =
14667                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14668            {
14669                let member_inline_size =
14670                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14671                if inlined != (member_inline_size <= 4) {
14672                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14673                }
14674                let inner_offset;
14675                let mut inner_depth = depth.clone();
14676                if inlined {
14677                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14678                    inner_offset = next_offset;
14679                } else {
14680                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14681                    inner_depth.increment()?;
14682                }
14683                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14684                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14685                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14686                {
14687                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14688                }
14689                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14690                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14691                }
14692            }
14693
14694            next_offset += envelope_size;
14695            _next_ordinal_to_read += 1;
14696            if next_offset >= end_offset {
14697                return Ok(());
14698            }
14699
14700            // Decode unknown envelopes for gaps in ordinals.
14701            while _next_ordinal_to_read < 4 {
14702                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14703                _next_ordinal_to_read += 1;
14704                next_offset += envelope_size;
14705            }
14706
14707            let next_out_of_line = decoder.next_out_of_line();
14708            let handles_before = decoder.remaining_handles();
14709            if let Some((inlined, num_bytes, num_handles)) =
14710                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14711            {
14712                let member_inline_size =
14713                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14714                        decoder.context,
14715                    );
14716                if inlined != (member_inline_size <= 4) {
14717                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14718                }
14719                let inner_offset;
14720                let mut inner_depth = depth.clone();
14721                if inlined {
14722                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14723                    inner_offset = next_offset;
14724                } else {
14725                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14726                    inner_depth.increment()?;
14727                }
14728                let val_ref = self
14729                    .target_name
14730                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14731                fidl::decode!(
14732                    fidl::encoding::BoundedString<100>,
14733                    D,
14734                    val_ref,
14735                    decoder,
14736                    inner_offset,
14737                    inner_depth
14738                )?;
14739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14740                {
14741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14742                }
14743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14745                }
14746            }
14747
14748            next_offset += envelope_size;
14749            _next_ordinal_to_read += 1;
14750            if next_offset >= end_offset {
14751                return Ok(());
14752            }
14753
14754            // Decode unknown envelopes for gaps in ordinals.
14755            while _next_ordinal_to_read < 5 {
14756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14757                _next_ordinal_to_read += 1;
14758                next_offset += envelope_size;
14759            }
14760
14761            let next_out_of_line = decoder.next_out_of_line();
14762            let handles_before = decoder.remaining_handles();
14763            if let Some((inlined, num_bytes, num_handles)) =
14764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14765            {
14766                let member_inline_size =
14767                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14768                if inlined != (member_inline_size <= 4) {
14769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14770                }
14771                let inner_offset;
14772                let mut inner_depth = depth.clone();
14773                if inlined {
14774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14775                    inner_offset = next_offset;
14776                } else {
14777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14778                    inner_depth.increment()?;
14779                }
14780                let val_ref =
14781                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
14782                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
14783                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14784                {
14785                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14786                }
14787                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14788                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14789                }
14790            }
14791
14792            next_offset += envelope_size;
14793            _next_ordinal_to_read += 1;
14794            if next_offset >= end_offset {
14795                return Ok(());
14796            }
14797
14798            // Decode unknown envelopes for gaps in ordinals.
14799            while _next_ordinal_to_read < 6 {
14800                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14801                _next_ordinal_to_read += 1;
14802                next_offset += envelope_size;
14803            }
14804
14805            let next_out_of_line = decoder.next_out_of_line();
14806            let handles_before = decoder.remaining_handles();
14807            if let Some((inlined, num_bytes, num_handles)) =
14808                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14809            {
14810                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14811                if inlined != (member_inline_size <= 4) {
14812                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14813                }
14814                let inner_offset;
14815                let mut inner_depth = depth.clone();
14816                if inlined {
14817                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14818                    inner_offset = next_offset;
14819                } else {
14820                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14821                    inner_depth.increment()?;
14822                }
14823                let val_ref = self.source_dictionary.get_or_insert_with(|| {
14824                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14825                });
14826                fidl::decode!(
14827                    fidl::encoding::BoundedString<1024>,
14828                    D,
14829                    val_ref,
14830                    decoder,
14831                    inner_offset,
14832                    inner_depth
14833                )?;
14834                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14835                {
14836                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14837                }
14838                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14839                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14840                }
14841            }
14842
14843            next_offset += envelope_size;
14844
14845            // Decode the remaining unknown envelopes.
14846            while next_offset < end_offset {
14847                _next_ordinal_to_read += 1;
14848                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14849                next_offset += envelope_size;
14850            }
14851
14852            Ok(())
14853        }
14854    }
14855
14856    impl OfferDictionary {
14857        #[inline(always)]
14858        fn max_ordinal_present(&self) -> u64 {
14859            if let Some(_) = self.source_dictionary {
14860                return 7;
14861            }
14862            if let Some(_) = self.availability {
14863                return 6;
14864            }
14865            if let Some(_) = self.dependency_type {
14866                return 5;
14867            }
14868            if let Some(_) = self.target_name {
14869                return 4;
14870            }
14871            if let Some(_) = self.target {
14872                return 3;
14873            }
14874            if let Some(_) = self.source_name {
14875                return 2;
14876            }
14877            if let Some(_) = self.source {
14878                return 1;
14879            }
14880            0
14881        }
14882    }
14883
14884    impl fidl::encoding::ValueTypeMarker for OfferDictionary {
14885        type Borrowed<'a> = &'a Self;
14886        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14887            value
14888        }
14889    }
14890
14891    unsafe impl fidl::encoding::TypeMarker for OfferDictionary {
14892        type Owned = Self;
14893
14894        #[inline(always)]
14895        fn inline_align(_context: fidl::encoding::Context) -> usize {
14896            8
14897        }
14898
14899        #[inline(always)]
14900        fn inline_size(_context: fidl::encoding::Context) -> usize {
14901            16
14902        }
14903    }
14904
14905    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDictionary, D>
14906        for &OfferDictionary
14907    {
14908        unsafe fn encode(
14909            self,
14910            encoder: &mut fidl::encoding::Encoder<'_, D>,
14911            offset: usize,
14912            mut depth: fidl::encoding::Depth,
14913        ) -> fidl::Result<()> {
14914            encoder.debug_check_bounds::<OfferDictionary>(offset);
14915            // Vector header
14916            let max_ordinal: u64 = self.max_ordinal_present();
14917            encoder.write_num(max_ordinal, offset);
14918            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14919            // Calling encoder.out_of_line_offset(0) is not allowed.
14920            if max_ordinal == 0 {
14921                return Ok(());
14922            }
14923            depth.increment()?;
14924            let envelope_size = 8;
14925            let bytes_len = max_ordinal as usize * envelope_size;
14926            #[allow(unused_variables)]
14927            let offset = encoder.out_of_line_offset(bytes_len);
14928            let mut _prev_end_offset: usize = 0;
14929            if 1 > max_ordinal {
14930                return Ok(());
14931            }
14932
14933            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14934            // are envelope_size bytes.
14935            let cur_offset: usize = (1 - 1) * envelope_size;
14936
14937            // Zero reserved fields.
14938            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14939
14940            // Safety:
14941            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14942            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14943            //   envelope_size bytes, there is always sufficient room.
14944            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14945                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14946                encoder,
14947                offset + cur_offset,
14948                depth,
14949            )?;
14950
14951            _prev_end_offset = cur_offset + envelope_size;
14952            if 2 > max_ordinal {
14953                return Ok(());
14954            }
14955
14956            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14957            // are envelope_size bytes.
14958            let cur_offset: usize = (2 - 1) * envelope_size;
14959
14960            // Zero reserved fields.
14961            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14962
14963            // Safety:
14964            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14965            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14966            //   envelope_size bytes, there is always sufficient room.
14967            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14968                self.source_name.as_ref().map(
14969                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14970                ),
14971                encoder,
14972                offset + cur_offset,
14973                depth,
14974            )?;
14975
14976            _prev_end_offset = cur_offset + envelope_size;
14977            if 3 > max_ordinal {
14978                return Ok(());
14979            }
14980
14981            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14982            // are envelope_size bytes.
14983            let cur_offset: usize = (3 - 1) * envelope_size;
14984
14985            // Zero reserved fields.
14986            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14987
14988            // Safety:
14989            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14990            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14991            //   envelope_size bytes, there is always sufficient room.
14992            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14993                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14994                encoder,
14995                offset + cur_offset,
14996                depth,
14997            )?;
14998
14999            _prev_end_offset = cur_offset + envelope_size;
15000            if 4 > max_ordinal {
15001                return Ok(());
15002            }
15003
15004            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15005            // are envelope_size bytes.
15006            let cur_offset: usize = (4 - 1) * envelope_size;
15007
15008            // Zero reserved fields.
15009            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15010
15011            // Safety:
15012            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15013            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15014            //   envelope_size bytes, there is always sufficient room.
15015            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15016                self.target_name.as_ref().map(
15017                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15018                ),
15019                encoder,
15020                offset + cur_offset,
15021                depth,
15022            )?;
15023
15024            _prev_end_offset = cur_offset + envelope_size;
15025            if 5 > max_ordinal {
15026                return Ok(());
15027            }
15028
15029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15030            // are envelope_size bytes.
15031            let cur_offset: usize = (5 - 1) * envelope_size;
15032
15033            // Zero reserved fields.
15034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15035
15036            // Safety:
15037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15039            //   envelope_size bytes, there is always sufficient room.
15040            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
15041                self.dependency_type
15042                    .as_ref()
15043                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
15044                encoder,
15045                offset + cur_offset,
15046                depth,
15047            )?;
15048
15049            _prev_end_offset = cur_offset + envelope_size;
15050            if 6 > max_ordinal {
15051                return Ok(());
15052            }
15053
15054            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15055            // are envelope_size bytes.
15056            let cur_offset: usize = (6 - 1) * envelope_size;
15057
15058            // Zero reserved fields.
15059            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15060
15061            // Safety:
15062            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15063            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15064            //   envelope_size bytes, there is always sufficient room.
15065            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
15066                self.availability
15067                    .as_ref()
15068                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
15069                encoder,
15070                offset + cur_offset,
15071                depth,
15072            )?;
15073
15074            _prev_end_offset = cur_offset + envelope_size;
15075            if 7 > max_ordinal {
15076                return Ok(());
15077            }
15078
15079            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15080            // are envelope_size bytes.
15081            let cur_offset: usize = (7 - 1) * envelope_size;
15082
15083            // Zero reserved fields.
15084            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15085
15086            // Safety:
15087            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15088            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15089            //   envelope_size bytes, there is always sufficient room.
15090            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15091            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15092            encoder, offset + cur_offset, depth
15093        )?;
15094
15095            _prev_end_offset = cur_offset + envelope_size;
15096
15097            Ok(())
15098        }
15099    }
15100
15101    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDictionary {
15102        #[inline(always)]
15103        fn new_empty() -> Self {
15104            Self::default()
15105        }
15106
15107        unsafe fn decode(
15108            &mut self,
15109            decoder: &mut fidl::encoding::Decoder<'_, D>,
15110            offset: usize,
15111            mut depth: fidl::encoding::Depth,
15112        ) -> fidl::Result<()> {
15113            decoder.debug_check_bounds::<Self>(offset);
15114            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15115                None => return Err(fidl::Error::NotNullable),
15116                Some(len) => len,
15117            };
15118            // Calling decoder.out_of_line_offset(0) is not allowed.
15119            if len == 0 {
15120                return Ok(());
15121            };
15122            depth.increment()?;
15123            let envelope_size = 8;
15124            let bytes_len = len * envelope_size;
15125            let offset = decoder.out_of_line_offset(bytes_len)?;
15126            // Decode the envelope for each type.
15127            let mut _next_ordinal_to_read = 0;
15128            let mut next_offset = offset;
15129            let end_offset = offset + bytes_len;
15130            _next_ordinal_to_read += 1;
15131            if next_offset >= end_offset {
15132                return Ok(());
15133            }
15134
15135            // Decode unknown envelopes for gaps in ordinals.
15136            while _next_ordinal_to_read < 1 {
15137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15138                _next_ordinal_to_read += 1;
15139                next_offset += envelope_size;
15140            }
15141
15142            let next_out_of_line = decoder.next_out_of_line();
15143            let handles_before = decoder.remaining_handles();
15144            if let Some((inlined, num_bytes, num_handles)) =
15145                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15146            {
15147                let member_inline_size =
15148                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15149                if inlined != (member_inline_size <= 4) {
15150                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15151                }
15152                let inner_offset;
15153                let mut inner_depth = depth.clone();
15154                if inlined {
15155                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15156                    inner_offset = next_offset;
15157                } else {
15158                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15159                    inner_depth.increment()?;
15160                }
15161                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15162                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15163                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15164                {
15165                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15166                }
15167                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15168                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15169                }
15170            }
15171
15172            next_offset += envelope_size;
15173            _next_ordinal_to_read += 1;
15174            if next_offset >= end_offset {
15175                return Ok(());
15176            }
15177
15178            // Decode unknown envelopes for gaps in ordinals.
15179            while _next_ordinal_to_read < 2 {
15180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15181                _next_ordinal_to_read += 1;
15182                next_offset += envelope_size;
15183            }
15184
15185            let next_out_of_line = decoder.next_out_of_line();
15186            let handles_before = decoder.remaining_handles();
15187            if let Some((inlined, num_bytes, num_handles)) =
15188                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15189            {
15190                let member_inline_size =
15191                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15192                        decoder.context,
15193                    );
15194                if inlined != (member_inline_size <= 4) {
15195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15196                }
15197                let inner_offset;
15198                let mut inner_depth = depth.clone();
15199                if inlined {
15200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15201                    inner_offset = next_offset;
15202                } else {
15203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15204                    inner_depth.increment()?;
15205                }
15206                let val_ref = self
15207                    .source_name
15208                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15209                fidl::decode!(
15210                    fidl::encoding::BoundedString<100>,
15211                    D,
15212                    val_ref,
15213                    decoder,
15214                    inner_offset,
15215                    inner_depth
15216                )?;
15217                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15218                {
15219                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15220                }
15221                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15222                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15223                }
15224            }
15225
15226            next_offset += envelope_size;
15227            _next_ordinal_to_read += 1;
15228            if next_offset >= end_offset {
15229                return Ok(());
15230            }
15231
15232            // Decode unknown envelopes for gaps in ordinals.
15233            while _next_ordinal_to_read < 3 {
15234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15235                _next_ordinal_to_read += 1;
15236                next_offset += envelope_size;
15237            }
15238
15239            let next_out_of_line = decoder.next_out_of_line();
15240            let handles_before = decoder.remaining_handles();
15241            if let Some((inlined, num_bytes, num_handles)) =
15242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15243            {
15244                let member_inline_size =
15245                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15246                if inlined != (member_inline_size <= 4) {
15247                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15248                }
15249                let inner_offset;
15250                let mut inner_depth = depth.clone();
15251                if inlined {
15252                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15253                    inner_offset = next_offset;
15254                } else {
15255                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15256                    inner_depth.increment()?;
15257                }
15258                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15259                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15260                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15261                {
15262                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15263                }
15264                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15265                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15266                }
15267            }
15268
15269            next_offset += envelope_size;
15270            _next_ordinal_to_read += 1;
15271            if next_offset >= end_offset {
15272                return Ok(());
15273            }
15274
15275            // Decode unknown envelopes for gaps in ordinals.
15276            while _next_ordinal_to_read < 4 {
15277                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15278                _next_ordinal_to_read += 1;
15279                next_offset += envelope_size;
15280            }
15281
15282            let next_out_of_line = decoder.next_out_of_line();
15283            let handles_before = decoder.remaining_handles();
15284            if let Some((inlined, num_bytes, num_handles)) =
15285                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15286            {
15287                let member_inline_size =
15288                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15289                        decoder.context,
15290                    );
15291                if inlined != (member_inline_size <= 4) {
15292                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15293                }
15294                let inner_offset;
15295                let mut inner_depth = depth.clone();
15296                if inlined {
15297                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15298                    inner_offset = next_offset;
15299                } else {
15300                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15301                    inner_depth.increment()?;
15302                }
15303                let val_ref = self
15304                    .target_name
15305                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15306                fidl::decode!(
15307                    fidl::encoding::BoundedString<100>,
15308                    D,
15309                    val_ref,
15310                    decoder,
15311                    inner_offset,
15312                    inner_depth
15313                )?;
15314                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15315                {
15316                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15317                }
15318                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15319                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15320                }
15321            }
15322
15323            next_offset += envelope_size;
15324            _next_ordinal_to_read += 1;
15325            if next_offset >= end_offset {
15326                return Ok(());
15327            }
15328
15329            // Decode unknown envelopes for gaps in ordinals.
15330            while _next_ordinal_to_read < 5 {
15331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15332                _next_ordinal_to_read += 1;
15333                next_offset += envelope_size;
15334            }
15335
15336            let next_out_of_line = decoder.next_out_of_line();
15337            let handles_before = decoder.remaining_handles();
15338            if let Some((inlined, num_bytes, num_handles)) =
15339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15340            {
15341                let member_inline_size =
15342                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15343                if inlined != (member_inline_size <= 4) {
15344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15345                }
15346                let inner_offset;
15347                let mut inner_depth = depth.clone();
15348                if inlined {
15349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15350                    inner_offset = next_offset;
15351                } else {
15352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15353                    inner_depth.increment()?;
15354                }
15355                let val_ref =
15356                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
15357                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
15358                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15359                {
15360                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15361                }
15362                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15363                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15364                }
15365            }
15366
15367            next_offset += envelope_size;
15368            _next_ordinal_to_read += 1;
15369            if next_offset >= end_offset {
15370                return Ok(());
15371            }
15372
15373            // Decode unknown envelopes for gaps in ordinals.
15374            while _next_ordinal_to_read < 6 {
15375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15376                _next_ordinal_to_read += 1;
15377                next_offset += envelope_size;
15378            }
15379
15380            let next_out_of_line = decoder.next_out_of_line();
15381            let handles_before = decoder.remaining_handles();
15382            if let Some((inlined, num_bytes, num_handles)) =
15383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15384            {
15385                let member_inline_size =
15386                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15387                if inlined != (member_inline_size <= 4) {
15388                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15389                }
15390                let inner_offset;
15391                let mut inner_depth = depth.clone();
15392                if inlined {
15393                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15394                    inner_offset = next_offset;
15395                } else {
15396                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15397                    inner_depth.increment()?;
15398                }
15399                let val_ref =
15400                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
15401                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
15402                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15403                {
15404                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15405                }
15406                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15407                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15408                }
15409            }
15410
15411            next_offset += envelope_size;
15412            _next_ordinal_to_read += 1;
15413            if next_offset >= end_offset {
15414                return Ok(());
15415            }
15416
15417            // Decode unknown envelopes for gaps in ordinals.
15418            while _next_ordinal_to_read < 7 {
15419                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15420                _next_ordinal_to_read += 1;
15421                next_offset += envelope_size;
15422            }
15423
15424            let next_out_of_line = decoder.next_out_of_line();
15425            let handles_before = decoder.remaining_handles();
15426            if let Some((inlined, num_bytes, num_handles)) =
15427                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15428            {
15429                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15430                if inlined != (member_inline_size <= 4) {
15431                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15432                }
15433                let inner_offset;
15434                let mut inner_depth = depth.clone();
15435                if inlined {
15436                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15437                    inner_offset = next_offset;
15438                } else {
15439                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15440                    inner_depth.increment()?;
15441                }
15442                let val_ref = self.source_dictionary.get_or_insert_with(|| {
15443                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
15444                });
15445                fidl::decode!(
15446                    fidl::encoding::BoundedString<1024>,
15447                    D,
15448                    val_ref,
15449                    decoder,
15450                    inner_offset,
15451                    inner_depth
15452                )?;
15453                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15454                {
15455                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15456                }
15457                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15458                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15459                }
15460            }
15461
15462            next_offset += envelope_size;
15463
15464            // Decode the remaining unknown envelopes.
15465            while next_offset < end_offset {
15466                _next_ordinal_to_read += 1;
15467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15468                next_offset += envelope_size;
15469            }
15470
15471            Ok(())
15472        }
15473    }
15474
15475    impl OfferDirectory {
15476        #[inline(always)]
15477        fn max_ordinal_present(&self) -> u64 {
15478            if let Some(_) = self.source_dictionary {
15479                return 9;
15480            }
15481            if let Some(_) = self.availability {
15482                return 8;
15483            }
15484            if let Some(_) = self.dependency_type {
15485                return 7;
15486            }
15487            if let Some(_) = self.subdir {
15488                return 6;
15489            }
15490            if let Some(_) = self.rights {
15491                return 5;
15492            }
15493            if let Some(_) = self.target_name {
15494                return 4;
15495            }
15496            if let Some(_) = self.target {
15497                return 3;
15498            }
15499            if let Some(_) = self.source_name {
15500                return 2;
15501            }
15502            if let Some(_) = self.source {
15503                return 1;
15504            }
15505            0
15506        }
15507    }
15508
15509    impl fidl::encoding::ValueTypeMarker for OfferDirectory {
15510        type Borrowed<'a> = &'a Self;
15511        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15512            value
15513        }
15514    }
15515
15516    unsafe impl fidl::encoding::TypeMarker for OfferDirectory {
15517        type Owned = Self;
15518
15519        #[inline(always)]
15520        fn inline_align(_context: fidl::encoding::Context) -> usize {
15521            8
15522        }
15523
15524        #[inline(always)]
15525        fn inline_size(_context: fidl::encoding::Context) -> usize {
15526            16
15527        }
15528    }
15529
15530    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDirectory, D>
15531        for &OfferDirectory
15532    {
15533        unsafe fn encode(
15534            self,
15535            encoder: &mut fidl::encoding::Encoder<'_, D>,
15536            offset: usize,
15537            mut depth: fidl::encoding::Depth,
15538        ) -> fidl::Result<()> {
15539            encoder.debug_check_bounds::<OfferDirectory>(offset);
15540            // Vector header
15541            let max_ordinal: u64 = self.max_ordinal_present();
15542            encoder.write_num(max_ordinal, offset);
15543            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15544            // Calling encoder.out_of_line_offset(0) is not allowed.
15545            if max_ordinal == 0 {
15546                return Ok(());
15547            }
15548            depth.increment()?;
15549            let envelope_size = 8;
15550            let bytes_len = max_ordinal as usize * envelope_size;
15551            #[allow(unused_variables)]
15552            let offset = encoder.out_of_line_offset(bytes_len);
15553            let mut _prev_end_offset: usize = 0;
15554            if 1 > max_ordinal {
15555                return Ok(());
15556            }
15557
15558            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15559            // are envelope_size bytes.
15560            let cur_offset: usize = (1 - 1) * envelope_size;
15561
15562            // Zero reserved fields.
15563            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15564
15565            // Safety:
15566            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15567            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15568            //   envelope_size bytes, there is always sufficient room.
15569            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15570                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15571                encoder,
15572                offset + cur_offset,
15573                depth,
15574            )?;
15575
15576            _prev_end_offset = cur_offset + envelope_size;
15577            if 2 > max_ordinal {
15578                return Ok(());
15579            }
15580
15581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15582            // are envelope_size bytes.
15583            let cur_offset: usize = (2 - 1) * envelope_size;
15584
15585            // Zero reserved fields.
15586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15587
15588            // Safety:
15589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15591            //   envelope_size bytes, there is always sufficient room.
15592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15593                self.source_name.as_ref().map(
15594                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15595                ),
15596                encoder,
15597                offset + cur_offset,
15598                depth,
15599            )?;
15600
15601            _prev_end_offset = cur_offset + envelope_size;
15602            if 3 > max_ordinal {
15603                return Ok(());
15604            }
15605
15606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15607            // are envelope_size bytes.
15608            let cur_offset: usize = (3 - 1) * envelope_size;
15609
15610            // Zero reserved fields.
15611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15612
15613            // Safety:
15614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15616            //   envelope_size bytes, there is always sufficient room.
15617            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15618                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15619                encoder,
15620                offset + cur_offset,
15621                depth,
15622            )?;
15623
15624            _prev_end_offset = cur_offset + envelope_size;
15625            if 4 > max_ordinal {
15626                return Ok(());
15627            }
15628
15629            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15630            // are envelope_size bytes.
15631            let cur_offset: usize = (4 - 1) * envelope_size;
15632
15633            // Zero reserved fields.
15634            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15635
15636            // Safety:
15637            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15638            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15639            //   envelope_size bytes, there is always sufficient room.
15640            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15641                self.target_name.as_ref().map(
15642                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15643                ),
15644                encoder,
15645                offset + cur_offset,
15646                depth,
15647            )?;
15648
15649            _prev_end_offset = cur_offset + envelope_size;
15650            if 5 > max_ordinal {
15651                return Ok(());
15652            }
15653
15654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15655            // are envelope_size bytes.
15656            let cur_offset: usize = (5 - 1) * envelope_size;
15657
15658            // Zero reserved fields.
15659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15660
15661            // Safety:
15662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15664            //   envelope_size bytes, there is always sufficient room.
15665            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io_common::Operations, D>(
15666                self.rights.as_ref().map(
15667                    <fidl_fuchsia_io_common::Operations as fidl::encoding::ValueTypeMarker>::borrow,
15668                ),
15669                encoder,
15670                offset + cur_offset,
15671                depth,
15672            )?;
15673
15674            _prev_end_offset = cur_offset + envelope_size;
15675            if 6 > max_ordinal {
15676                return Ok(());
15677            }
15678
15679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15680            // are envelope_size bytes.
15681            let cur_offset: usize = (6 - 1) * envelope_size;
15682
15683            // Zero reserved fields.
15684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15685
15686            // Safety:
15687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15689            //   envelope_size bytes, there is always sufficient room.
15690            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15691            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15692            encoder, offset + cur_offset, depth
15693        )?;
15694
15695            _prev_end_offset = cur_offset + envelope_size;
15696            if 7 > max_ordinal {
15697                return Ok(());
15698            }
15699
15700            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15701            // are envelope_size bytes.
15702            let cur_offset: usize = (7 - 1) * envelope_size;
15703
15704            // Zero reserved fields.
15705            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15706
15707            // Safety:
15708            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15709            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15710            //   envelope_size bytes, there is always sufficient room.
15711            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
15712                self.dependency_type
15713                    .as_ref()
15714                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
15715                encoder,
15716                offset + cur_offset,
15717                depth,
15718            )?;
15719
15720            _prev_end_offset = cur_offset + envelope_size;
15721            if 8 > max_ordinal {
15722                return Ok(());
15723            }
15724
15725            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15726            // are envelope_size bytes.
15727            let cur_offset: usize = (8 - 1) * envelope_size;
15728
15729            // Zero reserved fields.
15730            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15731
15732            // Safety:
15733            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15734            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15735            //   envelope_size bytes, there is always sufficient room.
15736            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
15737                self.availability
15738                    .as_ref()
15739                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
15740                encoder,
15741                offset + cur_offset,
15742                depth,
15743            )?;
15744
15745            _prev_end_offset = cur_offset + envelope_size;
15746            if 9 > max_ordinal {
15747                return Ok(());
15748            }
15749
15750            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15751            // are envelope_size bytes.
15752            let cur_offset: usize = (9 - 1) * envelope_size;
15753
15754            // Zero reserved fields.
15755            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15756
15757            // Safety:
15758            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15759            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15760            //   envelope_size bytes, there is always sufficient room.
15761            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15762            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15763            encoder, offset + cur_offset, depth
15764        )?;
15765
15766            _prev_end_offset = cur_offset + envelope_size;
15767
15768            Ok(())
15769        }
15770    }
15771
15772    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDirectory {
15773        #[inline(always)]
15774        fn new_empty() -> Self {
15775            Self::default()
15776        }
15777
15778        unsafe fn decode(
15779            &mut self,
15780            decoder: &mut fidl::encoding::Decoder<'_, D>,
15781            offset: usize,
15782            mut depth: fidl::encoding::Depth,
15783        ) -> fidl::Result<()> {
15784            decoder.debug_check_bounds::<Self>(offset);
15785            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15786                None => return Err(fidl::Error::NotNullable),
15787                Some(len) => len,
15788            };
15789            // Calling decoder.out_of_line_offset(0) is not allowed.
15790            if len == 0 {
15791                return Ok(());
15792            };
15793            depth.increment()?;
15794            let envelope_size = 8;
15795            let bytes_len = len * envelope_size;
15796            let offset = decoder.out_of_line_offset(bytes_len)?;
15797            // Decode the envelope for each type.
15798            let mut _next_ordinal_to_read = 0;
15799            let mut next_offset = offset;
15800            let end_offset = offset + bytes_len;
15801            _next_ordinal_to_read += 1;
15802            if next_offset >= end_offset {
15803                return Ok(());
15804            }
15805
15806            // Decode unknown envelopes for gaps in ordinals.
15807            while _next_ordinal_to_read < 1 {
15808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15809                _next_ordinal_to_read += 1;
15810                next_offset += envelope_size;
15811            }
15812
15813            let next_out_of_line = decoder.next_out_of_line();
15814            let handles_before = decoder.remaining_handles();
15815            if let Some((inlined, num_bytes, num_handles)) =
15816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15817            {
15818                let member_inline_size =
15819                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15820                if inlined != (member_inline_size <= 4) {
15821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15822                }
15823                let inner_offset;
15824                let mut inner_depth = depth.clone();
15825                if inlined {
15826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15827                    inner_offset = next_offset;
15828                } else {
15829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15830                    inner_depth.increment()?;
15831                }
15832                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15833                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15834                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15835                {
15836                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15837                }
15838                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15839                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15840                }
15841            }
15842
15843            next_offset += envelope_size;
15844            _next_ordinal_to_read += 1;
15845            if next_offset >= end_offset {
15846                return Ok(());
15847            }
15848
15849            // Decode unknown envelopes for gaps in ordinals.
15850            while _next_ordinal_to_read < 2 {
15851                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15852                _next_ordinal_to_read += 1;
15853                next_offset += envelope_size;
15854            }
15855
15856            let next_out_of_line = decoder.next_out_of_line();
15857            let handles_before = decoder.remaining_handles();
15858            if let Some((inlined, num_bytes, num_handles)) =
15859                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15860            {
15861                let member_inline_size =
15862                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15863                        decoder.context,
15864                    );
15865                if inlined != (member_inline_size <= 4) {
15866                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15867                }
15868                let inner_offset;
15869                let mut inner_depth = depth.clone();
15870                if inlined {
15871                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15872                    inner_offset = next_offset;
15873                } else {
15874                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15875                    inner_depth.increment()?;
15876                }
15877                let val_ref = self
15878                    .source_name
15879                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15880                fidl::decode!(
15881                    fidl::encoding::BoundedString<100>,
15882                    D,
15883                    val_ref,
15884                    decoder,
15885                    inner_offset,
15886                    inner_depth
15887                )?;
15888                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15889                {
15890                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15891                }
15892                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15893                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15894                }
15895            }
15896
15897            next_offset += envelope_size;
15898            _next_ordinal_to_read += 1;
15899            if next_offset >= end_offset {
15900                return Ok(());
15901            }
15902
15903            // Decode unknown envelopes for gaps in ordinals.
15904            while _next_ordinal_to_read < 3 {
15905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15906                _next_ordinal_to_read += 1;
15907                next_offset += envelope_size;
15908            }
15909
15910            let next_out_of_line = decoder.next_out_of_line();
15911            let handles_before = decoder.remaining_handles();
15912            if let Some((inlined, num_bytes, num_handles)) =
15913                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15914            {
15915                let member_inline_size =
15916                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15917                if inlined != (member_inline_size <= 4) {
15918                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15919                }
15920                let inner_offset;
15921                let mut inner_depth = depth.clone();
15922                if inlined {
15923                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15924                    inner_offset = next_offset;
15925                } else {
15926                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15927                    inner_depth.increment()?;
15928                }
15929                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15930                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15932                {
15933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15934                }
15935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15937                }
15938            }
15939
15940            next_offset += envelope_size;
15941            _next_ordinal_to_read += 1;
15942            if next_offset >= end_offset {
15943                return Ok(());
15944            }
15945
15946            // Decode unknown envelopes for gaps in ordinals.
15947            while _next_ordinal_to_read < 4 {
15948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15949                _next_ordinal_to_read += 1;
15950                next_offset += envelope_size;
15951            }
15952
15953            let next_out_of_line = decoder.next_out_of_line();
15954            let handles_before = decoder.remaining_handles();
15955            if let Some((inlined, num_bytes, num_handles)) =
15956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15957            {
15958                let member_inline_size =
15959                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15960                        decoder.context,
15961                    );
15962                if inlined != (member_inline_size <= 4) {
15963                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15964                }
15965                let inner_offset;
15966                let mut inner_depth = depth.clone();
15967                if inlined {
15968                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15969                    inner_offset = next_offset;
15970                } else {
15971                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15972                    inner_depth.increment()?;
15973                }
15974                let val_ref = self
15975                    .target_name
15976                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15977                fidl::decode!(
15978                    fidl::encoding::BoundedString<100>,
15979                    D,
15980                    val_ref,
15981                    decoder,
15982                    inner_offset,
15983                    inner_depth
15984                )?;
15985                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15986                {
15987                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15988                }
15989                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15990                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15991                }
15992            }
15993
15994            next_offset += envelope_size;
15995            _next_ordinal_to_read += 1;
15996            if next_offset >= end_offset {
15997                return Ok(());
15998            }
15999
16000            // Decode unknown envelopes for gaps in ordinals.
16001            while _next_ordinal_to_read < 5 {
16002                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16003                _next_ordinal_to_read += 1;
16004                next_offset += envelope_size;
16005            }
16006
16007            let next_out_of_line = decoder.next_out_of_line();
16008            let handles_before = decoder.remaining_handles();
16009            if let Some((inlined, num_bytes, num_handles)) =
16010                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16011            {
16012                let member_inline_size =
16013                    <fidl_fuchsia_io_common::Operations as fidl::encoding::TypeMarker>::inline_size(
16014                        decoder.context,
16015                    );
16016                if inlined != (member_inline_size <= 4) {
16017                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16018                }
16019                let inner_offset;
16020                let mut inner_depth = depth.clone();
16021                if inlined {
16022                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16023                    inner_offset = next_offset;
16024                } else {
16025                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16026                    inner_depth.increment()?;
16027                }
16028                let val_ref = self
16029                    .rights
16030                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_io_common::Operations, D));
16031                fidl::decode!(
16032                    fidl_fuchsia_io_common::Operations,
16033                    D,
16034                    val_ref,
16035                    decoder,
16036                    inner_offset,
16037                    inner_depth
16038                )?;
16039                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16040                {
16041                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16042                }
16043                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16044                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16045                }
16046            }
16047
16048            next_offset += envelope_size;
16049            _next_ordinal_to_read += 1;
16050            if next_offset >= end_offset {
16051                return Ok(());
16052            }
16053
16054            // Decode unknown envelopes for gaps in ordinals.
16055            while _next_ordinal_to_read < 6 {
16056                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16057                _next_ordinal_to_read += 1;
16058                next_offset += envelope_size;
16059            }
16060
16061            let next_out_of_line = decoder.next_out_of_line();
16062            let handles_before = decoder.remaining_handles();
16063            if let Some((inlined, num_bytes, num_handles)) =
16064                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16065            {
16066                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16067                if inlined != (member_inline_size <= 4) {
16068                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16069                }
16070                let inner_offset;
16071                let mut inner_depth = depth.clone();
16072                if inlined {
16073                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16074                    inner_offset = next_offset;
16075                } else {
16076                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16077                    inner_depth.increment()?;
16078                }
16079                let val_ref = self.subdir.get_or_insert_with(|| {
16080                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
16081                });
16082                fidl::decode!(
16083                    fidl::encoding::BoundedString<1024>,
16084                    D,
16085                    val_ref,
16086                    decoder,
16087                    inner_offset,
16088                    inner_depth
16089                )?;
16090                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16091                {
16092                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16093                }
16094                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16095                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16096                }
16097            }
16098
16099            next_offset += envelope_size;
16100            _next_ordinal_to_read += 1;
16101            if next_offset >= end_offset {
16102                return Ok(());
16103            }
16104
16105            // Decode unknown envelopes for gaps in ordinals.
16106            while _next_ordinal_to_read < 7 {
16107                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16108                _next_ordinal_to_read += 1;
16109                next_offset += envelope_size;
16110            }
16111
16112            let next_out_of_line = decoder.next_out_of_line();
16113            let handles_before = decoder.remaining_handles();
16114            if let Some((inlined, num_bytes, num_handles)) =
16115                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16116            {
16117                let member_inline_size =
16118                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16119                if inlined != (member_inline_size <= 4) {
16120                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16121                }
16122                let inner_offset;
16123                let mut inner_depth = depth.clone();
16124                if inlined {
16125                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16126                    inner_offset = next_offset;
16127                } else {
16128                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16129                    inner_depth.increment()?;
16130                }
16131                let val_ref =
16132                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
16133                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
16134                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16135                {
16136                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16137                }
16138                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16139                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16140                }
16141            }
16142
16143            next_offset += envelope_size;
16144            _next_ordinal_to_read += 1;
16145            if next_offset >= end_offset {
16146                return Ok(());
16147            }
16148
16149            // Decode unknown envelopes for gaps in ordinals.
16150            while _next_ordinal_to_read < 8 {
16151                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16152                _next_ordinal_to_read += 1;
16153                next_offset += envelope_size;
16154            }
16155
16156            let next_out_of_line = decoder.next_out_of_line();
16157            let handles_before = decoder.remaining_handles();
16158            if let Some((inlined, num_bytes, num_handles)) =
16159                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16160            {
16161                let member_inline_size =
16162                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16163                if inlined != (member_inline_size <= 4) {
16164                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16165                }
16166                let inner_offset;
16167                let mut inner_depth = depth.clone();
16168                if inlined {
16169                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16170                    inner_offset = next_offset;
16171                } else {
16172                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16173                    inner_depth.increment()?;
16174                }
16175                let val_ref =
16176                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
16177                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
16178                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16179                {
16180                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16181                }
16182                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16183                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16184                }
16185            }
16186
16187            next_offset += envelope_size;
16188            _next_ordinal_to_read += 1;
16189            if next_offset >= end_offset {
16190                return Ok(());
16191            }
16192
16193            // Decode unknown envelopes for gaps in ordinals.
16194            while _next_ordinal_to_read < 9 {
16195                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16196                _next_ordinal_to_read += 1;
16197                next_offset += envelope_size;
16198            }
16199
16200            let next_out_of_line = decoder.next_out_of_line();
16201            let handles_before = decoder.remaining_handles();
16202            if let Some((inlined, num_bytes, num_handles)) =
16203                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16204            {
16205                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16206                if inlined != (member_inline_size <= 4) {
16207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16208                }
16209                let inner_offset;
16210                let mut inner_depth = depth.clone();
16211                if inlined {
16212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16213                    inner_offset = next_offset;
16214                } else {
16215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16216                    inner_depth.increment()?;
16217                }
16218                let val_ref = self.source_dictionary.get_or_insert_with(|| {
16219                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
16220                });
16221                fidl::decode!(
16222                    fidl::encoding::BoundedString<1024>,
16223                    D,
16224                    val_ref,
16225                    decoder,
16226                    inner_offset,
16227                    inner_depth
16228                )?;
16229                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16230                {
16231                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16232                }
16233                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16234                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16235                }
16236            }
16237
16238            next_offset += envelope_size;
16239
16240            // Decode the remaining unknown envelopes.
16241            while next_offset < end_offset {
16242                _next_ordinal_to_read += 1;
16243                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16244                next_offset += envelope_size;
16245            }
16246
16247            Ok(())
16248        }
16249    }
16250
16251    impl OfferEventStream {
16252        #[inline(always)]
16253        fn max_ordinal_present(&self) -> u64 {
16254            if let Some(_) = self.availability {
16255                return 7;
16256            }
16257            if let Some(_) = self.target_name {
16258                return 5;
16259            }
16260            if let Some(_) = self.target {
16261                return 4;
16262            }
16263            if let Some(_) = self.scope {
16264                return 3;
16265            }
16266            if let Some(_) = self.source_name {
16267                return 2;
16268            }
16269            if let Some(_) = self.source {
16270                return 1;
16271            }
16272            0
16273        }
16274    }
16275
16276    impl fidl::encoding::ValueTypeMarker for OfferEventStream {
16277        type Borrowed<'a> = &'a Self;
16278        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16279            value
16280        }
16281    }
16282
16283    unsafe impl fidl::encoding::TypeMarker for OfferEventStream {
16284        type Owned = Self;
16285
16286        #[inline(always)]
16287        fn inline_align(_context: fidl::encoding::Context) -> usize {
16288            8
16289        }
16290
16291        #[inline(always)]
16292        fn inline_size(_context: fidl::encoding::Context) -> usize {
16293            16
16294        }
16295    }
16296
16297    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferEventStream, D>
16298        for &OfferEventStream
16299    {
16300        unsafe fn encode(
16301            self,
16302            encoder: &mut fidl::encoding::Encoder<'_, D>,
16303            offset: usize,
16304            mut depth: fidl::encoding::Depth,
16305        ) -> fidl::Result<()> {
16306            encoder.debug_check_bounds::<OfferEventStream>(offset);
16307            // Vector header
16308            let max_ordinal: u64 = self.max_ordinal_present();
16309            encoder.write_num(max_ordinal, offset);
16310            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16311            // Calling encoder.out_of_line_offset(0) is not allowed.
16312            if max_ordinal == 0 {
16313                return Ok(());
16314            }
16315            depth.increment()?;
16316            let envelope_size = 8;
16317            let bytes_len = max_ordinal as usize * envelope_size;
16318            #[allow(unused_variables)]
16319            let offset = encoder.out_of_line_offset(bytes_len);
16320            let mut _prev_end_offset: usize = 0;
16321            if 1 > max_ordinal {
16322                return Ok(());
16323            }
16324
16325            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16326            // are envelope_size bytes.
16327            let cur_offset: usize = (1 - 1) * envelope_size;
16328
16329            // Zero reserved fields.
16330            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16331
16332            // Safety:
16333            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16334            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16335            //   envelope_size bytes, there is always sufficient room.
16336            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16337                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16338                encoder,
16339                offset + cur_offset,
16340                depth,
16341            )?;
16342
16343            _prev_end_offset = cur_offset + envelope_size;
16344            if 2 > max_ordinal {
16345                return Ok(());
16346            }
16347
16348            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16349            // are envelope_size bytes.
16350            let cur_offset: usize = (2 - 1) * envelope_size;
16351
16352            // Zero reserved fields.
16353            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16354
16355            // Safety:
16356            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16357            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16358            //   envelope_size bytes, there is always sufficient room.
16359            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16360                self.source_name.as_ref().map(
16361                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16362                ),
16363                encoder,
16364                offset + cur_offset,
16365                depth,
16366            )?;
16367
16368            _prev_end_offset = cur_offset + envelope_size;
16369            if 3 > 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 = (3 - 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::<fidl::encoding::UnboundedVector<Ref>, D>(
16385            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
16386            encoder, offset + cur_offset, depth
16387        )?;
16388
16389            _prev_end_offset = cur_offset + envelope_size;
16390            if 4 > max_ordinal {
16391                return Ok(());
16392            }
16393
16394            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16395            // are envelope_size bytes.
16396            let cur_offset: usize = (4 - 1) * envelope_size;
16397
16398            // Zero reserved fields.
16399            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16400
16401            // Safety:
16402            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16403            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16404            //   envelope_size bytes, there is always sufficient room.
16405            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16406                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16407                encoder,
16408                offset + cur_offset,
16409                depth,
16410            )?;
16411
16412            _prev_end_offset = cur_offset + envelope_size;
16413            if 5 > max_ordinal {
16414                return Ok(());
16415            }
16416
16417            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16418            // are envelope_size bytes.
16419            let cur_offset: usize = (5 - 1) * envelope_size;
16420
16421            // Zero reserved fields.
16422            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16423
16424            // Safety:
16425            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16426            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16427            //   envelope_size bytes, there is always sufficient room.
16428            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16429                self.target_name.as_ref().map(
16430                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16431                ),
16432                encoder,
16433                offset + cur_offset,
16434                depth,
16435            )?;
16436
16437            _prev_end_offset = cur_offset + envelope_size;
16438            if 7 > max_ordinal {
16439                return Ok(());
16440            }
16441
16442            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16443            // are envelope_size bytes.
16444            let cur_offset: usize = (7 - 1) * envelope_size;
16445
16446            // Zero reserved fields.
16447            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16448
16449            // Safety:
16450            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16451            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16452            //   envelope_size bytes, there is always sufficient room.
16453            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
16454                self.availability
16455                    .as_ref()
16456                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
16457                encoder,
16458                offset + cur_offset,
16459                depth,
16460            )?;
16461
16462            _prev_end_offset = cur_offset + envelope_size;
16463
16464            Ok(())
16465        }
16466    }
16467
16468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferEventStream {
16469        #[inline(always)]
16470        fn new_empty() -> Self {
16471            Self::default()
16472        }
16473
16474        unsafe fn decode(
16475            &mut self,
16476            decoder: &mut fidl::encoding::Decoder<'_, D>,
16477            offset: usize,
16478            mut depth: fidl::encoding::Depth,
16479        ) -> fidl::Result<()> {
16480            decoder.debug_check_bounds::<Self>(offset);
16481            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16482                None => return Err(fidl::Error::NotNullable),
16483                Some(len) => len,
16484            };
16485            // Calling decoder.out_of_line_offset(0) is not allowed.
16486            if len == 0 {
16487                return Ok(());
16488            };
16489            depth.increment()?;
16490            let envelope_size = 8;
16491            let bytes_len = len * envelope_size;
16492            let offset = decoder.out_of_line_offset(bytes_len)?;
16493            // Decode the envelope for each type.
16494            let mut _next_ordinal_to_read = 0;
16495            let mut next_offset = offset;
16496            let end_offset = offset + bytes_len;
16497            _next_ordinal_to_read += 1;
16498            if next_offset >= end_offset {
16499                return Ok(());
16500            }
16501
16502            // Decode unknown envelopes for gaps in ordinals.
16503            while _next_ordinal_to_read < 1 {
16504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16505                _next_ordinal_to_read += 1;
16506                next_offset += envelope_size;
16507            }
16508
16509            let next_out_of_line = decoder.next_out_of_line();
16510            let handles_before = decoder.remaining_handles();
16511            if let Some((inlined, num_bytes, num_handles)) =
16512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16513            {
16514                let member_inline_size =
16515                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16516                if inlined != (member_inline_size <= 4) {
16517                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16518                }
16519                let inner_offset;
16520                let mut inner_depth = depth.clone();
16521                if inlined {
16522                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16523                    inner_offset = next_offset;
16524                } else {
16525                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16526                    inner_depth.increment()?;
16527                }
16528                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16529                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16531                {
16532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16533                }
16534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16536                }
16537            }
16538
16539            next_offset += envelope_size;
16540            _next_ordinal_to_read += 1;
16541            if next_offset >= end_offset {
16542                return Ok(());
16543            }
16544
16545            // Decode unknown envelopes for gaps in ordinals.
16546            while _next_ordinal_to_read < 2 {
16547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16548                _next_ordinal_to_read += 1;
16549                next_offset += envelope_size;
16550            }
16551
16552            let next_out_of_line = decoder.next_out_of_line();
16553            let handles_before = decoder.remaining_handles();
16554            if let Some((inlined, num_bytes, num_handles)) =
16555                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16556            {
16557                let member_inline_size =
16558                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16559                        decoder.context,
16560                    );
16561                if inlined != (member_inline_size <= 4) {
16562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16563                }
16564                let inner_offset;
16565                let mut inner_depth = depth.clone();
16566                if inlined {
16567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16568                    inner_offset = next_offset;
16569                } else {
16570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16571                    inner_depth.increment()?;
16572                }
16573                let val_ref = self
16574                    .source_name
16575                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16576                fidl::decode!(
16577                    fidl::encoding::BoundedString<100>,
16578                    D,
16579                    val_ref,
16580                    decoder,
16581                    inner_offset,
16582                    inner_depth
16583                )?;
16584                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16585                {
16586                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16587                }
16588                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16589                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16590                }
16591            }
16592
16593            next_offset += envelope_size;
16594            _next_ordinal_to_read += 1;
16595            if next_offset >= end_offset {
16596                return Ok(());
16597            }
16598
16599            // Decode unknown envelopes for gaps in ordinals.
16600            while _next_ordinal_to_read < 3 {
16601                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16602                _next_ordinal_to_read += 1;
16603                next_offset += envelope_size;
16604            }
16605
16606            let next_out_of_line = decoder.next_out_of_line();
16607            let handles_before = decoder.remaining_handles();
16608            if let Some((inlined, num_bytes, num_handles)) =
16609                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16610            {
16611                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16612                if inlined != (member_inline_size <= 4) {
16613                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16614                }
16615                let inner_offset;
16616                let mut inner_depth = depth.clone();
16617                if inlined {
16618                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16619                    inner_offset = next_offset;
16620                } else {
16621                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16622                    inner_depth.increment()?;
16623                }
16624                let val_ref = self.scope.get_or_insert_with(|| {
16625                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
16626                });
16627                fidl::decode!(
16628                    fidl::encoding::UnboundedVector<Ref>,
16629                    D,
16630                    val_ref,
16631                    decoder,
16632                    inner_offset,
16633                    inner_depth
16634                )?;
16635                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16636                {
16637                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16638                }
16639                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16640                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16641                }
16642            }
16643
16644            next_offset += envelope_size;
16645            _next_ordinal_to_read += 1;
16646            if next_offset >= end_offset {
16647                return Ok(());
16648            }
16649
16650            // Decode unknown envelopes for gaps in ordinals.
16651            while _next_ordinal_to_read < 4 {
16652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16653                _next_ordinal_to_read += 1;
16654                next_offset += envelope_size;
16655            }
16656
16657            let next_out_of_line = decoder.next_out_of_line();
16658            let handles_before = decoder.remaining_handles();
16659            if let Some((inlined, num_bytes, num_handles)) =
16660                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16661            {
16662                let member_inline_size =
16663                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16664                if inlined != (member_inline_size <= 4) {
16665                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16666                }
16667                let inner_offset;
16668                let mut inner_depth = depth.clone();
16669                if inlined {
16670                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16671                    inner_offset = next_offset;
16672                } else {
16673                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16674                    inner_depth.increment()?;
16675                }
16676                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16677                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16678                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16679                {
16680                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16681                }
16682                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16683                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16684                }
16685            }
16686
16687            next_offset += envelope_size;
16688            _next_ordinal_to_read += 1;
16689            if next_offset >= end_offset {
16690                return Ok(());
16691            }
16692
16693            // Decode unknown envelopes for gaps in ordinals.
16694            while _next_ordinal_to_read < 5 {
16695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16696                _next_ordinal_to_read += 1;
16697                next_offset += envelope_size;
16698            }
16699
16700            let next_out_of_line = decoder.next_out_of_line();
16701            let handles_before = decoder.remaining_handles();
16702            if let Some((inlined, num_bytes, num_handles)) =
16703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16704            {
16705                let member_inline_size =
16706                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16707                        decoder.context,
16708                    );
16709                if inlined != (member_inline_size <= 4) {
16710                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16711                }
16712                let inner_offset;
16713                let mut inner_depth = depth.clone();
16714                if inlined {
16715                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16716                    inner_offset = next_offset;
16717                } else {
16718                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16719                    inner_depth.increment()?;
16720                }
16721                let val_ref = self
16722                    .target_name
16723                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16724                fidl::decode!(
16725                    fidl::encoding::BoundedString<100>,
16726                    D,
16727                    val_ref,
16728                    decoder,
16729                    inner_offset,
16730                    inner_depth
16731                )?;
16732                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16733                {
16734                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16735                }
16736                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16737                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16738                }
16739            }
16740
16741            next_offset += envelope_size;
16742            _next_ordinal_to_read += 1;
16743            if next_offset >= end_offset {
16744                return Ok(());
16745            }
16746
16747            // Decode unknown envelopes for gaps in ordinals.
16748            while _next_ordinal_to_read < 7 {
16749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16750                _next_ordinal_to_read += 1;
16751                next_offset += envelope_size;
16752            }
16753
16754            let next_out_of_line = decoder.next_out_of_line();
16755            let handles_before = decoder.remaining_handles();
16756            if let Some((inlined, num_bytes, num_handles)) =
16757                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16758            {
16759                let member_inline_size =
16760                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16761                if inlined != (member_inline_size <= 4) {
16762                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16763                }
16764                let inner_offset;
16765                let mut inner_depth = depth.clone();
16766                if inlined {
16767                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16768                    inner_offset = next_offset;
16769                } else {
16770                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16771                    inner_depth.increment()?;
16772                }
16773                let val_ref =
16774                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
16775                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
16776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16777                {
16778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16779                }
16780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16782                }
16783            }
16784
16785            next_offset += envelope_size;
16786
16787            // Decode the remaining unknown envelopes.
16788            while next_offset < end_offset {
16789                _next_ordinal_to_read += 1;
16790                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16791                next_offset += envelope_size;
16792            }
16793
16794            Ok(())
16795        }
16796    }
16797
16798    impl OfferProtocol {
16799        #[inline(always)]
16800        fn max_ordinal_present(&self) -> u64 {
16801            if let Some(_) = self.source_dictionary {
16802                return 7;
16803            }
16804            if let Some(_) = self.availability {
16805                return 6;
16806            }
16807            if let Some(_) = self.dependency_type {
16808                return 5;
16809            }
16810            if let Some(_) = self.target_name {
16811                return 4;
16812            }
16813            if let Some(_) = self.target {
16814                return 3;
16815            }
16816            if let Some(_) = self.source_name {
16817                return 2;
16818            }
16819            if let Some(_) = self.source {
16820                return 1;
16821            }
16822            0
16823        }
16824    }
16825
16826    impl fidl::encoding::ValueTypeMarker for OfferProtocol {
16827        type Borrowed<'a> = &'a Self;
16828        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16829            value
16830        }
16831    }
16832
16833    unsafe impl fidl::encoding::TypeMarker for OfferProtocol {
16834        type Owned = Self;
16835
16836        #[inline(always)]
16837        fn inline_align(_context: fidl::encoding::Context) -> usize {
16838            8
16839        }
16840
16841        #[inline(always)]
16842        fn inline_size(_context: fidl::encoding::Context) -> usize {
16843            16
16844        }
16845    }
16846
16847    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferProtocol, D>
16848        for &OfferProtocol
16849    {
16850        unsafe fn encode(
16851            self,
16852            encoder: &mut fidl::encoding::Encoder<'_, D>,
16853            offset: usize,
16854            mut depth: fidl::encoding::Depth,
16855        ) -> fidl::Result<()> {
16856            encoder.debug_check_bounds::<OfferProtocol>(offset);
16857            // Vector header
16858            let max_ordinal: u64 = self.max_ordinal_present();
16859            encoder.write_num(max_ordinal, offset);
16860            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16861            // Calling encoder.out_of_line_offset(0) is not allowed.
16862            if max_ordinal == 0 {
16863                return Ok(());
16864            }
16865            depth.increment()?;
16866            let envelope_size = 8;
16867            let bytes_len = max_ordinal as usize * envelope_size;
16868            #[allow(unused_variables)]
16869            let offset = encoder.out_of_line_offset(bytes_len);
16870            let mut _prev_end_offset: usize = 0;
16871            if 1 > max_ordinal {
16872                return Ok(());
16873            }
16874
16875            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16876            // are envelope_size bytes.
16877            let cur_offset: usize = (1 - 1) * envelope_size;
16878
16879            // Zero reserved fields.
16880            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16881
16882            // Safety:
16883            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16884            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16885            //   envelope_size bytes, there is always sufficient room.
16886            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16887                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16888                encoder,
16889                offset + cur_offset,
16890                depth,
16891            )?;
16892
16893            _prev_end_offset = cur_offset + envelope_size;
16894            if 2 > max_ordinal {
16895                return Ok(());
16896            }
16897
16898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16899            // are envelope_size bytes.
16900            let cur_offset: usize = (2 - 1) * envelope_size;
16901
16902            // Zero reserved fields.
16903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16904
16905            // Safety:
16906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16908            //   envelope_size bytes, there is always sufficient room.
16909            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16910                self.source_name.as_ref().map(
16911                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16912                ),
16913                encoder,
16914                offset + cur_offset,
16915                depth,
16916            )?;
16917
16918            _prev_end_offset = cur_offset + envelope_size;
16919            if 3 > max_ordinal {
16920                return Ok(());
16921            }
16922
16923            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16924            // are envelope_size bytes.
16925            let cur_offset: usize = (3 - 1) * envelope_size;
16926
16927            // Zero reserved fields.
16928            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16929
16930            // Safety:
16931            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16932            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16933            //   envelope_size bytes, there is always sufficient room.
16934            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16935                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16936                encoder,
16937                offset + cur_offset,
16938                depth,
16939            )?;
16940
16941            _prev_end_offset = cur_offset + envelope_size;
16942            if 4 > max_ordinal {
16943                return Ok(());
16944            }
16945
16946            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16947            // are envelope_size bytes.
16948            let cur_offset: usize = (4 - 1) * envelope_size;
16949
16950            // Zero reserved fields.
16951            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16952
16953            // Safety:
16954            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16955            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16956            //   envelope_size bytes, there is always sufficient room.
16957            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16958                self.target_name.as_ref().map(
16959                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16960                ),
16961                encoder,
16962                offset + cur_offset,
16963                depth,
16964            )?;
16965
16966            _prev_end_offset = cur_offset + envelope_size;
16967            if 5 > max_ordinal {
16968                return Ok(());
16969            }
16970
16971            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16972            // are envelope_size bytes.
16973            let cur_offset: usize = (5 - 1) * envelope_size;
16974
16975            // Zero reserved fields.
16976            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16977
16978            // Safety:
16979            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16980            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16981            //   envelope_size bytes, there is always sufficient room.
16982            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
16983                self.dependency_type
16984                    .as_ref()
16985                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
16986                encoder,
16987                offset + cur_offset,
16988                depth,
16989            )?;
16990
16991            _prev_end_offset = cur_offset + envelope_size;
16992            if 6 > max_ordinal {
16993                return Ok(());
16994            }
16995
16996            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16997            // are envelope_size bytes.
16998            let cur_offset: usize = (6 - 1) * envelope_size;
16999
17000            // Zero reserved fields.
17001            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17002
17003            // Safety:
17004            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17005            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17006            //   envelope_size bytes, there is always sufficient room.
17007            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
17008                self.availability
17009                    .as_ref()
17010                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
17011                encoder,
17012                offset + cur_offset,
17013                depth,
17014            )?;
17015
17016            _prev_end_offset = cur_offset + envelope_size;
17017            if 7 > max_ordinal {
17018                return Ok(());
17019            }
17020
17021            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17022            // are envelope_size bytes.
17023            let cur_offset: usize = (7 - 1) * envelope_size;
17024
17025            // Zero reserved fields.
17026            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17027
17028            // Safety:
17029            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17030            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17031            //   envelope_size bytes, there is always sufficient room.
17032            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17033            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17034            encoder, offset + cur_offset, depth
17035        )?;
17036
17037            _prev_end_offset = cur_offset + envelope_size;
17038
17039            Ok(())
17040        }
17041    }
17042
17043    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferProtocol {
17044        #[inline(always)]
17045        fn new_empty() -> Self {
17046            Self::default()
17047        }
17048
17049        unsafe fn decode(
17050            &mut self,
17051            decoder: &mut fidl::encoding::Decoder<'_, D>,
17052            offset: usize,
17053            mut depth: fidl::encoding::Depth,
17054        ) -> fidl::Result<()> {
17055            decoder.debug_check_bounds::<Self>(offset);
17056            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17057                None => return Err(fidl::Error::NotNullable),
17058                Some(len) => len,
17059            };
17060            // Calling decoder.out_of_line_offset(0) is not allowed.
17061            if len == 0 {
17062                return Ok(());
17063            };
17064            depth.increment()?;
17065            let envelope_size = 8;
17066            let bytes_len = len * envelope_size;
17067            let offset = decoder.out_of_line_offset(bytes_len)?;
17068            // Decode the envelope for each type.
17069            let mut _next_ordinal_to_read = 0;
17070            let mut next_offset = offset;
17071            let end_offset = offset + bytes_len;
17072            _next_ordinal_to_read += 1;
17073            if next_offset >= end_offset {
17074                return Ok(());
17075            }
17076
17077            // Decode unknown envelopes for gaps in ordinals.
17078            while _next_ordinal_to_read < 1 {
17079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17080                _next_ordinal_to_read += 1;
17081                next_offset += envelope_size;
17082            }
17083
17084            let next_out_of_line = decoder.next_out_of_line();
17085            let handles_before = decoder.remaining_handles();
17086            if let Some((inlined, num_bytes, num_handles)) =
17087                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17088            {
17089                let member_inline_size =
17090                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17091                if inlined != (member_inline_size <= 4) {
17092                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17093                }
17094                let inner_offset;
17095                let mut inner_depth = depth.clone();
17096                if inlined {
17097                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17098                    inner_offset = next_offset;
17099                } else {
17100                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17101                    inner_depth.increment()?;
17102                }
17103                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17104                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17106                {
17107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17108                }
17109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17111                }
17112            }
17113
17114            next_offset += envelope_size;
17115            _next_ordinal_to_read += 1;
17116            if next_offset >= end_offset {
17117                return Ok(());
17118            }
17119
17120            // Decode unknown envelopes for gaps in ordinals.
17121            while _next_ordinal_to_read < 2 {
17122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17123                _next_ordinal_to_read += 1;
17124                next_offset += envelope_size;
17125            }
17126
17127            let next_out_of_line = decoder.next_out_of_line();
17128            let handles_before = decoder.remaining_handles();
17129            if let Some((inlined, num_bytes, num_handles)) =
17130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17131            {
17132                let member_inline_size =
17133                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17134                        decoder.context,
17135                    );
17136                if inlined != (member_inline_size <= 4) {
17137                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17138                }
17139                let inner_offset;
17140                let mut inner_depth = depth.clone();
17141                if inlined {
17142                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17143                    inner_offset = next_offset;
17144                } else {
17145                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17146                    inner_depth.increment()?;
17147                }
17148                let val_ref = self
17149                    .source_name
17150                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17151                fidl::decode!(
17152                    fidl::encoding::BoundedString<100>,
17153                    D,
17154                    val_ref,
17155                    decoder,
17156                    inner_offset,
17157                    inner_depth
17158                )?;
17159                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17160                {
17161                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17162                }
17163                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17164                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17165                }
17166            }
17167
17168            next_offset += envelope_size;
17169            _next_ordinal_to_read += 1;
17170            if next_offset >= end_offset {
17171                return Ok(());
17172            }
17173
17174            // Decode unknown envelopes for gaps in ordinals.
17175            while _next_ordinal_to_read < 3 {
17176                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17177                _next_ordinal_to_read += 1;
17178                next_offset += envelope_size;
17179            }
17180
17181            let next_out_of_line = decoder.next_out_of_line();
17182            let handles_before = decoder.remaining_handles();
17183            if let Some((inlined, num_bytes, num_handles)) =
17184                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17185            {
17186                let member_inline_size =
17187                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17188                if inlined != (member_inline_size <= 4) {
17189                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17190                }
17191                let inner_offset;
17192                let mut inner_depth = depth.clone();
17193                if inlined {
17194                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17195                    inner_offset = next_offset;
17196                } else {
17197                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17198                    inner_depth.increment()?;
17199                }
17200                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17201                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17202                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17203                {
17204                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17205                }
17206                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17207                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17208                }
17209            }
17210
17211            next_offset += envelope_size;
17212            _next_ordinal_to_read += 1;
17213            if next_offset >= end_offset {
17214                return Ok(());
17215            }
17216
17217            // Decode unknown envelopes for gaps in ordinals.
17218            while _next_ordinal_to_read < 4 {
17219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17220                _next_ordinal_to_read += 1;
17221                next_offset += envelope_size;
17222            }
17223
17224            let next_out_of_line = decoder.next_out_of_line();
17225            let handles_before = decoder.remaining_handles();
17226            if let Some((inlined, num_bytes, num_handles)) =
17227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17228            {
17229                let member_inline_size =
17230                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17231                        decoder.context,
17232                    );
17233                if inlined != (member_inline_size <= 4) {
17234                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17235                }
17236                let inner_offset;
17237                let mut inner_depth = depth.clone();
17238                if inlined {
17239                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17240                    inner_offset = next_offset;
17241                } else {
17242                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17243                    inner_depth.increment()?;
17244                }
17245                let val_ref = self
17246                    .target_name
17247                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17248                fidl::decode!(
17249                    fidl::encoding::BoundedString<100>,
17250                    D,
17251                    val_ref,
17252                    decoder,
17253                    inner_offset,
17254                    inner_depth
17255                )?;
17256                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17257                {
17258                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17259                }
17260                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17261                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17262                }
17263            }
17264
17265            next_offset += envelope_size;
17266            _next_ordinal_to_read += 1;
17267            if next_offset >= end_offset {
17268                return Ok(());
17269            }
17270
17271            // Decode unknown envelopes for gaps in ordinals.
17272            while _next_ordinal_to_read < 5 {
17273                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17274                _next_ordinal_to_read += 1;
17275                next_offset += envelope_size;
17276            }
17277
17278            let next_out_of_line = decoder.next_out_of_line();
17279            let handles_before = decoder.remaining_handles();
17280            if let Some((inlined, num_bytes, num_handles)) =
17281                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17282            {
17283                let member_inline_size =
17284                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17285                if inlined != (member_inline_size <= 4) {
17286                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17287                }
17288                let inner_offset;
17289                let mut inner_depth = depth.clone();
17290                if inlined {
17291                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17292                    inner_offset = next_offset;
17293                } else {
17294                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17295                    inner_depth.increment()?;
17296                }
17297                let val_ref =
17298                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
17299                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
17300                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17301                {
17302                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17303                }
17304                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17305                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17306                }
17307            }
17308
17309            next_offset += envelope_size;
17310            _next_ordinal_to_read += 1;
17311            if next_offset >= end_offset {
17312                return Ok(());
17313            }
17314
17315            // Decode unknown envelopes for gaps in ordinals.
17316            while _next_ordinal_to_read < 6 {
17317                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17318                _next_ordinal_to_read += 1;
17319                next_offset += envelope_size;
17320            }
17321
17322            let next_out_of_line = decoder.next_out_of_line();
17323            let handles_before = decoder.remaining_handles();
17324            if let Some((inlined, num_bytes, num_handles)) =
17325                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17326            {
17327                let member_inline_size =
17328                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17329                if inlined != (member_inline_size <= 4) {
17330                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17331                }
17332                let inner_offset;
17333                let mut inner_depth = depth.clone();
17334                if inlined {
17335                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17336                    inner_offset = next_offset;
17337                } else {
17338                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17339                    inner_depth.increment()?;
17340                }
17341                let val_ref =
17342                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
17343                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
17344                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17345                {
17346                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17347                }
17348                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17349                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17350                }
17351            }
17352
17353            next_offset += envelope_size;
17354            _next_ordinal_to_read += 1;
17355            if next_offset >= end_offset {
17356                return Ok(());
17357            }
17358
17359            // Decode unknown envelopes for gaps in ordinals.
17360            while _next_ordinal_to_read < 7 {
17361                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17362                _next_ordinal_to_read += 1;
17363                next_offset += envelope_size;
17364            }
17365
17366            let next_out_of_line = decoder.next_out_of_line();
17367            let handles_before = decoder.remaining_handles();
17368            if let Some((inlined, num_bytes, num_handles)) =
17369                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17370            {
17371                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17372                if inlined != (member_inline_size <= 4) {
17373                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17374                }
17375                let inner_offset;
17376                let mut inner_depth = depth.clone();
17377                if inlined {
17378                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17379                    inner_offset = next_offset;
17380                } else {
17381                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17382                    inner_depth.increment()?;
17383                }
17384                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17385                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17386                });
17387                fidl::decode!(
17388                    fidl::encoding::BoundedString<1024>,
17389                    D,
17390                    val_ref,
17391                    decoder,
17392                    inner_offset,
17393                    inner_depth
17394                )?;
17395                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17396                {
17397                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17398                }
17399                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17400                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17401                }
17402            }
17403
17404            next_offset += envelope_size;
17405
17406            // Decode the remaining unknown envelopes.
17407            while next_offset < end_offset {
17408                _next_ordinal_to_read += 1;
17409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17410                next_offset += envelope_size;
17411            }
17412
17413            Ok(())
17414        }
17415    }
17416
17417    impl OfferResolver {
17418        #[inline(always)]
17419        fn max_ordinal_present(&self) -> u64 {
17420            if let Some(_) = self.source_dictionary {
17421                return 5;
17422            }
17423            if let Some(_) = self.target_name {
17424                return 4;
17425            }
17426            if let Some(_) = self.target {
17427                return 3;
17428            }
17429            if let Some(_) = self.source_name {
17430                return 2;
17431            }
17432            if let Some(_) = self.source {
17433                return 1;
17434            }
17435            0
17436        }
17437    }
17438
17439    impl fidl::encoding::ValueTypeMarker for OfferResolver {
17440        type Borrowed<'a> = &'a Self;
17441        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17442            value
17443        }
17444    }
17445
17446    unsafe impl fidl::encoding::TypeMarker for OfferResolver {
17447        type Owned = Self;
17448
17449        #[inline(always)]
17450        fn inline_align(_context: fidl::encoding::Context) -> usize {
17451            8
17452        }
17453
17454        #[inline(always)]
17455        fn inline_size(_context: fidl::encoding::Context) -> usize {
17456            16
17457        }
17458    }
17459
17460    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferResolver, D>
17461        for &OfferResolver
17462    {
17463        unsafe fn encode(
17464            self,
17465            encoder: &mut fidl::encoding::Encoder<'_, D>,
17466            offset: usize,
17467            mut depth: fidl::encoding::Depth,
17468        ) -> fidl::Result<()> {
17469            encoder.debug_check_bounds::<OfferResolver>(offset);
17470            // Vector header
17471            let max_ordinal: u64 = self.max_ordinal_present();
17472            encoder.write_num(max_ordinal, offset);
17473            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17474            // Calling encoder.out_of_line_offset(0) is not allowed.
17475            if max_ordinal == 0 {
17476                return Ok(());
17477            }
17478            depth.increment()?;
17479            let envelope_size = 8;
17480            let bytes_len = max_ordinal as usize * envelope_size;
17481            #[allow(unused_variables)]
17482            let offset = encoder.out_of_line_offset(bytes_len);
17483            let mut _prev_end_offset: usize = 0;
17484            if 1 > max_ordinal {
17485                return Ok(());
17486            }
17487
17488            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17489            // are envelope_size bytes.
17490            let cur_offset: usize = (1 - 1) * envelope_size;
17491
17492            // Zero reserved fields.
17493            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17494
17495            // Safety:
17496            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17497            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17498            //   envelope_size bytes, there is always sufficient room.
17499            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17500                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17501                encoder,
17502                offset + cur_offset,
17503                depth,
17504            )?;
17505
17506            _prev_end_offset = cur_offset + envelope_size;
17507            if 2 > max_ordinal {
17508                return Ok(());
17509            }
17510
17511            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17512            // are envelope_size bytes.
17513            let cur_offset: usize = (2 - 1) * envelope_size;
17514
17515            // Zero reserved fields.
17516            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17517
17518            // Safety:
17519            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17520            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17521            //   envelope_size bytes, there is always sufficient room.
17522            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17523                self.source_name.as_ref().map(
17524                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17525                ),
17526                encoder,
17527                offset + cur_offset,
17528                depth,
17529            )?;
17530
17531            _prev_end_offset = cur_offset + envelope_size;
17532            if 3 > max_ordinal {
17533                return Ok(());
17534            }
17535
17536            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17537            // are envelope_size bytes.
17538            let cur_offset: usize = (3 - 1) * envelope_size;
17539
17540            // Zero reserved fields.
17541            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17542
17543            // Safety:
17544            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17545            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17546            //   envelope_size bytes, there is always sufficient room.
17547            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17548                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17549                encoder,
17550                offset + cur_offset,
17551                depth,
17552            )?;
17553
17554            _prev_end_offset = cur_offset + envelope_size;
17555            if 4 > max_ordinal {
17556                return Ok(());
17557            }
17558
17559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17560            // are envelope_size bytes.
17561            let cur_offset: usize = (4 - 1) * envelope_size;
17562
17563            // Zero reserved fields.
17564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17565
17566            // Safety:
17567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17569            //   envelope_size bytes, there is always sufficient room.
17570            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17571                self.target_name.as_ref().map(
17572                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17573                ),
17574                encoder,
17575                offset + cur_offset,
17576                depth,
17577            )?;
17578
17579            _prev_end_offset = cur_offset + envelope_size;
17580            if 5 > max_ordinal {
17581                return Ok(());
17582            }
17583
17584            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17585            // are envelope_size bytes.
17586            let cur_offset: usize = (5 - 1) * envelope_size;
17587
17588            // Zero reserved fields.
17589            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17590
17591            // Safety:
17592            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17593            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17594            //   envelope_size bytes, there is always sufficient room.
17595            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17596            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17597            encoder, offset + cur_offset, depth
17598        )?;
17599
17600            _prev_end_offset = cur_offset + envelope_size;
17601
17602            Ok(())
17603        }
17604    }
17605
17606    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferResolver {
17607        #[inline(always)]
17608        fn new_empty() -> Self {
17609            Self::default()
17610        }
17611
17612        unsafe fn decode(
17613            &mut self,
17614            decoder: &mut fidl::encoding::Decoder<'_, D>,
17615            offset: usize,
17616            mut depth: fidl::encoding::Depth,
17617        ) -> fidl::Result<()> {
17618            decoder.debug_check_bounds::<Self>(offset);
17619            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17620                None => return Err(fidl::Error::NotNullable),
17621                Some(len) => len,
17622            };
17623            // Calling decoder.out_of_line_offset(0) is not allowed.
17624            if len == 0 {
17625                return Ok(());
17626            };
17627            depth.increment()?;
17628            let envelope_size = 8;
17629            let bytes_len = len * envelope_size;
17630            let offset = decoder.out_of_line_offset(bytes_len)?;
17631            // Decode the envelope for each type.
17632            let mut _next_ordinal_to_read = 0;
17633            let mut next_offset = offset;
17634            let end_offset = offset + bytes_len;
17635            _next_ordinal_to_read += 1;
17636            if next_offset >= end_offset {
17637                return Ok(());
17638            }
17639
17640            // Decode unknown envelopes for gaps in ordinals.
17641            while _next_ordinal_to_read < 1 {
17642                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17643                _next_ordinal_to_read += 1;
17644                next_offset += envelope_size;
17645            }
17646
17647            let next_out_of_line = decoder.next_out_of_line();
17648            let handles_before = decoder.remaining_handles();
17649            if let Some((inlined, num_bytes, num_handles)) =
17650                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17651            {
17652                let member_inline_size =
17653                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17654                if inlined != (member_inline_size <= 4) {
17655                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17656                }
17657                let inner_offset;
17658                let mut inner_depth = depth.clone();
17659                if inlined {
17660                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17661                    inner_offset = next_offset;
17662                } else {
17663                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17664                    inner_depth.increment()?;
17665                }
17666                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17667                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17668                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17669                {
17670                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17671                }
17672                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17673                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17674                }
17675            }
17676
17677            next_offset += envelope_size;
17678            _next_ordinal_to_read += 1;
17679            if next_offset >= end_offset {
17680                return Ok(());
17681            }
17682
17683            // Decode unknown envelopes for gaps in ordinals.
17684            while _next_ordinal_to_read < 2 {
17685                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17686                _next_ordinal_to_read += 1;
17687                next_offset += envelope_size;
17688            }
17689
17690            let next_out_of_line = decoder.next_out_of_line();
17691            let handles_before = decoder.remaining_handles();
17692            if let Some((inlined, num_bytes, num_handles)) =
17693                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17694            {
17695                let member_inline_size =
17696                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17697                        decoder.context,
17698                    );
17699                if inlined != (member_inline_size <= 4) {
17700                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17701                }
17702                let inner_offset;
17703                let mut inner_depth = depth.clone();
17704                if inlined {
17705                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17706                    inner_offset = next_offset;
17707                } else {
17708                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17709                    inner_depth.increment()?;
17710                }
17711                let val_ref = self
17712                    .source_name
17713                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17714                fidl::decode!(
17715                    fidl::encoding::BoundedString<100>,
17716                    D,
17717                    val_ref,
17718                    decoder,
17719                    inner_offset,
17720                    inner_depth
17721                )?;
17722                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17723                {
17724                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17725                }
17726                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17727                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17728                }
17729            }
17730
17731            next_offset += envelope_size;
17732            _next_ordinal_to_read += 1;
17733            if next_offset >= end_offset {
17734                return Ok(());
17735            }
17736
17737            // Decode unknown envelopes for gaps in ordinals.
17738            while _next_ordinal_to_read < 3 {
17739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17740                _next_ordinal_to_read += 1;
17741                next_offset += envelope_size;
17742            }
17743
17744            let next_out_of_line = decoder.next_out_of_line();
17745            let handles_before = decoder.remaining_handles();
17746            if let Some((inlined, num_bytes, num_handles)) =
17747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17748            {
17749                let member_inline_size =
17750                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17751                if inlined != (member_inline_size <= 4) {
17752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17753                }
17754                let inner_offset;
17755                let mut inner_depth = depth.clone();
17756                if inlined {
17757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17758                    inner_offset = next_offset;
17759                } else {
17760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17761                    inner_depth.increment()?;
17762                }
17763                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17764                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17765                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17766                {
17767                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17768                }
17769                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17770                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17771                }
17772            }
17773
17774            next_offset += envelope_size;
17775            _next_ordinal_to_read += 1;
17776            if next_offset >= end_offset {
17777                return Ok(());
17778            }
17779
17780            // Decode unknown envelopes for gaps in ordinals.
17781            while _next_ordinal_to_read < 4 {
17782                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17783                _next_ordinal_to_read += 1;
17784                next_offset += envelope_size;
17785            }
17786
17787            let next_out_of_line = decoder.next_out_of_line();
17788            let handles_before = decoder.remaining_handles();
17789            if let Some((inlined, num_bytes, num_handles)) =
17790                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17791            {
17792                let member_inline_size =
17793                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17794                        decoder.context,
17795                    );
17796                if inlined != (member_inline_size <= 4) {
17797                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17798                }
17799                let inner_offset;
17800                let mut inner_depth = depth.clone();
17801                if inlined {
17802                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17803                    inner_offset = next_offset;
17804                } else {
17805                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17806                    inner_depth.increment()?;
17807                }
17808                let val_ref = self
17809                    .target_name
17810                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17811                fidl::decode!(
17812                    fidl::encoding::BoundedString<100>,
17813                    D,
17814                    val_ref,
17815                    decoder,
17816                    inner_offset,
17817                    inner_depth
17818                )?;
17819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17820                {
17821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17822                }
17823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17825                }
17826            }
17827
17828            next_offset += envelope_size;
17829            _next_ordinal_to_read += 1;
17830            if next_offset >= end_offset {
17831                return Ok(());
17832            }
17833
17834            // Decode unknown envelopes for gaps in ordinals.
17835            while _next_ordinal_to_read < 5 {
17836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17837                _next_ordinal_to_read += 1;
17838                next_offset += envelope_size;
17839            }
17840
17841            let next_out_of_line = decoder.next_out_of_line();
17842            let handles_before = decoder.remaining_handles();
17843            if let Some((inlined, num_bytes, num_handles)) =
17844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17845            {
17846                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17847                if inlined != (member_inline_size <= 4) {
17848                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17849                }
17850                let inner_offset;
17851                let mut inner_depth = depth.clone();
17852                if inlined {
17853                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17854                    inner_offset = next_offset;
17855                } else {
17856                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17857                    inner_depth.increment()?;
17858                }
17859                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17860                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17861                });
17862                fidl::decode!(
17863                    fidl::encoding::BoundedString<1024>,
17864                    D,
17865                    val_ref,
17866                    decoder,
17867                    inner_offset,
17868                    inner_depth
17869                )?;
17870                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17871                {
17872                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17873                }
17874                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17875                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17876                }
17877            }
17878
17879            next_offset += envelope_size;
17880
17881            // Decode the remaining unknown envelopes.
17882            while next_offset < end_offset {
17883                _next_ordinal_to_read += 1;
17884                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17885                next_offset += envelope_size;
17886            }
17887
17888            Ok(())
17889        }
17890    }
17891
17892    impl OfferRunner {
17893        #[inline(always)]
17894        fn max_ordinal_present(&self) -> u64 {
17895            if let Some(_) = self.source_dictionary {
17896                return 5;
17897            }
17898            if let Some(_) = self.target_name {
17899                return 4;
17900            }
17901            if let Some(_) = self.target {
17902                return 3;
17903            }
17904            if let Some(_) = self.source_name {
17905                return 2;
17906            }
17907            if let Some(_) = self.source {
17908                return 1;
17909            }
17910            0
17911        }
17912    }
17913
17914    impl fidl::encoding::ValueTypeMarker for OfferRunner {
17915        type Borrowed<'a> = &'a Self;
17916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17917            value
17918        }
17919    }
17920
17921    unsafe impl fidl::encoding::TypeMarker for OfferRunner {
17922        type Owned = Self;
17923
17924        #[inline(always)]
17925        fn inline_align(_context: fidl::encoding::Context) -> usize {
17926            8
17927        }
17928
17929        #[inline(always)]
17930        fn inline_size(_context: fidl::encoding::Context) -> usize {
17931            16
17932        }
17933    }
17934
17935    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferRunner, D>
17936        for &OfferRunner
17937    {
17938        unsafe fn encode(
17939            self,
17940            encoder: &mut fidl::encoding::Encoder<'_, D>,
17941            offset: usize,
17942            mut depth: fidl::encoding::Depth,
17943        ) -> fidl::Result<()> {
17944            encoder.debug_check_bounds::<OfferRunner>(offset);
17945            // Vector header
17946            let max_ordinal: u64 = self.max_ordinal_present();
17947            encoder.write_num(max_ordinal, offset);
17948            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17949            // Calling encoder.out_of_line_offset(0) is not allowed.
17950            if max_ordinal == 0 {
17951                return Ok(());
17952            }
17953            depth.increment()?;
17954            let envelope_size = 8;
17955            let bytes_len = max_ordinal as usize * envelope_size;
17956            #[allow(unused_variables)]
17957            let offset = encoder.out_of_line_offset(bytes_len);
17958            let mut _prev_end_offset: usize = 0;
17959            if 1 > max_ordinal {
17960                return Ok(());
17961            }
17962
17963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17964            // are envelope_size bytes.
17965            let cur_offset: usize = (1 - 1) * envelope_size;
17966
17967            // Zero reserved fields.
17968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17969
17970            // Safety:
17971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17973            //   envelope_size bytes, there is always sufficient room.
17974            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17975                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17976                encoder,
17977                offset + cur_offset,
17978                depth,
17979            )?;
17980
17981            _prev_end_offset = cur_offset + envelope_size;
17982            if 2 > max_ordinal {
17983                return Ok(());
17984            }
17985
17986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17987            // are envelope_size bytes.
17988            let cur_offset: usize = (2 - 1) * envelope_size;
17989
17990            // Zero reserved fields.
17991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17992
17993            // Safety:
17994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17996            //   envelope_size bytes, there is always sufficient room.
17997            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17998                self.source_name.as_ref().map(
17999                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18000                ),
18001                encoder,
18002                offset + cur_offset,
18003                depth,
18004            )?;
18005
18006            _prev_end_offset = cur_offset + envelope_size;
18007            if 3 > max_ordinal {
18008                return Ok(());
18009            }
18010
18011            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18012            // are envelope_size bytes.
18013            let cur_offset: usize = (3 - 1) * envelope_size;
18014
18015            // Zero reserved fields.
18016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18017
18018            // Safety:
18019            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18020            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18021            //   envelope_size bytes, there is always sufficient room.
18022            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18023                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18024                encoder,
18025                offset + cur_offset,
18026                depth,
18027            )?;
18028
18029            _prev_end_offset = cur_offset + envelope_size;
18030            if 4 > max_ordinal {
18031                return Ok(());
18032            }
18033
18034            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18035            // are envelope_size bytes.
18036            let cur_offset: usize = (4 - 1) * envelope_size;
18037
18038            // Zero reserved fields.
18039            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18040
18041            // Safety:
18042            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18043            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18044            //   envelope_size bytes, there is always sufficient room.
18045            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18046                self.target_name.as_ref().map(
18047                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18048                ),
18049                encoder,
18050                offset + cur_offset,
18051                depth,
18052            )?;
18053
18054            _prev_end_offset = cur_offset + envelope_size;
18055            if 5 > max_ordinal {
18056                return Ok(());
18057            }
18058
18059            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18060            // are envelope_size bytes.
18061            let cur_offset: usize = (5 - 1) * envelope_size;
18062
18063            // Zero reserved fields.
18064            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18065
18066            // Safety:
18067            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18068            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18069            //   envelope_size bytes, there is always sufficient room.
18070            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
18071            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
18072            encoder, offset + cur_offset, depth
18073        )?;
18074
18075            _prev_end_offset = cur_offset + envelope_size;
18076
18077            Ok(())
18078        }
18079    }
18080
18081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferRunner {
18082        #[inline(always)]
18083        fn new_empty() -> Self {
18084            Self::default()
18085        }
18086
18087        unsafe fn decode(
18088            &mut self,
18089            decoder: &mut fidl::encoding::Decoder<'_, D>,
18090            offset: usize,
18091            mut depth: fidl::encoding::Depth,
18092        ) -> fidl::Result<()> {
18093            decoder.debug_check_bounds::<Self>(offset);
18094            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18095                None => return Err(fidl::Error::NotNullable),
18096                Some(len) => len,
18097            };
18098            // Calling decoder.out_of_line_offset(0) is not allowed.
18099            if len == 0 {
18100                return Ok(());
18101            };
18102            depth.increment()?;
18103            let envelope_size = 8;
18104            let bytes_len = len * envelope_size;
18105            let offset = decoder.out_of_line_offset(bytes_len)?;
18106            // Decode the envelope for each type.
18107            let mut _next_ordinal_to_read = 0;
18108            let mut next_offset = offset;
18109            let end_offset = offset + bytes_len;
18110            _next_ordinal_to_read += 1;
18111            if next_offset >= end_offset {
18112                return Ok(());
18113            }
18114
18115            // Decode unknown envelopes for gaps in ordinals.
18116            while _next_ordinal_to_read < 1 {
18117                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18118                _next_ordinal_to_read += 1;
18119                next_offset += envelope_size;
18120            }
18121
18122            let next_out_of_line = decoder.next_out_of_line();
18123            let handles_before = decoder.remaining_handles();
18124            if let Some((inlined, num_bytes, num_handles)) =
18125                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18126            {
18127                let member_inline_size =
18128                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18129                if inlined != (member_inline_size <= 4) {
18130                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18131                }
18132                let inner_offset;
18133                let mut inner_depth = depth.clone();
18134                if inlined {
18135                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18136                    inner_offset = next_offset;
18137                } else {
18138                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18139                    inner_depth.increment()?;
18140                }
18141                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18142                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18143                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18144                {
18145                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18146                }
18147                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18148                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18149                }
18150            }
18151
18152            next_offset += envelope_size;
18153            _next_ordinal_to_read += 1;
18154            if next_offset >= end_offset {
18155                return Ok(());
18156            }
18157
18158            // Decode unknown envelopes for gaps in ordinals.
18159            while _next_ordinal_to_read < 2 {
18160                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18161                _next_ordinal_to_read += 1;
18162                next_offset += envelope_size;
18163            }
18164
18165            let next_out_of_line = decoder.next_out_of_line();
18166            let handles_before = decoder.remaining_handles();
18167            if let Some((inlined, num_bytes, num_handles)) =
18168                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18169            {
18170                let member_inline_size =
18171                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18172                        decoder.context,
18173                    );
18174                if inlined != (member_inline_size <= 4) {
18175                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18176                }
18177                let inner_offset;
18178                let mut inner_depth = depth.clone();
18179                if inlined {
18180                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18181                    inner_offset = next_offset;
18182                } else {
18183                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18184                    inner_depth.increment()?;
18185                }
18186                let val_ref = self
18187                    .source_name
18188                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18189                fidl::decode!(
18190                    fidl::encoding::BoundedString<100>,
18191                    D,
18192                    val_ref,
18193                    decoder,
18194                    inner_offset,
18195                    inner_depth
18196                )?;
18197                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18198                {
18199                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18200                }
18201                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18202                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18203                }
18204            }
18205
18206            next_offset += envelope_size;
18207            _next_ordinal_to_read += 1;
18208            if next_offset >= end_offset {
18209                return Ok(());
18210            }
18211
18212            // Decode unknown envelopes for gaps in ordinals.
18213            while _next_ordinal_to_read < 3 {
18214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18215                _next_ordinal_to_read += 1;
18216                next_offset += envelope_size;
18217            }
18218
18219            let next_out_of_line = decoder.next_out_of_line();
18220            let handles_before = decoder.remaining_handles();
18221            if let Some((inlined, num_bytes, num_handles)) =
18222                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18223            {
18224                let member_inline_size =
18225                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18226                if inlined != (member_inline_size <= 4) {
18227                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18228                }
18229                let inner_offset;
18230                let mut inner_depth = depth.clone();
18231                if inlined {
18232                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18233                    inner_offset = next_offset;
18234                } else {
18235                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18236                    inner_depth.increment()?;
18237                }
18238                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18239                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18240                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18241                {
18242                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18243                }
18244                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18245                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18246                }
18247            }
18248
18249            next_offset += envelope_size;
18250            _next_ordinal_to_read += 1;
18251            if next_offset >= end_offset {
18252                return Ok(());
18253            }
18254
18255            // Decode unknown envelopes for gaps in ordinals.
18256            while _next_ordinal_to_read < 4 {
18257                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18258                _next_ordinal_to_read += 1;
18259                next_offset += envelope_size;
18260            }
18261
18262            let next_out_of_line = decoder.next_out_of_line();
18263            let handles_before = decoder.remaining_handles();
18264            if let Some((inlined, num_bytes, num_handles)) =
18265                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18266            {
18267                let member_inline_size =
18268                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18269                        decoder.context,
18270                    );
18271                if inlined != (member_inline_size <= 4) {
18272                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18273                }
18274                let inner_offset;
18275                let mut inner_depth = depth.clone();
18276                if inlined {
18277                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18278                    inner_offset = next_offset;
18279                } else {
18280                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18281                    inner_depth.increment()?;
18282                }
18283                let val_ref = self
18284                    .target_name
18285                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18286                fidl::decode!(
18287                    fidl::encoding::BoundedString<100>,
18288                    D,
18289                    val_ref,
18290                    decoder,
18291                    inner_offset,
18292                    inner_depth
18293                )?;
18294                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18295                {
18296                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18297                }
18298                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18299                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18300                }
18301            }
18302
18303            next_offset += envelope_size;
18304            _next_ordinal_to_read += 1;
18305            if next_offset >= end_offset {
18306                return Ok(());
18307            }
18308
18309            // Decode unknown envelopes for gaps in ordinals.
18310            while _next_ordinal_to_read < 5 {
18311                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18312                _next_ordinal_to_read += 1;
18313                next_offset += envelope_size;
18314            }
18315
18316            let next_out_of_line = decoder.next_out_of_line();
18317            let handles_before = decoder.remaining_handles();
18318            if let Some((inlined, num_bytes, num_handles)) =
18319                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18320            {
18321                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18322                if inlined != (member_inline_size <= 4) {
18323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18324                }
18325                let inner_offset;
18326                let mut inner_depth = depth.clone();
18327                if inlined {
18328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18329                    inner_offset = next_offset;
18330                } else {
18331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18332                    inner_depth.increment()?;
18333                }
18334                let val_ref = self.source_dictionary.get_or_insert_with(|| {
18335                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
18336                });
18337                fidl::decode!(
18338                    fidl::encoding::BoundedString<1024>,
18339                    D,
18340                    val_ref,
18341                    decoder,
18342                    inner_offset,
18343                    inner_depth
18344                )?;
18345                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18346                {
18347                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18348                }
18349                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18350                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18351                }
18352            }
18353
18354            next_offset += envelope_size;
18355
18356            // Decode the remaining unknown envelopes.
18357            while next_offset < end_offset {
18358                _next_ordinal_to_read += 1;
18359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18360                next_offset += envelope_size;
18361            }
18362
18363            Ok(())
18364        }
18365    }
18366
18367    impl OfferService {
18368        #[inline(always)]
18369        fn max_ordinal_present(&self) -> u64 {
18370            if let Some(_) = self.dependency_type {
18371                return 9;
18372            }
18373            if let Some(_) = self.source_dictionary {
18374                return 8;
18375            }
18376            if let Some(_) = self.availability {
18377                return 7;
18378            }
18379            if let Some(_) = self.renamed_instances {
18380                return 6;
18381            }
18382            if let Some(_) = self.source_instance_filter {
18383                return 5;
18384            }
18385            if let Some(_) = self.target_name {
18386                return 4;
18387            }
18388            if let Some(_) = self.target {
18389                return 3;
18390            }
18391            if let Some(_) = self.source_name {
18392                return 2;
18393            }
18394            if let Some(_) = self.source {
18395                return 1;
18396            }
18397            0
18398        }
18399    }
18400
18401    impl fidl::encoding::ValueTypeMarker for OfferService {
18402        type Borrowed<'a> = &'a Self;
18403        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18404            value
18405        }
18406    }
18407
18408    unsafe impl fidl::encoding::TypeMarker for OfferService {
18409        type Owned = Self;
18410
18411        #[inline(always)]
18412        fn inline_align(_context: fidl::encoding::Context) -> usize {
18413            8
18414        }
18415
18416        #[inline(always)]
18417        fn inline_size(_context: fidl::encoding::Context) -> usize {
18418            16
18419        }
18420    }
18421
18422    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferService, D>
18423        for &OfferService
18424    {
18425        unsafe fn encode(
18426            self,
18427            encoder: &mut fidl::encoding::Encoder<'_, D>,
18428            offset: usize,
18429            mut depth: fidl::encoding::Depth,
18430        ) -> fidl::Result<()> {
18431            encoder.debug_check_bounds::<OfferService>(offset);
18432            // Vector header
18433            let max_ordinal: u64 = self.max_ordinal_present();
18434            encoder.write_num(max_ordinal, offset);
18435            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18436            // Calling encoder.out_of_line_offset(0) is not allowed.
18437            if max_ordinal == 0 {
18438                return Ok(());
18439            }
18440            depth.increment()?;
18441            let envelope_size = 8;
18442            let bytes_len = max_ordinal as usize * envelope_size;
18443            #[allow(unused_variables)]
18444            let offset = encoder.out_of_line_offset(bytes_len);
18445            let mut _prev_end_offset: usize = 0;
18446            if 1 > max_ordinal {
18447                return Ok(());
18448            }
18449
18450            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18451            // are envelope_size bytes.
18452            let cur_offset: usize = (1 - 1) * envelope_size;
18453
18454            // Zero reserved fields.
18455            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18456
18457            // Safety:
18458            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18459            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18460            //   envelope_size bytes, there is always sufficient room.
18461            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18462                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18463                encoder,
18464                offset + cur_offset,
18465                depth,
18466            )?;
18467
18468            _prev_end_offset = cur_offset + envelope_size;
18469            if 2 > max_ordinal {
18470                return Ok(());
18471            }
18472
18473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18474            // are envelope_size bytes.
18475            let cur_offset: usize = (2 - 1) * envelope_size;
18476
18477            // Zero reserved fields.
18478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18479
18480            // Safety:
18481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18483            //   envelope_size bytes, there is always sufficient room.
18484            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18485                self.source_name.as_ref().map(
18486                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18487                ),
18488                encoder,
18489                offset + cur_offset,
18490                depth,
18491            )?;
18492
18493            _prev_end_offset = cur_offset + envelope_size;
18494            if 3 > max_ordinal {
18495                return Ok(());
18496            }
18497
18498            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18499            // are envelope_size bytes.
18500            let cur_offset: usize = (3 - 1) * envelope_size;
18501
18502            // Zero reserved fields.
18503            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18504
18505            // Safety:
18506            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18507            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18508            //   envelope_size bytes, there is always sufficient room.
18509            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18510                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18511                encoder,
18512                offset + cur_offset,
18513                depth,
18514            )?;
18515
18516            _prev_end_offset = cur_offset + envelope_size;
18517            if 4 > max_ordinal {
18518                return Ok(());
18519            }
18520
18521            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18522            // are envelope_size bytes.
18523            let cur_offset: usize = (4 - 1) * envelope_size;
18524
18525            // Zero reserved fields.
18526            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18527
18528            // Safety:
18529            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18530            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18531            //   envelope_size bytes, there is always sufficient room.
18532            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18533                self.target_name.as_ref().map(
18534                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18535                ),
18536                encoder,
18537                offset + cur_offset,
18538                depth,
18539            )?;
18540
18541            _prev_end_offset = cur_offset + envelope_size;
18542            if 5 > 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 = (5 - 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<fidl::encoding::BoundedString<100>>, D>(
18558            self.source_instance_filter.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>> as fidl::encoding::ValueTypeMarker>::borrow),
18559            encoder, offset + cur_offset, depth
18560        )?;
18561
18562            _prev_end_offset = cur_offset + envelope_size;
18563            if 6 > 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 = (6 - 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::<fidl::encoding::UnboundedVector<NameMapping>, D>(
18579            self.renamed_instances.as_ref().map(<fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::ValueTypeMarker>::borrow),
18580            encoder, offset + cur_offset, depth
18581        )?;
18582
18583            _prev_end_offset = cur_offset + envelope_size;
18584            if 7 > max_ordinal {
18585                return Ok(());
18586            }
18587
18588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18589            // are envelope_size bytes.
18590            let cur_offset: usize = (7 - 1) * envelope_size;
18591
18592            // Zero reserved fields.
18593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18594
18595            // Safety:
18596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18598            //   envelope_size bytes, there is always sufficient room.
18599            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
18600                self.availability
18601                    .as_ref()
18602                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
18603                encoder,
18604                offset + cur_offset,
18605                depth,
18606            )?;
18607
18608            _prev_end_offset = cur_offset + envelope_size;
18609            if 8 > 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 = (8 - 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::<fidl::encoding::BoundedString<1024>, D>(
18625            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
18626            encoder, offset + cur_offset, depth
18627        )?;
18628
18629            _prev_end_offset = cur_offset + envelope_size;
18630            if 9 > max_ordinal {
18631                return Ok(());
18632            }
18633
18634            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18635            // are envelope_size bytes.
18636            let cur_offset: usize = (9 - 1) * envelope_size;
18637
18638            // Zero reserved fields.
18639            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18640
18641            // Safety:
18642            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18643            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18644            //   envelope_size bytes, there is always sufficient room.
18645            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
18646                self.dependency_type
18647                    .as_ref()
18648                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
18649                encoder,
18650                offset + cur_offset,
18651                depth,
18652            )?;
18653
18654            _prev_end_offset = cur_offset + envelope_size;
18655
18656            Ok(())
18657        }
18658    }
18659
18660    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferService {
18661        #[inline(always)]
18662        fn new_empty() -> Self {
18663            Self::default()
18664        }
18665
18666        unsafe fn decode(
18667            &mut self,
18668            decoder: &mut fidl::encoding::Decoder<'_, D>,
18669            offset: usize,
18670            mut depth: fidl::encoding::Depth,
18671        ) -> fidl::Result<()> {
18672            decoder.debug_check_bounds::<Self>(offset);
18673            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18674                None => return Err(fidl::Error::NotNullable),
18675                Some(len) => len,
18676            };
18677            // Calling decoder.out_of_line_offset(0) is not allowed.
18678            if len == 0 {
18679                return Ok(());
18680            };
18681            depth.increment()?;
18682            let envelope_size = 8;
18683            let bytes_len = len * envelope_size;
18684            let offset = decoder.out_of_line_offset(bytes_len)?;
18685            // Decode the envelope for each type.
18686            let mut _next_ordinal_to_read = 0;
18687            let mut next_offset = offset;
18688            let end_offset = offset + bytes_len;
18689            _next_ordinal_to_read += 1;
18690            if next_offset >= end_offset {
18691                return Ok(());
18692            }
18693
18694            // Decode unknown envelopes for gaps in ordinals.
18695            while _next_ordinal_to_read < 1 {
18696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18697                _next_ordinal_to_read += 1;
18698                next_offset += envelope_size;
18699            }
18700
18701            let next_out_of_line = decoder.next_out_of_line();
18702            let handles_before = decoder.remaining_handles();
18703            if let Some((inlined, num_bytes, num_handles)) =
18704                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18705            {
18706                let member_inline_size =
18707                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18708                if inlined != (member_inline_size <= 4) {
18709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18710                }
18711                let inner_offset;
18712                let mut inner_depth = depth.clone();
18713                if inlined {
18714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18715                    inner_offset = next_offset;
18716                } else {
18717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18718                    inner_depth.increment()?;
18719                }
18720                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18721                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18722                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18723                {
18724                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18725                }
18726                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18727                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18728                }
18729            }
18730
18731            next_offset += envelope_size;
18732            _next_ordinal_to_read += 1;
18733            if next_offset >= end_offset {
18734                return Ok(());
18735            }
18736
18737            // Decode unknown envelopes for gaps in ordinals.
18738            while _next_ordinal_to_read < 2 {
18739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18740                _next_ordinal_to_read += 1;
18741                next_offset += envelope_size;
18742            }
18743
18744            let next_out_of_line = decoder.next_out_of_line();
18745            let handles_before = decoder.remaining_handles();
18746            if let Some((inlined, num_bytes, num_handles)) =
18747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18748            {
18749                let member_inline_size =
18750                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18751                        decoder.context,
18752                    );
18753                if inlined != (member_inline_size <= 4) {
18754                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18755                }
18756                let inner_offset;
18757                let mut inner_depth = depth.clone();
18758                if inlined {
18759                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18760                    inner_offset = next_offset;
18761                } else {
18762                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18763                    inner_depth.increment()?;
18764                }
18765                let val_ref = self
18766                    .source_name
18767                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18768                fidl::decode!(
18769                    fidl::encoding::BoundedString<100>,
18770                    D,
18771                    val_ref,
18772                    decoder,
18773                    inner_offset,
18774                    inner_depth
18775                )?;
18776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18777                {
18778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18779                }
18780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18782                }
18783            }
18784
18785            next_offset += envelope_size;
18786            _next_ordinal_to_read += 1;
18787            if next_offset >= end_offset {
18788                return Ok(());
18789            }
18790
18791            // Decode unknown envelopes for gaps in ordinals.
18792            while _next_ordinal_to_read < 3 {
18793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18794                _next_ordinal_to_read += 1;
18795                next_offset += envelope_size;
18796            }
18797
18798            let next_out_of_line = decoder.next_out_of_line();
18799            let handles_before = decoder.remaining_handles();
18800            if let Some((inlined, num_bytes, num_handles)) =
18801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18802            {
18803                let member_inline_size =
18804                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18805                if inlined != (member_inline_size <= 4) {
18806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18807                }
18808                let inner_offset;
18809                let mut inner_depth = depth.clone();
18810                if inlined {
18811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18812                    inner_offset = next_offset;
18813                } else {
18814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18815                    inner_depth.increment()?;
18816                }
18817                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18818                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18820                {
18821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18822                }
18823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18825                }
18826            }
18827
18828            next_offset += envelope_size;
18829            _next_ordinal_to_read += 1;
18830            if next_offset >= end_offset {
18831                return Ok(());
18832            }
18833
18834            // Decode unknown envelopes for gaps in ordinals.
18835            while _next_ordinal_to_read < 4 {
18836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18837                _next_ordinal_to_read += 1;
18838                next_offset += envelope_size;
18839            }
18840
18841            let next_out_of_line = decoder.next_out_of_line();
18842            let handles_before = decoder.remaining_handles();
18843            if let Some((inlined, num_bytes, num_handles)) =
18844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18845            {
18846                let member_inline_size =
18847                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18848                        decoder.context,
18849                    );
18850                if inlined != (member_inline_size <= 4) {
18851                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18852                }
18853                let inner_offset;
18854                let mut inner_depth = depth.clone();
18855                if inlined {
18856                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18857                    inner_offset = next_offset;
18858                } else {
18859                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18860                    inner_depth.increment()?;
18861                }
18862                let val_ref = self
18863                    .target_name
18864                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18865                fidl::decode!(
18866                    fidl::encoding::BoundedString<100>,
18867                    D,
18868                    val_ref,
18869                    decoder,
18870                    inner_offset,
18871                    inner_depth
18872                )?;
18873                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18874                {
18875                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18876                }
18877                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18878                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18879                }
18880            }
18881
18882            next_offset += envelope_size;
18883            _next_ordinal_to_read += 1;
18884            if next_offset >= end_offset {
18885                return Ok(());
18886            }
18887
18888            // Decode unknown envelopes for gaps in ordinals.
18889            while _next_ordinal_to_read < 5 {
18890                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18891                _next_ordinal_to_read += 1;
18892                next_offset += envelope_size;
18893            }
18894
18895            let next_out_of_line = decoder.next_out_of_line();
18896            let handles_before = decoder.remaining_handles();
18897            if let Some((inlined, num_bytes, num_handles)) =
18898                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18899            {
18900                let member_inline_size = <fidl::encoding::UnboundedVector<
18901                    fidl::encoding::BoundedString<100>,
18902                > as fidl::encoding::TypeMarker>::inline_size(
18903                    decoder.context
18904                );
18905                if inlined != (member_inline_size <= 4) {
18906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18907                }
18908                let inner_offset;
18909                let mut inner_depth = depth.clone();
18910                if inlined {
18911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18912                    inner_offset = next_offset;
18913                } else {
18914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18915                    inner_depth.increment()?;
18916                }
18917                let val_ref = self.source_instance_filter.get_or_insert_with(|| {
18918                    fidl::new_empty!(
18919                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18920                        D
18921                    )
18922                });
18923                fidl::decode!(
18924                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18925                    D,
18926                    val_ref,
18927                    decoder,
18928                    inner_offset,
18929                    inner_depth
18930                )?;
18931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18932                {
18933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18934                }
18935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18937                }
18938            }
18939
18940            next_offset += envelope_size;
18941            _next_ordinal_to_read += 1;
18942            if next_offset >= end_offset {
18943                return Ok(());
18944            }
18945
18946            // Decode unknown envelopes for gaps in ordinals.
18947            while _next_ordinal_to_read < 6 {
18948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18949                _next_ordinal_to_read += 1;
18950                next_offset += envelope_size;
18951            }
18952
18953            let next_out_of_line = decoder.next_out_of_line();
18954            let handles_before = decoder.remaining_handles();
18955            if let Some((inlined, num_bytes, num_handles)) =
18956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18957            {
18958                let member_inline_size = <fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18959                if inlined != (member_inline_size <= 4) {
18960                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18961                }
18962                let inner_offset;
18963                let mut inner_depth = depth.clone();
18964                if inlined {
18965                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18966                    inner_offset = next_offset;
18967                } else {
18968                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18969                    inner_depth.increment()?;
18970                }
18971                let val_ref = self.renamed_instances.get_or_insert_with(|| {
18972                    fidl::new_empty!(fidl::encoding::UnboundedVector<NameMapping>, D)
18973                });
18974                fidl::decode!(
18975                    fidl::encoding::UnboundedVector<NameMapping>,
18976                    D,
18977                    val_ref,
18978                    decoder,
18979                    inner_offset,
18980                    inner_depth
18981                )?;
18982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18983                {
18984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18985                }
18986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18988                }
18989            }
18990
18991            next_offset += envelope_size;
18992            _next_ordinal_to_read += 1;
18993            if next_offset >= end_offset {
18994                return Ok(());
18995            }
18996
18997            // Decode unknown envelopes for gaps in ordinals.
18998            while _next_ordinal_to_read < 7 {
18999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19000                _next_ordinal_to_read += 1;
19001                next_offset += envelope_size;
19002            }
19003
19004            let next_out_of_line = decoder.next_out_of_line();
19005            let handles_before = decoder.remaining_handles();
19006            if let Some((inlined, num_bytes, num_handles)) =
19007                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19008            {
19009                let member_inline_size =
19010                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19011                if inlined != (member_inline_size <= 4) {
19012                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19013                }
19014                let inner_offset;
19015                let mut inner_depth = depth.clone();
19016                if inlined {
19017                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19018                    inner_offset = next_offset;
19019                } else {
19020                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19021                    inner_depth.increment()?;
19022                }
19023                let val_ref =
19024                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
19025                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
19026                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19027                {
19028                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19029                }
19030                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19031                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19032                }
19033            }
19034
19035            next_offset += envelope_size;
19036            _next_ordinal_to_read += 1;
19037            if next_offset >= end_offset {
19038                return Ok(());
19039            }
19040
19041            // Decode unknown envelopes for gaps in ordinals.
19042            while _next_ordinal_to_read < 8 {
19043                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19044                _next_ordinal_to_read += 1;
19045                next_offset += envelope_size;
19046            }
19047
19048            let next_out_of_line = decoder.next_out_of_line();
19049            let handles_before = decoder.remaining_handles();
19050            if let Some((inlined, num_bytes, num_handles)) =
19051                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19052            {
19053                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19054                if inlined != (member_inline_size <= 4) {
19055                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19056                }
19057                let inner_offset;
19058                let mut inner_depth = depth.clone();
19059                if inlined {
19060                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19061                    inner_offset = next_offset;
19062                } else {
19063                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19064                    inner_depth.increment()?;
19065                }
19066                let val_ref = self.source_dictionary.get_or_insert_with(|| {
19067                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
19068                });
19069                fidl::decode!(
19070                    fidl::encoding::BoundedString<1024>,
19071                    D,
19072                    val_ref,
19073                    decoder,
19074                    inner_offset,
19075                    inner_depth
19076                )?;
19077                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19078                {
19079                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19080                }
19081                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19082                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19083                }
19084            }
19085
19086            next_offset += envelope_size;
19087            _next_ordinal_to_read += 1;
19088            if next_offset >= end_offset {
19089                return Ok(());
19090            }
19091
19092            // Decode unknown envelopes for gaps in ordinals.
19093            while _next_ordinal_to_read < 9 {
19094                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19095                _next_ordinal_to_read += 1;
19096                next_offset += envelope_size;
19097            }
19098
19099            let next_out_of_line = decoder.next_out_of_line();
19100            let handles_before = decoder.remaining_handles();
19101            if let Some((inlined, num_bytes, num_handles)) =
19102                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19103            {
19104                let member_inline_size =
19105                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19106                if inlined != (member_inline_size <= 4) {
19107                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19108                }
19109                let inner_offset;
19110                let mut inner_depth = depth.clone();
19111                if inlined {
19112                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19113                    inner_offset = next_offset;
19114                } else {
19115                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19116                    inner_depth.increment()?;
19117                }
19118                let val_ref =
19119                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
19120                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
19121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19122                {
19123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19124                }
19125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19127                }
19128            }
19129
19130            next_offset += envelope_size;
19131
19132            // Decode the remaining unknown envelopes.
19133            while next_offset < end_offset {
19134                _next_ordinal_to_read += 1;
19135                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19136                next_offset += envelope_size;
19137            }
19138
19139            Ok(())
19140        }
19141    }
19142
19143    impl OfferStorage {
19144        #[inline(always)]
19145        fn max_ordinal_present(&self) -> u64 {
19146            if let Some(_) = self.availability {
19147                return 5;
19148            }
19149            if let Some(_) = self.target_name {
19150                return 4;
19151            }
19152            if let Some(_) = self.target {
19153                return 3;
19154            }
19155            if let Some(_) = self.source {
19156                return 2;
19157            }
19158            if let Some(_) = self.source_name {
19159                return 1;
19160            }
19161            0
19162        }
19163    }
19164
19165    impl fidl::encoding::ValueTypeMarker for OfferStorage {
19166        type Borrowed<'a> = &'a Self;
19167        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19168            value
19169        }
19170    }
19171
19172    unsafe impl fidl::encoding::TypeMarker for OfferStorage {
19173        type Owned = Self;
19174
19175        #[inline(always)]
19176        fn inline_align(_context: fidl::encoding::Context) -> usize {
19177            8
19178        }
19179
19180        #[inline(always)]
19181        fn inline_size(_context: fidl::encoding::Context) -> usize {
19182            16
19183        }
19184    }
19185
19186    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferStorage, D>
19187        for &OfferStorage
19188    {
19189        unsafe fn encode(
19190            self,
19191            encoder: &mut fidl::encoding::Encoder<'_, D>,
19192            offset: usize,
19193            mut depth: fidl::encoding::Depth,
19194        ) -> fidl::Result<()> {
19195            encoder.debug_check_bounds::<OfferStorage>(offset);
19196            // Vector header
19197            let max_ordinal: u64 = self.max_ordinal_present();
19198            encoder.write_num(max_ordinal, offset);
19199            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19200            // Calling encoder.out_of_line_offset(0) is not allowed.
19201            if max_ordinal == 0 {
19202                return Ok(());
19203            }
19204            depth.increment()?;
19205            let envelope_size = 8;
19206            let bytes_len = max_ordinal as usize * envelope_size;
19207            #[allow(unused_variables)]
19208            let offset = encoder.out_of_line_offset(bytes_len);
19209            let mut _prev_end_offset: usize = 0;
19210            if 1 > max_ordinal {
19211                return Ok(());
19212            }
19213
19214            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19215            // are envelope_size bytes.
19216            let cur_offset: usize = (1 - 1) * envelope_size;
19217
19218            // Zero reserved fields.
19219            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19220
19221            // Safety:
19222            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19223            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19224            //   envelope_size bytes, there is always sufficient room.
19225            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19226                self.source_name.as_ref().map(
19227                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19228                ),
19229                encoder,
19230                offset + cur_offset,
19231                depth,
19232            )?;
19233
19234            _prev_end_offset = cur_offset + envelope_size;
19235            if 2 > max_ordinal {
19236                return Ok(());
19237            }
19238
19239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19240            // are envelope_size bytes.
19241            let cur_offset: usize = (2 - 1) * envelope_size;
19242
19243            // Zero reserved fields.
19244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19245
19246            // Safety:
19247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19249            //   envelope_size bytes, there is always sufficient room.
19250            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
19251                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
19252                encoder,
19253                offset + cur_offset,
19254                depth,
19255            )?;
19256
19257            _prev_end_offset = cur_offset + envelope_size;
19258            if 3 > max_ordinal {
19259                return Ok(());
19260            }
19261
19262            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19263            // are envelope_size bytes.
19264            let cur_offset: usize = (3 - 1) * envelope_size;
19265
19266            // Zero reserved fields.
19267            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19268
19269            // Safety:
19270            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19271            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19272            //   envelope_size bytes, there is always sufficient room.
19273            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
19274                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
19275                encoder,
19276                offset + cur_offset,
19277                depth,
19278            )?;
19279
19280            _prev_end_offset = cur_offset + envelope_size;
19281            if 4 > max_ordinal {
19282                return Ok(());
19283            }
19284
19285            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19286            // are envelope_size bytes.
19287            let cur_offset: usize = (4 - 1) * envelope_size;
19288
19289            // Zero reserved fields.
19290            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19291
19292            // Safety:
19293            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19294            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19295            //   envelope_size bytes, there is always sufficient room.
19296            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19297                self.target_name.as_ref().map(
19298                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19299                ),
19300                encoder,
19301                offset + cur_offset,
19302                depth,
19303            )?;
19304
19305            _prev_end_offset = cur_offset + envelope_size;
19306            if 5 > max_ordinal {
19307                return Ok(());
19308            }
19309
19310            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19311            // are envelope_size bytes.
19312            let cur_offset: usize = (5 - 1) * envelope_size;
19313
19314            // Zero reserved fields.
19315            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19316
19317            // Safety:
19318            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19319            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19320            //   envelope_size bytes, there is always sufficient room.
19321            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
19322                self.availability
19323                    .as_ref()
19324                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
19325                encoder,
19326                offset + cur_offset,
19327                depth,
19328            )?;
19329
19330            _prev_end_offset = cur_offset + envelope_size;
19331
19332            Ok(())
19333        }
19334    }
19335
19336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferStorage {
19337        #[inline(always)]
19338        fn new_empty() -> Self {
19339            Self::default()
19340        }
19341
19342        unsafe fn decode(
19343            &mut self,
19344            decoder: &mut fidl::encoding::Decoder<'_, D>,
19345            offset: usize,
19346            mut depth: fidl::encoding::Depth,
19347        ) -> fidl::Result<()> {
19348            decoder.debug_check_bounds::<Self>(offset);
19349            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19350                None => return Err(fidl::Error::NotNullable),
19351                Some(len) => len,
19352            };
19353            // Calling decoder.out_of_line_offset(0) is not allowed.
19354            if len == 0 {
19355                return Ok(());
19356            };
19357            depth.increment()?;
19358            let envelope_size = 8;
19359            let bytes_len = len * envelope_size;
19360            let offset = decoder.out_of_line_offset(bytes_len)?;
19361            // Decode the envelope for each type.
19362            let mut _next_ordinal_to_read = 0;
19363            let mut next_offset = offset;
19364            let end_offset = offset + bytes_len;
19365            _next_ordinal_to_read += 1;
19366            if next_offset >= end_offset {
19367                return Ok(());
19368            }
19369
19370            // Decode unknown envelopes for gaps in ordinals.
19371            while _next_ordinal_to_read < 1 {
19372                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19373                _next_ordinal_to_read += 1;
19374                next_offset += envelope_size;
19375            }
19376
19377            let next_out_of_line = decoder.next_out_of_line();
19378            let handles_before = decoder.remaining_handles();
19379            if let Some((inlined, num_bytes, num_handles)) =
19380                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19381            {
19382                let member_inline_size =
19383                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19384                        decoder.context,
19385                    );
19386                if inlined != (member_inline_size <= 4) {
19387                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19388                }
19389                let inner_offset;
19390                let mut inner_depth = depth.clone();
19391                if inlined {
19392                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19393                    inner_offset = next_offset;
19394                } else {
19395                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19396                    inner_depth.increment()?;
19397                }
19398                let val_ref = self
19399                    .source_name
19400                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19401                fidl::decode!(
19402                    fidl::encoding::BoundedString<100>,
19403                    D,
19404                    val_ref,
19405                    decoder,
19406                    inner_offset,
19407                    inner_depth
19408                )?;
19409                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19410                {
19411                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19412                }
19413                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19414                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19415                }
19416            }
19417
19418            next_offset += envelope_size;
19419            _next_ordinal_to_read += 1;
19420            if next_offset >= end_offset {
19421                return Ok(());
19422            }
19423
19424            // Decode unknown envelopes for gaps in ordinals.
19425            while _next_ordinal_to_read < 2 {
19426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19427                _next_ordinal_to_read += 1;
19428                next_offset += envelope_size;
19429            }
19430
19431            let next_out_of_line = decoder.next_out_of_line();
19432            let handles_before = decoder.remaining_handles();
19433            if let Some((inlined, num_bytes, num_handles)) =
19434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19435            {
19436                let member_inline_size =
19437                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19438                if inlined != (member_inline_size <= 4) {
19439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19440                }
19441                let inner_offset;
19442                let mut inner_depth = depth.clone();
19443                if inlined {
19444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19445                    inner_offset = next_offset;
19446                } else {
19447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19448                    inner_depth.increment()?;
19449                }
19450                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19451                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19452                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19453                {
19454                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19455                }
19456                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19457                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19458                }
19459            }
19460
19461            next_offset += envelope_size;
19462            _next_ordinal_to_read += 1;
19463            if next_offset >= end_offset {
19464                return Ok(());
19465            }
19466
19467            // Decode unknown envelopes for gaps in ordinals.
19468            while _next_ordinal_to_read < 3 {
19469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19470                _next_ordinal_to_read += 1;
19471                next_offset += envelope_size;
19472            }
19473
19474            let next_out_of_line = decoder.next_out_of_line();
19475            let handles_before = decoder.remaining_handles();
19476            if let Some((inlined, num_bytes, num_handles)) =
19477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19478            {
19479                let member_inline_size =
19480                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19481                if inlined != (member_inline_size <= 4) {
19482                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19483                }
19484                let inner_offset;
19485                let mut inner_depth = depth.clone();
19486                if inlined {
19487                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19488                    inner_offset = next_offset;
19489                } else {
19490                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19491                    inner_depth.increment()?;
19492                }
19493                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19494                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19496                {
19497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19498                }
19499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19501                }
19502            }
19503
19504            next_offset += envelope_size;
19505            _next_ordinal_to_read += 1;
19506            if next_offset >= end_offset {
19507                return Ok(());
19508            }
19509
19510            // Decode unknown envelopes for gaps in ordinals.
19511            while _next_ordinal_to_read < 4 {
19512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19513                _next_ordinal_to_read += 1;
19514                next_offset += envelope_size;
19515            }
19516
19517            let next_out_of_line = decoder.next_out_of_line();
19518            let handles_before = decoder.remaining_handles();
19519            if let Some((inlined, num_bytes, num_handles)) =
19520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19521            {
19522                let member_inline_size =
19523                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19524                        decoder.context,
19525                    );
19526                if inlined != (member_inline_size <= 4) {
19527                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19528                }
19529                let inner_offset;
19530                let mut inner_depth = depth.clone();
19531                if inlined {
19532                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19533                    inner_offset = next_offset;
19534                } else {
19535                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19536                    inner_depth.increment()?;
19537                }
19538                let val_ref = self
19539                    .target_name
19540                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19541                fidl::decode!(
19542                    fidl::encoding::BoundedString<100>,
19543                    D,
19544                    val_ref,
19545                    decoder,
19546                    inner_offset,
19547                    inner_depth
19548                )?;
19549                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19550                {
19551                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19552                }
19553                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19554                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19555                }
19556            }
19557
19558            next_offset += envelope_size;
19559            _next_ordinal_to_read += 1;
19560            if next_offset >= end_offset {
19561                return Ok(());
19562            }
19563
19564            // Decode unknown envelopes for gaps in ordinals.
19565            while _next_ordinal_to_read < 5 {
19566                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19567                _next_ordinal_to_read += 1;
19568                next_offset += envelope_size;
19569            }
19570
19571            let next_out_of_line = decoder.next_out_of_line();
19572            let handles_before = decoder.remaining_handles();
19573            if let Some((inlined, num_bytes, num_handles)) =
19574                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19575            {
19576                let member_inline_size =
19577                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19578                if inlined != (member_inline_size <= 4) {
19579                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19580                }
19581                let inner_offset;
19582                let mut inner_depth = depth.clone();
19583                if inlined {
19584                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19585                    inner_offset = next_offset;
19586                } else {
19587                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19588                    inner_depth.increment()?;
19589                }
19590                let val_ref =
19591                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
19592                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
19593                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19594                {
19595                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19596                }
19597                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19598                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19599                }
19600            }
19601
19602            next_offset += envelope_size;
19603
19604            // Decode the remaining unknown envelopes.
19605            while next_offset < end_offset {
19606                _next_ordinal_to_read += 1;
19607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19608                next_offset += envelope_size;
19609            }
19610
19611            Ok(())
19612        }
19613    }
19614
19615    impl Program {
19616        #[inline(always)]
19617        fn max_ordinal_present(&self) -> u64 {
19618            if let Some(_) = self.info {
19619                return 2;
19620            }
19621            if let Some(_) = self.runner {
19622                return 1;
19623            }
19624            0
19625        }
19626    }
19627
19628    impl fidl::encoding::ValueTypeMarker for Program {
19629        type Borrowed<'a> = &'a Self;
19630        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19631            value
19632        }
19633    }
19634
19635    unsafe impl fidl::encoding::TypeMarker for Program {
19636        type Owned = Self;
19637
19638        #[inline(always)]
19639        fn inline_align(_context: fidl::encoding::Context) -> usize {
19640            8
19641        }
19642
19643        #[inline(always)]
19644        fn inline_size(_context: fidl::encoding::Context) -> usize {
19645            16
19646        }
19647    }
19648
19649    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Program, D> for &Program {
19650        unsafe fn encode(
19651            self,
19652            encoder: &mut fidl::encoding::Encoder<'_, D>,
19653            offset: usize,
19654            mut depth: fidl::encoding::Depth,
19655        ) -> fidl::Result<()> {
19656            encoder.debug_check_bounds::<Program>(offset);
19657            // Vector header
19658            let max_ordinal: u64 = self.max_ordinal_present();
19659            encoder.write_num(max_ordinal, offset);
19660            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19661            // Calling encoder.out_of_line_offset(0) is not allowed.
19662            if max_ordinal == 0 {
19663                return Ok(());
19664            }
19665            depth.increment()?;
19666            let envelope_size = 8;
19667            let bytes_len = max_ordinal as usize * envelope_size;
19668            #[allow(unused_variables)]
19669            let offset = encoder.out_of_line_offset(bytes_len);
19670            let mut _prev_end_offset: usize = 0;
19671            if 1 > max_ordinal {
19672                return Ok(());
19673            }
19674
19675            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19676            // are envelope_size bytes.
19677            let cur_offset: usize = (1 - 1) * envelope_size;
19678
19679            // Zero reserved fields.
19680            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19681
19682            // Safety:
19683            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19684            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19685            //   envelope_size bytes, there is always sufficient room.
19686            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19687                self.runner.as_ref().map(
19688                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19689                ),
19690                encoder,
19691                offset + cur_offset,
19692                depth,
19693            )?;
19694
19695            _prev_end_offset = cur_offset + envelope_size;
19696            if 2 > max_ordinal {
19697                return Ok(());
19698            }
19699
19700            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19701            // are envelope_size bytes.
19702            let cur_offset: usize = (2 - 1) * envelope_size;
19703
19704            // Zero reserved fields.
19705            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19706
19707            // Safety:
19708            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19709            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19710            //   envelope_size bytes, there is always sufficient room.
19711            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data_common::Dictionary, D>(
19712            self.info.as_ref().map(<fidl_fuchsia_data_common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
19713            encoder, offset + cur_offset, depth
19714        )?;
19715
19716            _prev_end_offset = cur_offset + envelope_size;
19717
19718            Ok(())
19719        }
19720    }
19721
19722    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Program {
19723        #[inline(always)]
19724        fn new_empty() -> Self {
19725            Self::default()
19726        }
19727
19728        unsafe fn decode(
19729            &mut self,
19730            decoder: &mut fidl::encoding::Decoder<'_, D>,
19731            offset: usize,
19732            mut depth: fidl::encoding::Depth,
19733        ) -> fidl::Result<()> {
19734            decoder.debug_check_bounds::<Self>(offset);
19735            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19736                None => return Err(fidl::Error::NotNullable),
19737                Some(len) => len,
19738            };
19739            // Calling decoder.out_of_line_offset(0) is not allowed.
19740            if len == 0 {
19741                return Ok(());
19742            };
19743            depth.increment()?;
19744            let envelope_size = 8;
19745            let bytes_len = len * envelope_size;
19746            let offset = decoder.out_of_line_offset(bytes_len)?;
19747            // Decode the envelope for each type.
19748            let mut _next_ordinal_to_read = 0;
19749            let mut next_offset = offset;
19750            let end_offset = offset + bytes_len;
19751            _next_ordinal_to_read += 1;
19752            if next_offset >= end_offset {
19753                return Ok(());
19754            }
19755
19756            // Decode unknown envelopes for gaps in ordinals.
19757            while _next_ordinal_to_read < 1 {
19758                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19759                _next_ordinal_to_read += 1;
19760                next_offset += envelope_size;
19761            }
19762
19763            let next_out_of_line = decoder.next_out_of_line();
19764            let handles_before = decoder.remaining_handles();
19765            if let Some((inlined, num_bytes, num_handles)) =
19766                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19767            {
19768                let member_inline_size =
19769                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19770                        decoder.context,
19771                    );
19772                if inlined != (member_inline_size <= 4) {
19773                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19774                }
19775                let inner_offset;
19776                let mut inner_depth = depth.clone();
19777                if inlined {
19778                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19779                    inner_offset = next_offset;
19780                } else {
19781                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19782                    inner_depth.increment()?;
19783                }
19784                let val_ref = self
19785                    .runner
19786                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19787                fidl::decode!(
19788                    fidl::encoding::BoundedString<100>,
19789                    D,
19790                    val_ref,
19791                    decoder,
19792                    inner_offset,
19793                    inner_depth
19794                )?;
19795                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19796                {
19797                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19798                }
19799                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19800                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19801                }
19802            }
19803
19804            next_offset += envelope_size;
19805            _next_ordinal_to_read += 1;
19806            if next_offset >= end_offset {
19807                return Ok(());
19808            }
19809
19810            // Decode unknown envelopes for gaps in ordinals.
19811            while _next_ordinal_to_read < 2 {
19812                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19813                _next_ordinal_to_read += 1;
19814                next_offset += envelope_size;
19815            }
19816
19817            let next_out_of_line = decoder.next_out_of_line();
19818            let handles_before = decoder.remaining_handles();
19819            if let Some((inlined, num_bytes, num_handles)) =
19820                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19821            {
19822                let member_inline_size = <fidl_fuchsia_data_common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19823                if inlined != (member_inline_size <= 4) {
19824                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19825                }
19826                let inner_offset;
19827                let mut inner_depth = depth.clone();
19828                if inlined {
19829                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19830                    inner_offset = next_offset;
19831                } else {
19832                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19833                    inner_depth.increment()?;
19834                }
19835                let val_ref = self.info.get_or_insert_with(|| {
19836                    fidl::new_empty!(fidl_fuchsia_data_common::Dictionary, D)
19837                });
19838                fidl::decode!(
19839                    fidl_fuchsia_data_common::Dictionary,
19840                    D,
19841                    val_ref,
19842                    decoder,
19843                    inner_offset,
19844                    inner_depth
19845                )?;
19846                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19847                {
19848                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19849                }
19850                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19851                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19852                }
19853            }
19854
19855            next_offset += envelope_size;
19856
19857            // Decode the remaining unknown envelopes.
19858            while next_offset < end_offset {
19859                _next_ordinal_to_read += 1;
19860                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19861                next_offset += envelope_size;
19862            }
19863
19864            Ok(())
19865        }
19866    }
19867
19868    impl Protocol {
19869        #[inline(always)]
19870        fn max_ordinal_present(&self) -> u64 {
19871            if let Some(_) = self.delivery {
19872                return 3;
19873            }
19874            if let Some(_) = self.source_path {
19875                return 2;
19876            }
19877            if let Some(_) = self.name {
19878                return 1;
19879            }
19880            0
19881        }
19882    }
19883
19884    impl fidl::encoding::ValueTypeMarker for Protocol {
19885        type Borrowed<'a> = &'a Self;
19886        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19887            value
19888        }
19889    }
19890
19891    unsafe impl fidl::encoding::TypeMarker for Protocol {
19892        type Owned = Self;
19893
19894        #[inline(always)]
19895        fn inline_align(_context: fidl::encoding::Context) -> usize {
19896            8
19897        }
19898
19899        #[inline(always)]
19900        fn inline_size(_context: fidl::encoding::Context) -> usize {
19901            16
19902        }
19903    }
19904
19905    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Protocol, D> for &Protocol {
19906        unsafe fn encode(
19907            self,
19908            encoder: &mut fidl::encoding::Encoder<'_, D>,
19909            offset: usize,
19910            mut depth: fidl::encoding::Depth,
19911        ) -> fidl::Result<()> {
19912            encoder.debug_check_bounds::<Protocol>(offset);
19913            // Vector header
19914            let max_ordinal: u64 = self.max_ordinal_present();
19915            encoder.write_num(max_ordinal, offset);
19916            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19917            // Calling encoder.out_of_line_offset(0) is not allowed.
19918            if max_ordinal == 0 {
19919                return Ok(());
19920            }
19921            depth.increment()?;
19922            let envelope_size = 8;
19923            let bytes_len = max_ordinal as usize * envelope_size;
19924            #[allow(unused_variables)]
19925            let offset = encoder.out_of_line_offset(bytes_len);
19926            let mut _prev_end_offset: usize = 0;
19927            if 1 > max_ordinal {
19928                return Ok(());
19929            }
19930
19931            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19932            // are envelope_size bytes.
19933            let cur_offset: usize = (1 - 1) * envelope_size;
19934
19935            // Zero reserved fields.
19936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19937
19938            // Safety:
19939            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19940            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19941            //   envelope_size bytes, there is always sufficient room.
19942            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19943                self.name.as_ref().map(
19944                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19945                ),
19946                encoder,
19947                offset + cur_offset,
19948                depth,
19949            )?;
19950
19951            _prev_end_offset = cur_offset + envelope_size;
19952            if 2 > 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 = (2 - 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::<fidl::encoding::BoundedString<1024>, D>(
19968            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
19969            encoder, offset + cur_offset, depth
19970        )?;
19971
19972            _prev_end_offset = cur_offset + envelope_size;
19973            if 3 > max_ordinal {
19974                return Ok(());
19975            }
19976
19977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19978            // are envelope_size bytes.
19979            let cur_offset: usize = (3 - 1) * envelope_size;
19980
19981            // Zero reserved fields.
19982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19983
19984            // Safety:
19985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19987            //   envelope_size bytes, there is always sufficient room.
19988            fidl::encoding::encode_in_envelope_optional::<DeliveryType, D>(
19989                self.delivery
19990                    .as_ref()
19991                    .map(<DeliveryType as fidl::encoding::ValueTypeMarker>::borrow),
19992                encoder,
19993                offset + cur_offset,
19994                depth,
19995            )?;
19996
19997            _prev_end_offset = cur_offset + envelope_size;
19998
19999            Ok(())
20000        }
20001    }
20002
20003    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Protocol {
20004        #[inline(always)]
20005        fn new_empty() -> Self {
20006            Self::default()
20007        }
20008
20009        unsafe fn decode(
20010            &mut self,
20011            decoder: &mut fidl::encoding::Decoder<'_, D>,
20012            offset: usize,
20013            mut depth: fidl::encoding::Depth,
20014        ) -> fidl::Result<()> {
20015            decoder.debug_check_bounds::<Self>(offset);
20016            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20017                None => return Err(fidl::Error::NotNullable),
20018                Some(len) => len,
20019            };
20020            // Calling decoder.out_of_line_offset(0) is not allowed.
20021            if len == 0 {
20022                return Ok(());
20023            };
20024            depth.increment()?;
20025            let envelope_size = 8;
20026            let bytes_len = len * envelope_size;
20027            let offset = decoder.out_of_line_offset(bytes_len)?;
20028            // Decode the envelope for each type.
20029            let mut _next_ordinal_to_read = 0;
20030            let mut next_offset = offset;
20031            let end_offset = offset + bytes_len;
20032            _next_ordinal_to_read += 1;
20033            if next_offset >= end_offset {
20034                return Ok(());
20035            }
20036
20037            // Decode unknown envelopes for gaps in ordinals.
20038            while _next_ordinal_to_read < 1 {
20039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20040                _next_ordinal_to_read += 1;
20041                next_offset += envelope_size;
20042            }
20043
20044            let next_out_of_line = decoder.next_out_of_line();
20045            let handles_before = decoder.remaining_handles();
20046            if let Some((inlined, num_bytes, num_handles)) =
20047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20048            {
20049                let member_inline_size =
20050                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20051                        decoder.context,
20052                    );
20053                if inlined != (member_inline_size <= 4) {
20054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20055                }
20056                let inner_offset;
20057                let mut inner_depth = depth.clone();
20058                if inlined {
20059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20060                    inner_offset = next_offset;
20061                } else {
20062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20063                    inner_depth.increment()?;
20064                }
20065                let val_ref = self
20066                    .name
20067                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20068                fidl::decode!(
20069                    fidl::encoding::BoundedString<100>,
20070                    D,
20071                    val_ref,
20072                    decoder,
20073                    inner_offset,
20074                    inner_depth
20075                )?;
20076                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20077                {
20078                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20079                }
20080                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20081                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20082                }
20083            }
20084
20085            next_offset += envelope_size;
20086            _next_ordinal_to_read += 1;
20087            if next_offset >= end_offset {
20088                return Ok(());
20089            }
20090
20091            // Decode unknown envelopes for gaps in ordinals.
20092            while _next_ordinal_to_read < 2 {
20093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20094                _next_ordinal_to_read += 1;
20095                next_offset += envelope_size;
20096            }
20097
20098            let next_out_of_line = decoder.next_out_of_line();
20099            let handles_before = decoder.remaining_handles();
20100            if let Some((inlined, num_bytes, num_handles)) =
20101                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20102            {
20103                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20104                if inlined != (member_inline_size <= 4) {
20105                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20106                }
20107                let inner_offset;
20108                let mut inner_depth = depth.clone();
20109                if inlined {
20110                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20111                    inner_offset = next_offset;
20112                } else {
20113                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20114                    inner_depth.increment()?;
20115                }
20116                let val_ref = self.source_path.get_or_insert_with(|| {
20117                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20118                });
20119                fidl::decode!(
20120                    fidl::encoding::BoundedString<1024>,
20121                    D,
20122                    val_ref,
20123                    decoder,
20124                    inner_offset,
20125                    inner_depth
20126                )?;
20127                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20128                {
20129                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20130                }
20131                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20132                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20133                }
20134            }
20135
20136            next_offset += envelope_size;
20137            _next_ordinal_to_read += 1;
20138            if next_offset >= end_offset {
20139                return Ok(());
20140            }
20141
20142            // Decode unknown envelopes for gaps in ordinals.
20143            while _next_ordinal_to_read < 3 {
20144                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20145                _next_ordinal_to_read += 1;
20146                next_offset += envelope_size;
20147            }
20148
20149            let next_out_of_line = decoder.next_out_of_line();
20150            let handles_before = decoder.remaining_handles();
20151            if let Some((inlined, num_bytes, num_handles)) =
20152                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20153            {
20154                let member_inline_size =
20155                    <DeliveryType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20156                if inlined != (member_inline_size <= 4) {
20157                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20158                }
20159                let inner_offset;
20160                let mut inner_depth = depth.clone();
20161                if inlined {
20162                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20163                    inner_offset = next_offset;
20164                } else {
20165                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20166                    inner_depth.increment()?;
20167                }
20168                let val_ref =
20169                    self.delivery.get_or_insert_with(|| fidl::new_empty!(DeliveryType, D));
20170                fidl::decode!(DeliveryType, D, val_ref, decoder, inner_offset, inner_depth)?;
20171                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20172                {
20173                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20174                }
20175                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20176                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20177                }
20178            }
20179
20180            next_offset += envelope_size;
20181
20182            // Decode the remaining unknown envelopes.
20183            while next_offset < end_offset {
20184                _next_ordinal_to_read += 1;
20185                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20186                next_offset += envelope_size;
20187            }
20188
20189            Ok(())
20190        }
20191    }
20192
20193    impl Resolver {
20194        #[inline(always)]
20195        fn max_ordinal_present(&self) -> u64 {
20196            if let Some(_) = self.source_path {
20197                return 2;
20198            }
20199            if let Some(_) = self.name {
20200                return 1;
20201            }
20202            0
20203        }
20204    }
20205
20206    impl fidl::encoding::ValueTypeMarker for Resolver {
20207        type Borrowed<'a> = &'a Self;
20208        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20209            value
20210        }
20211    }
20212
20213    unsafe impl fidl::encoding::TypeMarker for Resolver {
20214        type Owned = Self;
20215
20216        #[inline(always)]
20217        fn inline_align(_context: fidl::encoding::Context) -> usize {
20218            8
20219        }
20220
20221        #[inline(always)]
20222        fn inline_size(_context: fidl::encoding::Context) -> usize {
20223            16
20224        }
20225    }
20226
20227    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Resolver, D> for &Resolver {
20228        unsafe fn encode(
20229            self,
20230            encoder: &mut fidl::encoding::Encoder<'_, D>,
20231            offset: usize,
20232            mut depth: fidl::encoding::Depth,
20233        ) -> fidl::Result<()> {
20234            encoder.debug_check_bounds::<Resolver>(offset);
20235            // Vector header
20236            let max_ordinal: u64 = self.max_ordinal_present();
20237            encoder.write_num(max_ordinal, offset);
20238            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20239            // Calling encoder.out_of_line_offset(0) is not allowed.
20240            if max_ordinal == 0 {
20241                return Ok(());
20242            }
20243            depth.increment()?;
20244            let envelope_size = 8;
20245            let bytes_len = max_ordinal as usize * envelope_size;
20246            #[allow(unused_variables)]
20247            let offset = encoder.out_of_line_offset(bytes_len);
20248            let mut _prev_end_offset: usize = 0;
20249            if 1 > max_ordinal {
20250                return Ok(());
20251            }
20252
20253            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20254            // are envelope_size bytes.
20255            let cur_offset: usize = (1 - 1) * envelope_size;
20256
20257            // Zero reserved fields.
20258            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20259
20260            // Safety:
20261            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20262            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20263            //   envelope_size bytes, there is always sufficient room.
20264            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20265                self.name.as_ref().map(
20266                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20267                ),
20268                encoder,
20269                offset + cur_offset,
20270                depth,
20271            )?;
20272
20273            _prev_end_offset = cur_offset + envelope_size;
20274            if 2 > max_ordinal {
20275                return Ok(());
20276            }
20277
20278            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20279            // are envelope_size bytes.
20280            let cur_offset: usize = (2 - 1) * envelope_size;
20281
20282            // Zero reserved fields.
20283            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20284
20285            // Safety:
20286            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20287            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20288            //   envelope_size bytes, there is always sufficient room.
20289            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20290            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20291            encoder, offset + cur_offset, depth
20292        )?;
20293
20294            _prev_end_offset = cur_offset + envelope_size;
20295
20296            Ok(())
20297        }
20298    }
20299
20300    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Resolver {
20301        #[inline(always)]
20302        fn new_empty() -> Self {
20303            Self::default()
20304        }
20305
20306        unsafe fn decode(
20307            &mut self,
20308            decoder: &mut fidl::encoding::Decoder<'_, D>,
20309            offset: usize,
20310            mut depth: fidl::encoding::Depth,
20311        ) -> fidl::Result<()> {
20312            decoder.debug_check_bounds::<Self>(offset);
20313            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20314                None => return Err(fidl::Error::NotNullable),
20315                Some(len) => len,
20316            };
20317            // Calling decoder.out_of_line_offset(0) is not allowed.
20318            if len == 0 {
20319                return Ok(());
20320            };
20321            depth.increment()?;
20322            let envelope_size = 8;
20323            let bytes_len = len * envelope_size;
20324            let offset = decoder.out_of_line_offset(bytes_len)?;
20325            // Decode the envelope for each type.
20326            let mut _next_ordinal_to_read = 0;
20327            let mut next_offset = offset;
20328            let end_offset = offset + bytes_len;
20329            _next_ordinal_to_read += 1;
20330            if next_offset >= end_offset {
20331                return Ok(());
20332            }
20333
20334            // Decode unknown envelopes for gaps in ordinals.
20335            while _next_ordinal_to_read < 1 {
20336                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20337                _next_ordinal_to_read += 1;
20338                next_offset += envelope_size;
20339            }
20340
20341            let next_out_of_line = decoder.next_out_of_line();
20342            let handles_before = decoder.remaining_handles();
20343            if let Some((inlined, num_bytes, num_handles)) =
20344                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20345            {
20346                let member_inline_size =
20347                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20348                        decoder.context,
20349                    );
20350                if inlined != (member_inline_size <= 4) {
20351                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20352                }
20353                let inner_offset;
20354                let mut inner_depth = depth.clone();
20355                if inlined {
20356                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20357                    inner_offset = next_offset;
20358                } else {
20359                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20360                    inner_depth.increment()?;
20361                }
20362                let val_ref = self
20363                    .name
20364                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20365                fidl::decode!(
20366                    fidl::encoding::BoundedString<100>,
20367                    D,
20368                    val_ref,
20369                    decoder,
20370                    inner_offset,
20371                    inner_depth
20372                )?;
20373                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20374                {
20375                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20376                }
20377                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20378                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20379                }
20380            }
20381
20382            next_offset += envelope_size;
20383            _next_ordinal_to_read += 1;
20384            if next_offset >= end_offset {
20385                return Ok(());
20386            }
20387
20388            // Decode unknown envelopes for gaps in ordinals.
20389            while _next_ordinal_to_read < 2 {
20390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20391                _next_ordinal_to_read += 1;
20392                next_offset += envelope_size;
20393            }
20394
20395            let next_out_of_line = decoder.next_out_of_line();
20396            let handles_before = decoder.remaining_handles();
20397            if let Some((inlined, num_bytes, num_handles)) =
20398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20399            {
20400                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20401                if inlined != (member_inline_size <= 4) {
20402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20403                }
20404                let inner_offset;
20405                let mut inner_depth = depth.clone();
20406                if inlined {
20407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20408                    inner_offset = next_offset;
20409                } else {
20410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20411                    inner_depth.increment()?;
20412                }
20413                let val_ref = self.source_path.get_or_insert_with(|| {
20414                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20415                });
20416                fidl::decode!(
20417                    fidl::encoding::BoundedString<1024>,
20418                    D,
20419                    val_ref,
20420                    decoder,
20421                    inner_offset,
20422                    inner_depth
20423                )?;
20424                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20425                {
20426                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20427                }
20428                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20429                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20430                }
20431            }
20432
20433            next_offset += envelope_size;
20434
20435            // Decode the remaining unknown envelopes.
20436            while next_offset < end_offset {
20437                _next_ordinal_to_read += 1;
20438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20439                next_offset += envelope_size;
20440            }
20441
20442            Ok(())
20443        }
20444    }
20445
20446    impl ResolverRegistration {
20447        #[inline(always)]
20448        fn max_ordinal_present(&self) -> u64 {
20449            if let Some(_) = self.scheme {
20450                return 3;
20451            }
20452            if let Some(_) = self.source {
20453                return 2;
20454            }
20455            if let Some(_) = self.resolver {
20456                return 1;
20457            }
20458            0
20459        }
20460    }
20461
20462    impl fidl::encoding::ValueTypeMarker for ResolverRegistration {
20463        type Borrowed<'a> = &'a Self;
20464        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20465            value
20466        }
20467    }
20468
20469    unsafe impl fidl::encoding::TypeMarker for ResolverRegistration {
20470        type Owned = Self;
20471
20472        #[inline(always)]
20473        fn inline_align(_context: fidl::encoding::Context) -> usize {
20474            8
20475        }
20476
20477        #[inline(always)]
20478        fn inline_size(_context: fidl::encoding::Context) -> usize {
20479            16
20480        }
20481    }
20482
20483    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolverRegistration, D>
20484        for &ResolverRegistration
20485    {
20486        unsafe fn encode(
20487            self,
20488            encoder: &mut fidl::encoding::Encoder<'_, D>,
20489            offset: usize,
20490            mut depth: fidl::encoding::Depth,
20491        ) -> fidl::Result<()> {
20492            encoder.debug_check_bounds::<ResolverRegistration>(offset);
20493            // Vector header
20494            let max_ordinal: u64 = self.max_ordinal_present();
20495            encoder.write_num(max_ordinal, offset);
20496            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20497            // Calling encoder.out_of_line_offset(0) is not allowed.
20498            if max_ordinal == 0 {
20499                return Ok(());
20500            }
20501            depth.increment()?;
20502            let envelope_size = 8;
20503            let bytes_len = max_ordinal as usize * envelope_size;
20504            #[allow(unused_variables)]
20505            let offset = encoder.out_of_line_offset(bytes_len);
20506            let mut _prev_end_offset: usize = 0;
20507            if 1 > max_ordinal {
20508                return Ok(());
20509            }
20510
20511            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20512            // are envelope_size bytes.
20513            let cur_offset: usize = (1 - 1) * envelope_size;
20514
20515            // Zero reserved fields.
20516            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20517
20518            // Safety:
20519            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20520            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20521            //   envelope_size bytes, there is always sufficient room.
20522            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20523                self.resolver.as_ref().map(
20524                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20525                ),
20526                encoder,
20527                offset + cur_offset,
20528                depth,
20529            )?;
20530
20531            _prev_end_offset = cur_offset + envelope_size;
20532            if 2 > max_ordinal {
20533                return Ok(());
20534            }
20535
20536            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20537            // are envelope_size bytes.
20538            let cur_offset: usize = (2 - 1) * envelope_size;
20539
20540            // Zero reserved fields.
20541            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20542
20543            // Safety:
20544            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20545            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20546            //   envelope_size bytes, there is always sufficient room.
20547            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
20548                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
20549                encoder,
20550                offset + cur_offset,
20551                depth,
20552            )?;
20553
20554            _prev_end_offset = cur_offset + envelope_size;
20555            if 3 > max_ordinal {
20556                return Ok(());
20557            }
20558
20559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20560            // are envelope_size bytes.
20561            let cur_offset: usize = (3 - 1) * envelope_size;
20562
20563            // Zero reserved fields.
20564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20565
20566            // Safety:
20567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20569            //   envelope_size bytes, there is always sufficient room.
20570            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20571                self.scheme.as_ref().map(
20572                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20573                ),
20574                encoder,
20575                offset + cur_offset,
20576                depth,
20577            )?;
20578
20579            _prev_end_offset = cur_offset + envelope_size;
20580
20581            Ok(())
20582        }
20583    }
20584
20585    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolverRegistration {
20586        #[inline(always)]
20587        fn new_empty() -> Self {
20588            Self::default()
20589        }
20590
20591        unsafe fn decode(
20592            &mut self,
20593            decoder: &mut fidl::encoding::Decoder<'_, D>,
20594            offset: usize,
20595            mut depth: fidl::encoding::Depth,
20596        ) -> fidl::Result<()> {
20597            decoder.debug_check_bounds::<Self>(offset);
20598            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20599                None => return Err(fidl::Error::NotNullable),
20600                Some(len) => len,
20601            };
20602            // Calling decoder.out_of_line_offset(0) is not allowed.
20603            if len == 0 {
20604                return Ok(());
20605            };
20606            depth.increment()?;
20607            let envelope_size = 8;
20608            let bytes_len = len * envelope_size;
20609            let offset = decoder.out_of_line_offset(bytes_len)?;
20610            // Decode the envelope for each type.
20611            let mut _next_ordinal_to_read = 0;
20612            let mut next_offset = offset;
20613            let end_offset = offset + bytes_len;
20614            _next_ordinal_to_read += 1;
20615            if next_offset >= end_offset {
20616                return Ok(());
20617            }
20618
20619            // Decode unknown envelopes for gaps in ordinals.
20620            while _next_ordinal_to_read < 1 {
20621                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20622                _next_ordinal_to_read += 1;
20623                next_offset += envelope_size;
20624            }
20625
20626            let next_out_of_line = decoder.next_out_of_line();
20627            let handles_before = decoder.remaining_handles();
20628            if let Some((inlined, num_bytes, num_handles)) =
20629                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20630            {
20631                let member_inline_size =
20632                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20633                        decoder.context,
20634                    );
20635                if inlined != (member_inline_size <= 4) {
20636                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20637                }
20638                let inner_offset;
20639                let mut inner_depth = depth.clone();
20640                if inlined {
20641                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20642                    inner_offset = next_offset;
20643                } else {
20644                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20645                    inner_depth.increment()?;
20646                }
20647                let val_ref = self
20648                    .resolver
20649                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20650                fidl::decode!(
20651                    fidl::encoding::BoundedString<100>,
20652                    D,
20653                    val_ref,
20654                    decoder,
20655                    inner_offset,
20656                    inner_depth
20657                )?;
20658                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20659                {
20660                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20661                }
20662                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20663                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20664                }
20665            }
20666
20667            next_offset += envelope_size;
20668            _next_ordinal_to_read += 1;
20669            if next_offset >= end_offset {
20670                return Ok(());
20671            }
20672
20673            // Decode unknown envelopes for gaps in ordinals.
20674            while _next_ordinal_to_read < 2 {
20675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20676                _next_ordinal_to_read += 1;
20677                next_offset += envelope_size;
20678            }
20679
20680            let next_out_of_line = decoder.next_out_of_line();
20681            let handles_before = decoder.remaining_handles();
20682            if let Some((inlined, num_bytes, num_handles)) =
20683                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20684            {
20685                let member_inline_size =
20686                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20687                if inlined != (member_inline_size <= 4) {
20688                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20689                }
20690                let inner_offset;
20691                let mut inner_depth = depth.clone();
20692                if inlined {
20693                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20694                    inner_offset = next_offset;
20695                } else {
20696                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20697                    inner_depth.increment()?;
20698                }
20699                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
20700                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
20701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20702                {
20703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20704                }
20705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20707                }
20708            }
20709
20710            next_offset += envelope_size;
20711            _next_ordinal_to_read += 1;
20712            if next_offset >= end_offset {
20713                return Ok(());
20714            }
20715
20716            // Decode unknown envelopes for gaps in ordinals.
20717            while _next_ordinal_to_read < 3 {
20718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20719                _next_ordinal_to_read += 1;
20720                next_offset += envelope_size;
20721            }
20722
20723            let next_out_of_line = decoder.next_out_of_line();
20724            let handles_before = decoder.remaining_handles();
20725            if let Some((inlined, num_bytes, num_handles)) =
20726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20727            {
20728                let member_inline_size =
20729                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20730                        decoder.context,
20731                    );
20732                if inlined != (member_inline_size <= 4) {
20733                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20734                }
20735                let inner_offset;
20736                let mut inner_depth = depth.clone();
20737                if inlined {
20738                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20739                    inner_offset = next_offset;
20740                } else {
20741                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20742                    inner_depth.increment()?;
20743                }
20744                let val_ref = self
20745                    .scheme
20746                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20747                fidl::decode!(
20748                    fidl::encoding::BoundedString<100>,
20749                    D,
20750                    val_ref,
20751                    decoder,
20752                    inner_offset,
20753                    inner_depth
20754                )?;
20755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20756                {
20757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20758                }
20759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20761                }
20762            }
20763
20764            next_offset += envelope_size;
20765
20766            // Decode the remaining unknown envelopes.
20767            while next_offset < end_offset {
20768                _next_ordinal_to_read += 1;
20769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20770                next_offset += envelope_size;
20771            }
20772
20773            Ok(())
20774        }
20775    }
20776
20777    impl Runner {
20778        #[inline(always)]
20779        fn max_ordinal_present(&self) -> u64 {
20780            if let Some(_) = self.source_path {
20781                return 2;
20782            }
20783            if let Some(_) = self.name {
20784                return 1;
20785            }
20786            0
20787        }
20788    }
20789
20790    impl fidl::encoding::ValueTypeMarker for Runner {
20791        type Borrowed<'a> = &'a Self;
20792        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20793            value
20794        }
20795    }
20796
20797    unsafe impl fidl::encoding::TypeMarker for Runner {
20798        type Owned = Self;
20799
20800        #[inline(always)]
20801        fn inline_align(_context: fidl::encoding::Context) -> usize {
20802            8
20803        }
20804
20805        #[inline(always)]
20806        fn inline_size(_context: fidl::encoding::Context) -> usize {
20807            16
20808        }
20809    }
20810
20811    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Runner, D> for &Runner {
20812        unsafe fn encode(
20813            self,
20814            encoder: &mut fidl::encoding::Encoder<'_, D>,
20815            offset: usize,
20816            mut depth: fidl::encoding::Depth,
20817        ) -> fidl::Result<()> {
20818            encoder.debug_check_bounds::<Runner>(offset);
20819            // Vector header
20820            let max_ordinal: u64 = self.max_ordinal_present();
20821            encoder.write_num(max_ordinal, offset);
20822            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20823            // Calling encoder.out_of_line_offset(0) is not allowed.
20824            if max_ordinal == 0 {
20825                return Ok(());
20826            }
20827            depth.increment()?;
20828            let envelope_size = 8;
20829            let bytes_len = max_ordinal as usize * envelope_size;
20830            #[allow(unused_variables)]
20831            let offset = encoder.out_of_line_offset(bytes_len);
20832            let mut _prev_end_offset: usize = 0;
20833            if 1 > max_ordinal {
20834                return Ok(());
20835            }
20836
20837            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20838            // are envelope_size bytes.
20839            let cur_offset: usize = (1 - 1) * envelope_size;
20840
20841            // Zero reserved fields.
20842            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20843
20844            // Safety:
20845            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20846            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20847            //   envelope_size bytes, there is always sufficient room.
20848            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20849                self.name.as_ref().map(
20850                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20851                ),
20852                encoder,
20853                offset + cur_offset,
20854                depth,
20855            )?;
20856
20857            _prev_end_offset = cur_offset + envelope_size;
20858            if 2 > max_ordinal {
20859                return Ok(());
20860            }
20861
20862            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20863            // are envelope_size bytes.
20864            let cur_offset: usize = (2 - 1) * envelope_size;
20865
20866            // Zero reserved fields.
20867            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20868
20869            // Safety:
20870            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20871            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20872            //   envelope_size bytes, there is always sufficient room.
20873            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20874            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20875            encoder, offset + cur_offset, depth
20876        )?;
20877
20878            _prev_end_offset = cur_offset + envelope_size;
20879
20880            Ok(())
20881        }
20882    }
20883
20884    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Runner {
20885        #[inline(always)]
20886        fn new_empty() -> Self {
20887            Self::default()
20888        }
20889
20890        unsafe fn decode(
20891            &mut self,
20892            decoder: &mut fidl::encoding::Decoder<'_, D>,
20893            offset: usize,
20894            mut depth: fidl::encoding::Depth,
20895        ) -> fidl::Result<()> {
20896            decoder.debug_check_bounds::<Self>(offset);
20897            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20898                None => return Err(fidl::Error::NotNullable),
20899                Some(len) => len,
20900            };
20901            // Calling decoder.out_of_line_offset(0) is not allowed.
20902            if len == 0 {
20903                return Ok(());
20904            };
20905            depth.increment()?;
20906            let envelope_size = 8;
20907            let bytes_len = len * envelope_size;
20908            let offset = decoder.out_of_line_offset(bytes_len)?;
20909            // Decode the envelope for each type.
20910            let mut _next_ordinal_to_read = 0;
20911            let mut next_offset = offset;
20912            let end_offset = offset + bytes_len;
20913            _next_ordinal_to_read += 1;
20914            if next_offset >= end_offset {
20915                return Ok(());
20916            }
20917
20918            // Decode unknown envelopes for gaps in ordinals.
20919            while _next_ordinal_to_read < 1 {
20920                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20921                _next_ordinal_to_read += 1;
20922                next_offset += envelope_size;
20923            }
20924
20925            let next_out_of_line = decoder.next_out_of_line();
20926            let handles_before = decoder.remaining_handles();
20927            if let Some((inlined, num_bytes, num_handles)) =
20928                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20929            {
20930                let member_inline_size =
20931                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20932                        decoder.context,
20933                    );
20934                if inlined != (member_inline_size <= 4) {
20935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20936                }
20937                let inner_offset;
20938                let mut inner_depth = depth.clone();
20939                if inlined {
20940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20941                    inner_offset = next_offset;
20942                } else {
20943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20944                    inner_depth.increment()?;
20945                }
20946                let val_ref = self
20947                    .name
20948                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20949                fidl::decode!(
20950                    fidl::encoding::BoundedString<100>,
20951                    D,
20952                    val_ref,
20953                    decoder,
20954                    inner_offset,
20955                    inner_depth
20956                )?;
20957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20958                {
20959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20960                }
20961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20963                }
20964            }
20965
20966            next_offset += envelope_size;
20967            _next_ordinal_to_read += 1;
20968            if next_offset >= end_offset {
20969                return Ok(());
20970            }
20971
20972            // Decode unknown envelopes for gaps in ordinals.
20973            while _next_ordinal_to_read < 2 {
20974                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20975                _next_ordinal_to_read += 1;
20976                next_offset += envelope_size;
20977            }
20978
20979            let next_out_of_line = decoder.next_out_of_line();
20980            let handles_before = decoder.remaining_handles();
20981            if let Some((inlined, num_bytes, num_handles)) =
20982                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20983            {
20984                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20985                if inlined != (member_inline_size <= 4) {
20986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20987                }
20988                let inner_offset;
20989                let mut inner_depth = depth.clone();
20990                if inlined {
20991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20992                    inner_offset = next_offset;
20993                } else {
20994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20995                    inner_depth.increment()?;
20996                }
20997                let val_ref = self.source_path.get_or_insert_with(|| {
20998                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20999                });
21000                fidl::decode!(
21001                    fidl::encoding::BoundedString<1024>,
21002                    D,
21003                    val_ref,
21004                    decoder,
21005                    inner_offset,
21006                    inner_depth
21007                )?;
21008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21009                {
21010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21011                }
21012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21014                }
21015            }
21016
21017            next_offset += envelope_size;
21018
21019            // Decode the remaining unknown envelopes.
21020            while next_offset < end_offset {
21021                _next_ordinal_to_read += 1;
21022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21023                next_offset += envelope_size;
21024            }
21025
21026            Ok(())
21027        }
21028    }
21029
21030    impl RunnerRegistration {
21031        #[inline(always)]
21032        fn max_ordinal_present(&self) -> u64 {
21033            if let Some(_) = self.target_name {
21034                return 3;
21035            }
21036            if let Some(_) = self.source {
21037                return 2;
21038            }
21039            if let Some(_) = self.source_name {
21040                return 1;
21041            }
21042            0
21043        }
21044    }
21045
21046    impl fidl::encoding::ValueTypeMarker for RunnerRegistration {
21047        type Borrowed<'a> = &'a Self;
21048        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21049            value
21050        }
21051    }
21052
21053    unsafe impl fidl::encoding::TypeMarker for RunnerRegistration {
21054        type Owned = Self;
21055
21056        #[inline(always)]
21057        fn inline_align(_context: fidl::encoding::Context) -> usize {
21058            8
21059        }
21060
21061        #[inline(always)]
21062        fn inline_size(_context: fidl::encoding::Context) -> usize {
21063            16
21064        }
21065    }
21066
21067    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RunnerRegistration, D>
21068        for &RunnerRegistration
21069    {
21070        unsafe fn encode(
21071            self,
21072            encoder: &mut fidl::encoding::Encoder<'_, D>,
21073            offset: usize,
21074            mut depth: fidl::encoding::Depth,
21075        ) -> fidl::Result<()> {
21076            encoder.debug_check_bounds::<RunnerRegistration>(offset);
21077            // Vector header
21078            let max_ordinal: u64 = self.max_ordinal_present();
21079            encoder.write_num(max_ordinal, offset);
21080            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21081            // Calling encoder.out_of_line_offset(0) is not allowed.
21082            if max_ordinal == 0 {
21083                return Ok(());
21084            }
21085            depth.increment()?;
21086            let envelope_size = 8;
21087            let bytes_len = max_ordinal as usize * envelope_size;
21088            #[allow(unused_variables)]
21089            let offset = encoder.out_of_line_offset(bytes_len);
21090            let mut _prev_end_offset: usize = 0;
21091            if 1 > max_ordinal {
21092                return Ok(());
21093            }
21094
21095            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21096            // are envelope_size bytes.
21097            let cur_offset: usize = (1 - 1) * envelope_size;
21098
21099            // Zero reserved fields.
21100            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21101
21102            // Safety:
21103            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21104            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21105            //   envelope_size bytes, there is always sufficient room.
21106            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21107                self.source_name.as_ref().map(
21108                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21109                ),
21110                encoder,
21111                offset + cur_offset,
21112                depth,
21113            )?;
21114
21115            _prev_end_offset = cur_offset + envelope_size;
21116            if 2 > max_ordinal {
21117                return Ok(());
21118            }
21119
21120            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21121            // are envelope_size bytes.
21122            let cur_offset: usize = (2 - 1) * envelope_size;
21123
21124            // Zero reserved fields.
21125            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21126
21127            // Safety:
21128            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21129            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21130            //   envelope_size bytes, there is always sufficient room.
21131            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21132                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21133                encoder,
21134                offset + cur_offset,
21135                depth,
21136            )?;
21137
21138            _prev_end_offset = cur_offset + envelope_size;
21139            if 3 > max_ordinal {
21140                return Ok(());
21141            }
21142
21143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21144            // are envelope_size bytes.
21145            let cur_offset: usize = (3 - 1) * envelope_size;
21146
21147            // Zero reserved fields.
21148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21149
21150            // Safety:
21151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21153            //   envelope_size bytes, there is always sufficient room.
21154            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21155                self.target_name.as_ref().map(
21156                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21157                ),
21158                encoder,
21159                offset + cur_offset,
21160                depth,
21161            )?;
21162
21163            _prev_end_offset = cur_offset + envelope_size;
21164
21165            Ok(())
21166        }
21167    }
21168
21169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RunnerRegistration {
21170        #[inline(always)]
21171        fn new_empty() -> Self {
21172            Self::default()
21173        }
21174
21175        unsafe fn decode(
21176            &mut self,
21177            decoder: &mut fidl::encoding::Decoder<'_, D>,
21178            offset: usize,
21179            mut depth: fidl::encoding::Depth,
21180        ) -> fidl::Result<()> {
21181            decoder.debug_check_bounds::<Self>(offset);
21182            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21183                None => return Err(fidl::Error::NotNullable),
21184                Some(len) => len,
21185            };
21186            // Calling decoder.out_of_line_offset(0) is not allowed.
21187            if len == 0 {
21188                return Ok(());
21189            };
21190            depth.increment()?;
21191            let envelope_size = 8;
21192            let bytes_len = len * envelope_size;
21193            let offset = decoder.out_of_line_offset(bytes_len)?;
21194            // Decode the envelope for each type.
21195            let mut _next_ordinal_to_read = 0;
21196            let mut next_offset = offset;
21197            let end_offset = offset + bytes_len;
21198            _next_ordinal_to_read += 1;
21199            if next_offset >= end_offset {
21200                return Ok(());
21201            }
21202
21203            // Decode unknown envelopes for gaps in ordinals.
21204            while _next_ordinal_to_read < 1 {
21205                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21206                _next_ordinal_to_read += 1;
21207                next_offset += envelope_size;
21208            }
21209
21210            let next_out_of_line = decoder.next_out_of_line();
21211            let handles_before = decoder.remaining_handles();
21212            if let Some((inlined, num_bytes, num_handles)) =
21213                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21214            {
21215                let member_inline_size =
21216                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21217                        decoder.context,
21218                    );
21219                if inlined != (member_inline_size <= 4) {
21220                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21221                }
21222                let inner_offset;
21223                let mut inner_depth = depth.clone();
21224                if inlined {
21225                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21226                    inner_offset = next_offset;
21227                } else {
21228                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21229                    inner_depth.increment()?;
21230                }
21231                let val_ref = self
21232                    .source_name
21233                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21234                fidl::decode!(
21235                    fidl::encoding::BoundedString<100>,
21236                    D,
21237                    val_ref,
21238                    decoder,
21239                    inner_offset,
21240                    inner_depth
21241                )?;
21242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21243                {
21244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21245                }
21246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21248                }
21249            }
21250
21251            next_offset += envelope_size;
21252            _next_ordinal_to_read += 1;
21253            if next_offset >= end_offset {
21254                return Ok(());
21255            }
21256
21257            // Decode unknown envelopes for gaps in ordinals.
21258            while _next_ordinal_to_read < 2 {
21259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21260                _next_ordinal_to_read += 1;
21261                next_offset += envelope_size;
21262            }
21263
21264            let next_out_of_line = decoder.next_out_of_line();
21265            let handles_before = decoder.remaining_handles();
21266            if let Some((inlined, num_bytes, num_handles)) =
21267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21268            {
21269                let member_inline_size =
21270                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21271                if inlined != (member_inline_size <= 4) {
21272                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21273                }
21274                let inner_offset;
21275                let mut inner_depth = depth.clone();
21276                if inlined {
21277                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21278                    inner_offset = next_offset;
21279                } else {
21280                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21281                    inner_depth.increment()?;
21282                }
21283                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
21284                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21285                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21286                {
21287                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21288                }
21289                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21290                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21291                }
21292            }
21293
21294            next_offset += envelope_size;
21295            _next_ordinal_to_read += 1;
21296            if next_offset >= end_offset {
21297                return Ok(());
21298            }
21299
21300            // Decode unknown envelopes for gaps in ordinals.
21301            while _next_ordinal_to_read < 3 {
21302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21303                _next_ordinal_to_read += 1;
21304                next_offset += envelope_size;
21305            }
21306
21307            let next_out_of_line = decoder.next_out_of_line();
21308            let handles_before = decoder.remaining_handles();
21309            if let Some((inlined, num_bytes, num_handles)) =
21310                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21311            {
21312                let member_inline_size =
21313                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21314                        decoder.context,
21315                    );
21316                if inlined != (member_inline_size <= 4) {
21317                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21318                }
21319                let inner_offset;
21320                let mut inner_depth = depth.clone();
21321                if inlined {
21322                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21323                    inner_offset = next_offset;
21324                } else {
21325                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21326                    inner_depth.increment()?;
21327                }
21328                let val_ref = self
21329                    .target_name
21330                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21331                fidl::decode!(
21332                    fidl::encoding::BoundedString<100>,
21333                    D,
21334                    val_ref,
21335                    decoder,
21336                    inner_offset,
21337                    inner_depth
21338                )?;
21339                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21340                {
21341                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21342                }
21343                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21344                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21345                }
21346            }
21347
21348            next_offset += envelope_size;
21349
21350            // Decode the remaining unknown envelopes.
21351            while next_offset < end_offset {
21352                _next_ordinal_to_read += 1;
21353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21354                next_offset += envelope_size;
21355            }
21356
21357            Ok(())
21358        }
21359    }
21360
21361    impl Service {
21362        #[inline(always)]
21363        fn max_ordinal_present(&self) -> u64 {
21364            if let Some(_) = self.source_path {
21365                return 2;
21366            }
21367            if let Some(_) = self.name {
21368                return 1;
21369            }
21370            0
21371        }
21372    }
21373
21374    impl fidl::encoding::ValueTypeMarker for Service {
21375        type Borrowed<'a> = &'a Self;
21376        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21377            value
21378        }
21379    }
21380
21381    unsafe impl fidl::encoding::TypeMarker for Service {
21382        type Owned = Self;
21383
21384        #[inline(always)]
21385        fn inline_align(_context: fidl::encoding::Context) -> usize {
21386            8
21387        }
21388
21389        #[inline(always)]
21390        fn inline_size(_context: fidl::encoding::Context) -> usize {
21391            16
21392        }
21393    }
21394
21395    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Service, D> for &Service {
21396        unsafe fn encode(
21397            self,
21398            encoder: &mut fidl::encoding::Encoder<'_, D>,
21399            offset: usize,
21400            mut depth: fidl::encoding::Depth,
21401        ) -> fidl::Result<()> {
21402            encoder.debug_check_bounds::<Service>(offset);
21403            // Vector header
21404            let max_ordinal: u64 = self.max_ordinal_present();
21405            encoder.write_num(max_ordinal, offset);
21406            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21407            // Calling encoder.out_of_line_offset(0) is not allowed.
21408            if max_ordinal == 0 {
21409                return Ok(());
21410            }
21411            depth.increment()?;
21412            let envelope_size = 8;
21413            let bytes_len = max_ordinal as usize * envelope_size;
21414            #[allow(unused_variables)]
21415            let offset = encoder.out_of_line_offset(bytes_len);
21416            let mut _prev_end_offset: usize = 0;
21417            if 1 > max_ordinal {
21418                return Ok(());
21419            }
21420
21421            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21422            // are envelope_size bytes.
21423            let cur_offset: usize = (1 - 1) * envelope_size;
21424
21425            // Zero reserved fields.
21426            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21427
21428            // Safety:
21429            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21430            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21431            //   envelope_size bytes, there is always sufficient room.
21432            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21433                self.name.as_ref().map(
21434                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21435                ),
21436                encoder,
21437                offset + cur_offset,
21438                depth,
21439            )?;
21440
21441            _prev_end_offset = cur_offset + envelope_size;
21442            if 2 > max_ordinal {
21443                return Ok(());
21444            }
21445
21446            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21447            // are envelope_size bytes.
21448            let cur_offset: usize = (2 - 1) * envelope_size;
21449
21450            // Zero reserved fields.
21451            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21452
21453            // Safety:
21454            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21455            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21456            //   envelope_size bytes, there is always sufficient room.
21457            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
21458            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21459            encoder, offset + cur_offset, depth
21460        )?;
21461
21462            _prev_end_offset = cur_offset + envelope_size;
21463
21464            Ok(())
21465        }
21466    }
21467
21468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Service {
21469        #[inline(always)]
21470        fn new_empty() -> Self {
21471            Self::default()
21472        }
21473
21474        unsafe fn decode(
21475            &mut self,
21476            decoder: &mut fidl::encoding::Decoder<'_, D>,
21477            offset: usize,
21478            mut depth: fidl::encoding::Depth,
21479        ) -> fidl::Result<()> {
21480            decoder.debug_check_bounds::<Self>(offset);
21481            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21482                None => return Err(fidl::Error::NotNullable),
21483                Some(len) => len,
21484            };
21485            // Calling decoder.out_of_line_offset(0) is not allowed.
21486            if len == 0 {
21487                return Ok(());
21488            };
21489            depth.increment()?;
21490            let envelope_size = 8;
21491            let bytes_len = len * envelope_size;
21492            let offset = decoder.out_of_line_offset(bytes_len)?;
21493            // Decode the envelope for each type.
21494            let mut _next_ordinal_to_read = 0;
21495            let mut next_offset = offset;
21496            let end_offset = offset + bytes_len;
21497            _next_ordinal_to_read += 1;
21498            if next_offset >= end_offset {
21499                return Ok(());
21500            }
21501
21502            // Decode unknown envelopes for gaps in ordinals.
21503            while _next_ordinal_to_read < 1 {
21504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21505                _next_ordinal_to_read += 1;
21506                next_offset += envelope_size;
21507            }
21508
21509            let next_out_of_line = decoder.next_out_of_line();
21510            let handles_before = decoder.remaining_handles();
21511            if let Some((inlined, num_bytes, num_handles)) =
21512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21513            {
21514                let member_inline_size =
21515                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21516                        decoder.context,
21517                    );
21518                if inlined != (member_inline_size <= 4) {
21519                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21520                }
21521                let inner_offset;
21522                let mut inner_depth = depth.clone();
21523                if inlined {
21524                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21525                    inner_offset = next_offset;
21526                } else {
21527                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21528                    inner_depth.increment()?;
21529                }
21530                let val_ref = self
21531                    .name
21532                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21533                fidl::decode!(
21534                    fidl::encoding::BoundedString<100>,
21535                    D,
21536                    val_ref,
21537                    decoder,
21538                    inner_offset,
21539                    inner_depth
21540                )?;
21541                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21542                {
21543                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21544                }
21545                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21546                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21547                }
21548            }
21549
21550            next_offset += envelope_size;
21551            _next_ordinal_to_read += 1;
21552            if next_offset >= end_offset {
21553                return Ok(());
21554            }
21555
21556            // Decode unknown envelopes for gaps in ordinals.
21557            while _next_ordinal_to_read < 2 {
21558                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21559                _next_ordinal_to_read += 1;
21560                next_offset += envelope_size;
21561            }
21562
21563            let next_out_of_line = decoder.next_out_of_line();
21564            let handles_before = decoder.remaining_handles();
21565            if let Some((inlined, num_bytes, num_handles)) =
21566                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21567            {
21568                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21569                if inlined != (member_inline_size <= 4) {
21570                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21571                }
21572                let inner_offset;
21573                let mut inner_depth = depth.clone();
21574                if inlined {
21575                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21576                    inner_offset = next_offset;
21577                } else {
21578                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21579                    inner_depth.increment()?;
21580                }
21581                let val_ref = self.source_path.get_or_insert_with(|| {
21582                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
21583                });
21584                fidl::decode!(
21585                    fidl::encoding::BoundedString<1024>,
21586                    D,
21587                    val_ref,
21588                    decoder,
21589                    inner_offset,
21590                    inner_depth
21591                )?;
21592                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21593                {
21594                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21595                }
21596                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21597                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21598                }
21599            }
21600
21601            next_offset += envelope_size;
21602
21603            // Decode the remaining unknown envelopes.
21604            while next_offset < end_offset {
21605                _next_ordinal_to_read += 1;
21606                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21607                next_offset += envelope_size;
21608            }
21609
21610            Ok(())
21611        }
21612    }
21613
21614    impl Storage {
21615        #[inline(always)]
21616        fn max_ordinal_present(&self) -> u64 {
21617            if let Some(_) = self.storage_id {
21618                return 5;
21619            }
21620            if let Some(_) = self.subdir {
21621                return 4;
21622            }
21623            if let Some(_) = self.backing_dir {
21624                return 3;
21625            }
21626            if let Some(_) = self.source {
21627                return 2;
21628            }
21629            if let Some(_) = self.name {
21630                return 1;
21631            }
21632            0
21633        }
21634    }
21635
21636    impl fidl::encoding::ValueTypeMarker for Storage {
21637        type Borrowed<'a> = &'a Self;
21638        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21639            value
21640        }
21641    }
21642
21643    unsafe impl fidl::encoding::TypeMarker for Storage {
21644        type Owned = Self;
21645
21646        #[inline(always)]
21647        fn inline_align(_context: fidl::encoding::Context) -> usize {
21648            8
21649        }
21650
21651        #[inline(always)]
21652        fn inline_size(_context: fidl::encoding::Context) -> usize {
21653            16
21654        }
21655    }
21656
21657    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Storage, D> for &Storage {
21658        unsafe fn encode(
21659            self,
21660            encoder: &mut fidl::encoding::Encoder<'_, D>,
21661            offset: usize,
21662            mut depth: fidl::encoding::Depth,
21663        ) -> fidl::Result<()> {
21664            encoder.debug_check_bounds::<Storage>(offset);
21665            // Vector header
21666            let max_ordinal: u64 = self.max_ordinal_present();
21667            encoder.write_num(max_ordinal, offset);
21668            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21669            // Calling encoder.out_of_line_offset(0) is not allowed.
21670            if max_ordinal == 0 {
21671                return Ok(());
21672            }
21673            depth.increment()?;
21674            let envelope_size = 8;
21675            let bytes_len = max_ordinal as usize * envelope_size;
21676            #[allow(unused_variables)]
21677            let offset = encoder.out_of_line_offset(bytes_len);
21678            let mut _prev_end_offset: usize = 0;
21679            if 1 > max_ordinal {
21680                return Ok(());
21681            }
21682
21683            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21684            // are envelope_size bytes.
21685            let cur_offset: usize = (1 - 1) * envelope_size;
21686
21687            // Zero reserved fields.
21688            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21689
21690            // Safety:
21691            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21692            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21693            //   envelope_size bytes, there is always sufficient room.
21694            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21695                self.name.as_ref().map(
21696                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21697                ),
21698                encoder,
21699                offset + cur_offset,
21700                depth,
21701            )?;
21702
21703            _prev_end_offset = cur_offset + envelope_size;
21704            if 2 > max_ordinal {
21705                return Ok(());
21706            }
21707
21708            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21709            // are envelope_size bytes.
21710            let cur_offset: usize = (2 - 1) * envelope_size;
21711
21712            // Zero reserved fields.
21713            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21714
21715            // Safety:
21716            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21717            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21718            //   envelope_size bytes, there is always sufficient room.
21719            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21720                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21721                encoder,
21722                offset + cur_offset,
21723                depth,
21724            )?;
21725
21726            _prev_end_offset = cur_offset + envelope_size;
21727            if 3 > max_ordinal {
21728                return Ok(());
21729            }
21730
21731            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21732            // are envelope_size bytes.
21733            let cur_offset: usize = (3 - 1) * envelope_size;
21734
21735            // Zero reserved fields.
21736            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21737
21738            // Safety:
21739            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21740            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21741            //   envelope_size bytes, there is always sufficient room.
21742            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21743                self.backing_dir.as_ref().map(
21744                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21745                ),
21746                encoder,
21747                offset + cur_offset,
21748                depth,
21749            )?;
21750
21751            _prev_end_offset = cur_offset + envelope_size;
21752            if 4 > 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 = (4 - 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::<fidl::encoding::BoundedString<1024>, D>(
21768            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21769            encoder, offset + cur_offset, depth
21770        )?;
21771
21772            _prev_end_offset = cur_offset + envelope_size;
21773            if 5 > max_ordinal {
21774                return Ok(());
21775            }
21776
21777            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21778            // are envelope_size bytes.
21779            let cur_offset: usize = (5 - 1) * envelope_size;
21780
21781            // Zero reserved fields.
21782            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21783
21784            // Safety:
21785            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21786            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21787            //   envelope_size bytes, there is always sufficient room.
21788            fidl::encoding::encode_in_envelope_optional::<StorageId, D>(
21789                self.storage_id
21790                    .as_ref()
21791                    .map(<StorageId as fidl::encoding::ValueTypeMarker>::borrow),
21792                encoder,
21793                offset + cur_offset,
21794                depth,
21795            )?;
21796
21797            _prev_end_offset = cur_offset + envelope_size;
21798
21799            Ok(())
21800        }
21801    }
21802
21803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Storage {
21804        #[inline(always)]
21805        fn new_empty() -> Self {
21806            Self::default()
21807        }
21808
21809        unsafe fn decode(
21810            &mut self,
21811            decoder: &mut fidl::encoding::Decoder<'_, D>,
21812            offset: usize,
21813            mut depth: fidl::encoding::Depth,
21814        ) -> fidl::Result<()> {
21815            decoder.debug_check_bounds::<Self>(offset);
21816            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21817                None => return Err(fidl::Error::NotNullable),
21818                Some(len) => len,
21819            };
21820            // Calling decoder.out_of_line_offset(0) is not allowed.
21821            if len == 0 {
21822                return Ok(());
21823            };
21824            depth.increment()?;
21825            let envelope_size = 8;
21826            let bytes_len = len * envelope_size;
21827            let offset = decoder.out_of_line_offset(bytes_len)?;
21828            // Decode the envelope for each type.
21829            let mut _next_ordinal_to_read = 0;
21830            let mut next_offset = offset;
21831            let end_offset = offset + bytes_len;
21832            _next_ordinal_to_read += 1;
21833            if next_offset >= end_offset {
21834                return Ok(());
21835            }
21836
21837            // Decode unknown envelopes for gaps in ordinals.
21838            while _next_ordinal_to_read < 1 {
21839                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21840                _next_ordinal_to_read += 1;
21841                next_offset += envelope_size;
21842            }
21843
21844            let next_out_of_line = decoder.next_out_of_line();
21845            let handles_before = decoder.remaining_handles();
21846            if let Some((inlined, num_bytes, num_handles)) =
21847                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21848            {
21849                let member_inline_size =
21850                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21851                        decoder.context,
21852                    );
21853                if inlined != (member_inline_size <= 4) {
21854                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21855                }
21856                let inner_offset;
21857                let mut inner_depth = depth.clone();
21858                if inlined {
21859                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21860                    inner_offset = next_offset;
21861                } else {
21862                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21863                    inner_depth.increment()?;
21864                }
21865                let val_ref = self
21866                    .name
21867                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21868                fidl::decode!(
21869                    fidl::encoding::BoundedString<100>,
21870                    D,
21871                    val_ref,
21872                    decoder,
21873                    inner_offset,
21874                    inner_depth
21875                )?;
21876                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21877                {
21878                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21879                }
21880                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21881                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21882                }
21883            }
21884
21885            next_offset += envelope_size;
21886            _next_ordinal_to_read += 1;
21887            if next_offset >= end_offset {
21888                return Ok(());
21889            }
21890
21891            // Decode unknown envelopes for gaps in ordinals.
21892            while _next_ordinal_to_read < 2 {
21893                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21894                _next_ordinal_to_read += 1;
21895                next_offset += envelope_size;
21896            }
21897
21898            let next_out_of_line = decoder.next_out_of_line();
21899            let handles_before = decoder.remaining_handles();
21900            if let Some((inlined, num_bytes, num_handles)) =
21901                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21902            {
21903                let member_inline_size =
21904                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21905                if inlined != (member_inline_size <= 4) {
21906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21907                }
21908                let inner_offset;
21909                let mut inner_depth = depth.clone();
21910                if inlined {
21911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21912                    inner_offset = next_offset;
21913                } else {
21914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21915                    inner_depth.increment()?;
21916                }
21917                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
21918                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21919                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21920                {
21921                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21922                }
21923                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21924                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21925                }
21926            }
21927
21928            next_offset += envelope_size;
21929            _next_ordinal_to_read += 1;
21930            if next_offset >= end_offset {
21931                return Ok(());
21932            }
21933
21934            // Decode unknown envelopes for gaps in ordinals.
21935            while _next_ordinal_to_read < 3 {
21936                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21937                _next_ordinal_to_read += 1;
21938                next_offset += envelope_size;
21939            }
21940
21941            let next_out_of_line = decoder.next_out_of_line();
21942            let handles_before = decoder.remaining_handles();
21943            if let Some((inlined, num_bytes, num_handles)) =
21944                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21945            {
21946                let member_inline_size =
21947                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21948                        decoder.context,
21949                    );
21950                if inlined != (member_inline_size <= 4) {
21951                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21952                }
21953                let inner_offset;
21954                let mut inner_depth = depth.clone();
21955                if inlined {
21956                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21957                    inner_offset = next_offset;
21958                } else {
21959                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21960                    inner_depth.increment()?;
21961                }
21962                let val_ref = self
21963                    .backing_dir
21964                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21965                fidl::decode!(
21966                    fidl::encoding::BoundedString<100>,
21967                    D,
21968                    val_ref,
21969                    decoder,
21970                    inner_offset,
21971                    inner_depth
21972                )?;
21973                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21974                {
21975                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21976                }
21977                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21978                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21979                }
21980            }
21981
21982            next_offset += envelope_size;
21983            _next_ordinal_to_read += 1;
21984            if next_offset >= end_offset {
21985                return Ok(());
21986            }
21987
21988            // Decode unknown envelopes for gaps in ordinals.
21989            while _next_ordinal_to_read < 4 {
21990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21991                _next_ordinal_to_read += 1;
21992                next_offset += envelope_size;
21993            }
21994
21995            let next_out_of_line = decoder.next_out_of_line();
21996            let handles_before = decoder.remaining_handles();
21997            if let Some((inlined, num_bytes, num_handles)) =
21998                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21999            {
22000                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22001                if inlined != (member_inline_size <= 4) {
22002                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22003                }
22004                let inner_offset;
22005                let mut inner_depth = depth.clone();
22006                if inlined {
22007                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22008                    inner_offset = next_offset;
22009                } else {
22010                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22011                    inner_depth.increment()?;
22012                }
22013                let val_ref = self.subdir.get_or_insert_with(|| {
22014                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22015                });
22016                fidl::decode!(
22017                    fidl::encoding::BoundedString<1024>,
22018                    D,
22019                    val_ref,
22020                    decoder,
22021                    inner_offset,
22022                    inner_depth
22023                )?;
22024                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22025                {
22026                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22027                }
22028                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22029                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22030                }
22031            }
22032
22033            next_offset += envelope_size;
22034            _next_ordinal_to_read += 1;
22035            if next_offset >= end_offset {
22036                return Ok(());
22037            }
22038
22039            // Decode unknown envelopes for gaps in ordinals.
22040            while _next_ordinal_to_read < 5 {
22041                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22042                _next_ordinal_to_read += 1;
22043                next_offset += envelope_size;
22044            }
22045
22046            let next_out_of_line = decoder.next_out_of_line();
22047            let handles_before = decoder.remaining_handles();
22048            if let Some((inlined, num_bytes, num_handles)) =
22049                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22050            {
22051                let member_inline_size =
22052                    <StorageId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22053                if inlined != (member_inline_size <= 4) {
22054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22055                }
22056                let inner_offset;
22057                let mut inner_depth = depth.clone();
22058                if inlined {
22059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22060                    inner_offset = next_offset;
22061                } else {
22062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22063                    inner_depth.increment()?;
22064                }
22065                let val_ref = self.storage_id.get_or_insert_with(|| fidl::new_empty!(StorageId, D));
22066                fidl::decode!(StorageId, D, val_ref, decoder, inner_offset, inner_depth)?;
22067                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22068                {
22069                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22070                }
22071                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22072                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22073                }
22074            }
22075
22076            next_offset += envelope_size;
22077
22078            // Decode the remaining unknown envelopes.
22079            while next_offset < end_offset {
22080                _next_ordinal_to_read += 1;
22081                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22082                next_offset += envelope_size;
22083            }
22084
22085            Ok(())
22086        }
22087    }
22088
22089    impl UseConfiguration {
22090        #[inline(always)]
22091        fn max_ordinal_present(&self) -> u64 {
22092            if let Some(_) = self.source_dictionary {
22093                return 7;
22094            }
22095            if let Some(_) = self.default {
22096                return 6;
22097            }
22098            if let Some(_) = self.type_ {
22099                return 5;
22100            }
22101            if let Some(_) = self.availability {
22102                return 4;
22103            }
22104            if let Some(_) = self.target_name {
22105                return 3;
22106            }
22107            if let Some(_) = self.source_name {
22108                return 2;
22109            }
22110            if let Some(_) = self.source {
22111                return 1;
22112            }
22113            0
22114        }
22115    }
22116
22117    impl fidl::encoding::ValueTypeMarker for UseConfiguration {
22118        type Borrowed<'a> = &'a Self;
22119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22120            value
22121        }
22122    }
22123
22124    unsafe impl fidl::encoding::TypeMarker for UseConfiguration {
22125        type Owned = Self;
22126
22127        #[inline(always)]
22128        fn inline_align(_context: fidl::encoding::Context) -> usize {
22129            8
22130        }
22131
22132        #[inline(always)]
22133        fn inline_size(_context: fidl::encoding::Context) -> usize {
22134            16
22135        }
22136    }
22137
22138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseConfiguration, D>
22139        for &UseConfiguration
22140    {
22141        unsafe fn encode(
22142            self,
22143            encoder: &mut fidl::encoding::Encoder<'_, D>,
22144            offset: usize,
22145            mut depth: fidl::encoding::Depth,
22146        ) -> fidl::Result<()> {
22147            encoder.debug_check_bounds::<UseConfiguration>(offset);
22148            // Vector header
22149            let max_ordinal: u64 = self.max_ordinal_present();
22150            encoder.write_num(max_ordinal, offset);
22151            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22152            // Calling encoder.out_of_line_offset(0) is not allowed.
22153            if max_ordinal == 0 {
22154                return Ok(());
22155            }
22156            depth.increment()?;
22157            let envelope_size = 8;
22158            let bytes_len = max_ordinal as usize * envelope_size;
22159            #[allow(unused_variables)]
22160            let offset = encoder.out_of_line_offset(bytes_len);
22161            let mut _prev_end_offset: usize = 0;
22162            if 1 > max_ordinal {
22163                return Ok(());
22164            }
22165
22166            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22167            // are envelope_size bytes.
22168            let cur_offset: usize = (1 - 1) * envelope_size;
22169
22170            // Zero reserved fields.
22171            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22172
22173            // Safety:
22174            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22175            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22176            //   envelope_size bytes, there is always sufficient room.
22177            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
22178                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
22179                encoder,
22180                offset + cur_offset,
22181                depth,
22182            )?;
22183
22184            _prev_end_offset = cur_offset + envelope_size;
22185            if 2 > max_ordinal {
22186                return Ok(());
22187            }
22188
22189            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22190            // are envelope_size bytes.
22191            let cur_offset: usize = (2 - 1) * envelope_size;
22192
22193            // Zero reserved fields.
22194            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22195
22196            // Safety:
22197            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22198            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22199            //   envelope_size bytes, there is always sufficient room.
22200            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22201                self.source_name.as_ref().map(
22202                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22203                ),
22204                encoder,
22205                offset + cur_offset,
22206                depth,
22207            )?;
22208
22209            _prev_end_offset = cur_offset + envelope_size;
22210            if 3 > max_ordinal {
22211                return Ok(());
22212            }
22213
22214            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22215            // are envelope_size bytes.
22216            let cur_offset: usize = (3 - 1) * envelope_size;
22217
22218            // Zero reserved fields.
22219            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22220
22221            // Safety:
22222            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22223            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22224            //   envelope_size bytes, there is always sufficient room.
22225            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22226                self.target_name.as_ref().map(
22227                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22228                ),
22229                encoder,
22230                offset + cur_offset,
22231                depth,
22232            )?;
22233
22234            _prev_end_offset = cur_offset + envelope_size;
22235            if 4 > max_ordinal {
22236                return Ok(());
22237            }
22238
22239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22240            // are envelope_size bytes.
22241            let cur_offset: usize = (4 - 1) * envelope_size;
22242
22243            // Zero reserved fields.
22244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22245
22246            // Safety:
22247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22249            //   envelope_size bytes, there is always sufficient room.
22250            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
22251                self.availability
22252                    .as_ref()
22253                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
22254                encoder,
22255                offset + cur_offset,
22256                depth,
22257            )?;
22258
22259            _prev_end_offset = cur_offset + envelope_size;
22260            if 5 > max_ordinal {
22261                return Ok(());
22262            }
22263
22264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22265            // are envelope_size bytes.
22266            let cur_offset: usize = (5 - 1) * envelope_size;
22267
22268            // Zero reserved fields.
22269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22270
22271            // Safety:
22272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22274            //   envelope_size bytes, there is always sufficient room.
22275            fidl::encoding::encode_in_envelope_optional::<ConfigType, D>(
22276                self.type_.as_ref().map(<ConfigType as fidl::encoding::ValueTypeMarker>::borrow),
22277                encoder,
22278                offset + cur_offset,
22279                depth,
22280            )?;
22281
22282            _prev_end_offset = cur_offset + envelope_size;
22283            if 6 > max_ordinal {
22284                return Ok(());
22285            }
22286
22287            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22288            // are envelope_size bytes.
22289            let cur_offset: usize = (6 - 1) * envelope_size;
22290
22291            // Zero reserved fields.
22292            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22293
22294            // Safety:
22295            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22296            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22297            //   envelope_size bytes, there is always sufficient room.
22298            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
22299                self.default.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
22300                encoder,
22301                offset + cur_offset,
22302                depth,
22303            )?;
22304
22305            _prev_end_offset = cur_offset + envelope_size;
22306            if 7 > max_ordinal {
22307                return Ok(());
22308            }
22309
22310            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22311            // are envelope_size bytes.
22312            let cur_offset: usize = (7 - 1) * envelope_size;
22313
22314            // Zero reserved fields.
22315            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22316
22317            // Safety:
22318            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22319            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22320            //   envelope_size bytes, there is always sufficient room.
22321            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22322            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22323            encoder, offset + cur_offset, depth
22324        )?;
22325
22326            _prev_end_offset = cur_offset + envelope_size;
22327
22328            Ok(())
22329        }
22330    }
22331
22332    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseConfiguration {
22333        #[inline(always)]
22334        fn new_empty() -> Self {
22335            Self::default()
22336        }
22337
22338        unsafe fn decode(
22339            &mut self,
22340            decoder: &mut fidl::encoding::Decoder<'_, D>,
22341            offset: usize,
22342            mut depth: fidl::encoding::Depth,
22343        ) -> fidl::Result<()> {
22344            decoder.debug_check_bounds::<Self>(offset);
22345            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22346                None => return Err(fidl::Error::NotNullable),
22347                Some(len) => len,
22348            };
22349            // Calling decoder.out_of_line_offset(0) is not allowed.
22350            if len == 0 {
22351                return Ok(());
22352            };
22353            depth.increment()?;
22354            let envelope_size = 8;
22355            let bytes_len = len * envelope_size;
22356            let offset = decoder.out_of_line_offset(bytes_len)?;
22357            // Decode the envelope for each type.
22358            let mut _next_ordinal_to_read = 0;
22359            let mut next_offset = offset;
22360            let end_offset = offset + bytes_len;
22361            _next_ordinal_to_read += 1;
22362            if next_offset >= end_offset {
22363                return Ok(());
22364            }
22365
22366            // Decode unknown envelopes for gaps in ordinals.
22367            while _next_ordinal_to_read < 1 {
22368                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22369                _next_ordinal_to_read += 1;
22370                next_offset += envelope_size;
22371            }
22372
22373            let next_out_of_line = decoder.next_out_of_line();
22374            let handles_before = decoder.remaining_handles();
22375            if let Some((inlined, num_bytes, num_handles)) =
22376                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22377            {
22378                let member_inline_size =
22379                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22380                if inlined != (member_inline_size <= 4) {
22381                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22382                }
22383                let inner_offset;
22384                let mut inner_depth = depth.clone();
22385                if inlined {
22386                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22387                    inner_offset = next_offset;
22388                } else {
22389                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22390                    inner_depth.increment()?;
22391                }
22392                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22393                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22395                {
22396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22397                }
22398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22400                }
22401            }
22402
22403            next_offset += envelope_size;
22404            _next_ordinal_to_read += 1;
22405            if next_offset >= end_offset {
22406                return Ok(());
22407            }
22408
22409            // Decode unknown envelopes for gaps in ordinals.
22410            while _next_ordinal_to_read < 2 {
22411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22412                _next_ordinal_to_read += 1;
22413                next_offset += envelope_size;
22414            }
22415
22416            let next_out_of_line = decoder.next_out_of_line();
22417            let handles_before = decoder.remaining_handles();
22418            if let Some((inlined, num_bytes, num_handles)) =
22419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22420            {
22421                let member_inline_size =
22422                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22423                        decoder.context,
22424                    );
22425                if inlined != (member_inline_size <= 4) {
22426                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22427                }
22428                let inner_offset;
22429                let mut inner_depth = depth.clone();
22430                if inlined {
22431                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22432                    inner_offset = next_offset;
22433                } else {
22434                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22435                    inner_depth.increment()?;
22436                }
22437                let val_ref = self
22438                    .source_name
22439                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22440                fidl::decode!(
22441                    fidl::encoding::BoundedString<100>,
22442                    D,
22443                    val_ref,
22444                    decoder,
22445                    inner_offset,
22446                    inner_depth
22447                )?;
22448                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22449                {
22450                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22451                }
22452                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22453                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22454                }
22455            }
22456
22457            next_offset += envelope_size;
22458            _next_ordinal_to_read += 1;
22459            if next_offset >= end_offset {
22460                return Ok(());
22461            }
22462
22463            // Decode unknown envelopes for gaps in ordinals.
22464            while _next_ordinal_to_read < 3 {
22465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22466                _next_ordinal_to_read += 1;
22467                next_offset += envelope_size;
22468            }
22469
22470            let next_out_of_line = decoder.next_out_of_line();
22471            let handles_before = decoder.remaining_handles();
22472            if let Some((inlined, num_bytes, num_handles)) =
22473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22474            {
22475                let member_inline_size =
22476                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22477                        decoder.context,
22478                    );
22479                if inlined != (member_inline_size <= 4) {
22480                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22481                }
22482                let inner_offset;
22483                let mut inner_depth = depth.clone();
22484                if inlined {
22485                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22486                    inner_offset = next_offset;
22487                } else {
22488                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22489                    inner_depth.increment()?;
22490                }
22491                let val_ref = self
22492                    .target_name
22493                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22494                fidl::decode!(
22495                    fidl::encoding::BoundedString<100>,
22496                    D,
22497                    val_ref,
22498                    decoder,
22499                    inner_offset,
22500                    inner_depth
22501                )?;
22502                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22503                {
22504                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22505                }
22506                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22507                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22508                }
22509            }
22510
22511            next_offset += envelope_size;
22512            _next_ordinal_to_read += 1;
22513            if next_offset >= end_offset {
22514                return Ok(());
22515            }
22516
22517            // Decode unknown envelopes for gaps in ordinals.
22518            while _next_ordinal_to_read < 4 {
22519                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22520                _next_ordinal_to_read += 1;
22521                next_offset += envelope_size;
22522            }
22523
22524            let next_out_of_line = decoder.next_out_of_line();
22525            let handles_before = decoder.remaining_handles();
22526            if let Some((inlined, num_bytes, num_handles)) =
22527                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22528            {
22529                let member_inline_size =
22530                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22531                if inlined != (member_inline_size <= 4) {
22532                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22533                }
22534                let inner_offset;
22535                let mut inner_depth = depth.clone();
22536                if inlined {
22537                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22538                    inner_offset = next_offset;
22539                } else {
22540                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22541                    inner_depth.increment()?;
22542                }
22543                let val_ref =
22544                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
22545                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
22546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22547                {
22548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22549                }
22550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22552                }
22553            }
22554
22555            next_offset += envelope_size;
22556            _next_ordinal_to_read += 1;
22557            if next_offset >= end_offset {
22558                return Ok(());
22559            }
22560
22561            // Decode unknown envelopes for gaps in ordinals.
22562            while _next_ordinal_to_read < 5 {
22563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22564                _next_ordinal_to_read += 1;
22565                next_offset += envelope_size;
22566            }
22567
22568            let next_out_of_line = decoder.next_out_of_line();
22569            let handles_before = decoder.remaining_handles();
22570            if let Some((inlined, num_bytes, num_handles)) =
22571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22572            {
22573                let member_inline_size =
22574                    <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22575                if inlined != (member_inline_size <= 4) {
22576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22577                }
22578                let inner_offset;
22579                let mut inner_depth = depth.clone();
22580                if inlined {
22581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22582                    inner_offset = next_offset;
22583                } else {
22584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22585                    inner_depth.increment()?;
22586                }
22587                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(ConfigType, D));
22588                fidl::decode!(ConfigType, D, val_ref, decoder, inner_offset, inner_depth)?;
22589                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22590                {
22591                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22592                }
22593                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22594                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22595                }
22596            }
22597
22598            next_offset += envelope_size;
22599            _next_ordinal_to_read += 1;
22600            if next_offset >= end_offset {
22601                return Ok(());
22602            }
22603
22604            // Decode unknown envelopes for gaps in ordinals.
22605            while _next_ordinal_to_read < 6 {
22606                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22607                _next_ordinal_to_read += 1;
22608                next_offset += envelope_size;
22609            }
22610
22611            let next_out_of_line = decoder.next_out_of_line();
22612            let handles_before = decoder.remaining_handles();
22613            if let Some((inlined, num_bytes, num_handles)) =
22614                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22615            {
22616                let member_inline_size =
22617                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22618                if inlined != (member_inline_size <= 4) {
22619                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22620                }
22621                let inner_offset;
22622                let mut inner_depth = depth.clone();
22623                if inlined {
22624                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22625                    inner_offset = next_offset;
22626                } else {
22627                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22628                    inner_depth.increment()?;
22629                }
22630                let val_ref = self.default.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
22631                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
22632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22633                {
22634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22635                }
22636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22638                }
22639            }
22640
22641            next_offset += envelope_size;
22642            _next_ordinal_to_read += 1;
22643            if next_offset >= end_offset {
22644                return Ok(());
22645            }
22646
22647            // Decode unknown envelopes for gaps in ordinals.
22648            while _next_ordinal_to_read < 7 {
22649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22650                _next_ordinal_to_read += 1;
22651                next_offset += envelope_size;
22652            }
22653
22654            let next_out_of_line = decoder.next_out_of_line();
22655            let handles_before = decoder.remaining_handles();
22656            if let Some((inlined, num_bytes, num_handles)) =
22657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22658            {
22659                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22660                if inlined != (member_inline_size <= 4) {
22661                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22662                }
22663                let inner_offset;
22664                let mut inner_depth = depth.clone();
22665                if inlined {
22666                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22667                    inner_offset = next_offset;
22668                } else {
22669                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22670                    inner_depth.increment()?;
22671                }
22672                let val_ref = self.source_dictionary.get_or_insert_with(|| {
22673                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22674                });
22675                fidl::decode!(
22676                    fidl::encoding::BoundedString<1024>,
22677                    D,
22678                    val_ref,
22679                    decoder,
22680                    inner_offset,
22681                    inner_depth
22682                )?;
22683                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22684                {
22685                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22686                }
22687                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22688                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22689                }
22690            }
22691
22692            next_offset += envelope_size;
22693
22694            // Decode the remaining unknown envelopes.
22695            while next_offset < end_offset {
22696                _next_ordinal_to_read += 1;
22697                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22698                next_offset += envelope_size;
22699            }
22700
22701            Ok(())
22702        }
22703    }
22704
22705    impl UseDictionary {
22706        #[inline(always)]
22707        fn max_ordinal_present(&self) -> u64 {
22708            if let Some(_) = self.source_dictionary {
22709                return 8;
22710            }
22711            if let Some(_) = self.availability {
22712                return 7;
22713            }
22714            if let Some(_) = self.dependency_type {
22715                return 6;
22716            }
22717            if let Some(_) = self.target_path {
22718                return 3;
22719            }
22720            if let Some(_) = self.source_name {
22721                return 2;
22722            }
22723            if let Some(_) = self.source {
22724                return 1;
22725            }
22726            0
22727        }
22728    }
22729
22730    impl fidl::encoding::ValueTypeMarker for UseDictionary {
22731        type Borrowed<'a> = &'a Self;
22732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22733            value
22734        }
22735    }
22736
22737    unsafe impl fidl::encoding::TypeMarker for UseDictionary {
22738        type Owned = Self;
22739
22740        #[inline(always)]
22741        fn inline_align(_context: fidl::encoding::Context) -> usize {
22742            8
22743        }
22744
22745        #[inline(always)]
22746        fn inline_size(_context: fidl::encoding::Context) -> usize {
22747            16
22748        }
22749    }
22750
22751    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDictionary, D>
22752        for &UseDictionary
22753    {
22754        unsafe fn encode(
22755            self,
22756            encoder: &mut fidl::encoding::Encoder<'_, D>,
22757            offset: usize,
22758            mut depth: fidl::encoding::Depth,
22759        ) -> fidl::Result<()> {
22760            encoder.debug_check_bounds::<UseDictionary>(offset);
22761            // Vector header
22762            let max_ordinal: u64 = self.max_ordinal_present();
22763            encoder.write_num(max_ordinal, offset);
22764            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22765            // Calling encoder.out_of_line_offset(0) is not allowed.
22766            if max_ordinal == 0 {
22767                return Ok(());
22768            }
22769            depth.increment()?;
22770            let envelope_size = 8;
22771            let bytes_len = max_ordinal as usize * envelope_size;
22772            #[allow(unused_variables)]
22773            let offset = encoder.out_of_line_offset(bytes_len);
22774            let mut _prev_end_offset: usize = 0;
22775            if 1 > max_ordinal {
22776                return Ok(());
22777            }
22778
22779            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22780            // are envelope_size bytes.
22781            let cur_offset: usize = (1 - 1) * envelope_size;
22782
22783            // Zero reserved fields.
22784            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22785
22786            // Safety:
22787            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22788            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22789            //   envelope_size bytes, there is always sufficient room.
22790            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
22791                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
22792                encoder,
22793                offset + cur_offset,
22794                depth,
22795            )?;
22796
22797            _prev_end_offset = cur_offset + envelope_size;
22798            if 2 > max_ordinal {
22799                return Ok(());
22800            }
22801
22802            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22803            // are envelope_size bytes.
22804            let cur_offset: usize = (2 - 1) * envelope_size;
22805
22806            // Zero reserved fields.
22807            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22808
22809            // Safety:
22810            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22811            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22812            //   envelope_size bytes, there is always sufficient room.
22813            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22814                self.source_name.as_ref().map(
22815                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22816                ),
22817                encoder,
22818                offset + cur_offset,
22819                depth,
22820            )?;
22821
22822            _prev_end_offset = cur_offset + envelope_size;
22823            if 3 > 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 = (3 - 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::<fidl::encoding::BoundedString<1024>, D>(
22839            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22840            encoder, offset + cur_offset, depth
22841        )?;
22842
22843            _prev_end_offset = cur_offset + envelope_size;
22844            if 6 > max_ordinal {
22845                return Ok(());
22846            }
22847
22848            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22849            // are envelope_size bytes.
22850            let cur_offset: usize = (6 - 1) * envelope_size;
22851
22852            // Zero reserved fields.
22853            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22854
22855            // Safety:
22856            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22857            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22858            //   envelope_size bytes, there is always sufficient room.
22859            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
22860                self.dependency_type
22861                    .as_ref()
22862                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
22863                encoder,
22864                offset + cur_offset,
22865                depth,
22866            )?;
22867
22868            _prev_end_offset = cur_offset + envelope_size;
22869            if 7 > max_ordinal {
22870                return Ok(());
22871            }
22872
22873            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22874            // are envelope_size bytes.
22875            let cur_offset: usize = (7 - 1) * envelope_size;
22876
22877            // Zero reserved fields.
22878            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22879
22880            // Safety:
22881            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22882            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22883            //   envelope_size bytes, there is always sufficient room.
22884            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
22885                self.availability
22886                    .as_ref()
22887                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
22888                encoder,
22889                offset + cur_offset,
22890                depth,
22891            )?;
22892
22893            _prev_end_offset = cur_offset + envelope_size;
22894            if 8 > max_ordinal {
22895                return Ok(());
22896            }
22897
22898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22899            // are envelope_size bytes.
22900            let cur_offset: usize = (8 - 1) * envelope_size;
22901
22902            // Zero reserved fields.
22903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22904
22905            // Safety:
22906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22908            //   envelope_size bytes, there is always sufficient room.
22909            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22910            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22911            encoder, offset + cur_offset, depth
22912        )?;
22913
22914            _prev_end_offset = cur_offset + envelope_size;
22915
22916            Ok(())
22917        }
22918    }
22919
22920    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDictionary {
22921        #[inline(always)]
22922        fn new_empty() -> Self {
22923            Self::default()
22924        }
22925
22926        unsafe fn decode(
22927            &mut self,
22928            decoder: &mut fidl::encoding::Decoder<'_, D>,
22929            offset: usize,
22930            mut depth: fidl::encoding::Depth,
22931        ) -> fidl::Result<()> {
22932            decoder.debug_check_bounds::<Self>(offset);
22933            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22934                None => return Err(fidl::Error::NotNullable),
22935                Some(len) => len,
22936            };
22937            // Calling decoder.out_of_line_offset(0) is not allowed.
22938            if len == 0 {
22939                return Ok(());
22940            };
22941            depth.increment()?;
22942            let envelope_size = 8;
22943            let bytes_len = len * envelope_size;
22944            let offset = decoder.out_of_line_offset(bytes_len)?;
22945            // Decode the envelope for each type.
22946            let mut _next_ordinal_to_read = 0;
22947            let mut next_offset = offset;
22948            let end_offset = offset + bytes_len;
22949            _next_ordinal_to_read += 1;
22950            if next_offset >= end_offset {
22951                return Ok(());
22952            }
22953
22954            // Decode unknown envelopes for gaps in ordinals.
22955            while _next_ordinal_to_read < 1 {
22956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22957                _next_ordinal_to_read += 1;
22958                next_offset += envelope_size;
22959            }
22960
22961            let next_out_of_line = decoder.next_out_of_line();
22962            let handles_before = decoder.remaining_handles();
22963            if let Some((inlined, num_bytes, num_handles)) =
22964                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22965            {
22966                let member_inline_size =
22967                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22968                if inlined != (member_inline_size <= 4) {
22969                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22970                }
22971                let inner_offset;
22972                let mut inner_depth = depth.clone();
22973                if inlined {
22974                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22975                    inner_offset = next_offset;
22976                } else {
22977                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22978                    inner_depth.increment()?;
22979                }
22980                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22981                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22983                {
22984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22985                }
22986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22988                }
22989            }
22990
22991            next_offset += envelope_size;
22992            _next_ordinal_to_read += 1;
22993            if next_offset >= end_offset {
22994                return Ok(());
22995            }
22996
22997            // Decode unknown envelopes for gaps in ordinals.
22998            while _next_ordinal_to_read < 2 {
22999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23000                _next_ordinal_to_read += 1;
23001                next_offset += envelope_size;
23002            }
23003
23004            let next_out_of_line = decoder.next_out_of_line();
23005            let handles_before = decoder.remaining_handles();
23006            if let Some((inlined, num_bytes, num_handles)) =
23007                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23008            {
23009                let member_inline_size =
23010                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
23011                        decoder.context,
23012                    );
23013                if inlined != (member_inline_size <= 4) {
23014                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23015                }
23016                let inner_offset;
23017                let mut inner_depth = depth.clone();
23018                if inlined {
23019                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23020                    inner_offset = next_offset;
23021                } else {
23022                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23023                    inner_depth.increment()?;
23024                }
23025                let val_ref = self
23026                    .source_name
23027                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23028                fidl::decode!(
23029                    fidl::encoding::BoundedString<100>,
23030                    D,
23031                    val_ref,
23032                    decoder,
23033                    inner_offset,
23034                    inner_depth
23035                )?;
23036                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23037                {
23038                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23039                }
23040                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23041                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23042                }
23043            }
23044
23045            next_offset += envelope_size;
23046            _next_ordinal_to_read += 1;
23047            if next_offset >= end_offset {
23048                return Ok(());
23049            }
23050
23051            // Decode unknown envelopes for gaps in ordinals.
23052            while _next_ordinal_to_read < 3 {
23053                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23054                _next_ordinal_to_read += 1;
23055                next_offset += envelope_size;
23056            }
23057
23058            let next_out_of_line = decoder.next_out_of_line();
23059            let handles_before = decoder.remaining_handles();
23060            if let Some((inlined, num_bytes, num_handles)) =
23061                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23062            {
23063                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23064                if inlined != (member_inline_size <= 4) {
23065                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23066                }
23067                let inner_offset;
23068                let mut inner_depth = depth.clone();
23069                if inlined {
23070                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23071                    inner_offset = next_offset;
23072                } else {
23073                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23074                    inner_depth.increment()?;
23075                }
23076                let val_ref = self.target_path.get_or_insert_with(|| {
23077                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23078                });
23079                fidl::decode!(
23080                    fidl::encoding::BoundedString<1024>,
23081                    D,
23082                    val_ref,
23083                    decoder,
23084                    inner_offset,
23085                    inner_depth
23086                )?;
23087                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23088                {
23089                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23090                }
23091                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23092                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23093                }
23094            }
23095
23096            next_offset += envelope_size;
23097            _next_ordinal_to_read += 1;
23098            if next_offset >= end_offset {
23099                return Ok(());
23100            }
23101
23102            // Decode unknown envelopes for gaps in ordinals.
23103            while _next_ordinal_to_read < 6 {
23104                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23105                _next_ordinal_to_read += 1;
23106                next_offset += envelope_size;
23107            }
23108
23109            let next_out_of_line = decoder.next_out_of_line();
23110            let handles_before = decoder.remaining_handles();
23111            if let Some((inlined, num_bytes, num_handles)) =
23112                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23113            {
23114                let member_inline_size =
23115                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23116                if inlined != (member_inline_size <= 4) {
23117                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23118                }
23119                let inner_offset;
23120                let mut inner_depth = depth.clone();
23121                if inlined {
23122                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23123                    inner_offset = next_offset;
23124                } else {
23125                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23126                    inner_depth.increment()?;
23127                }
23128                let val_ref =
23129                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
23130                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
23131                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23132                {
23133                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23134                }
23135                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23136                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23137                }
23138            }
23139
23140            next_offset += envelope_size;
23141            _next_ordinal_to_read += 1;
23142            if next_offset >= end_offset {
23143                return Ok(());
23144            }
23145
23146            // Decode unknown envelopes for gaps in ordinals.
23147            while _next_ordinal_to_read < 7 {
23148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23149                _next_ordinal_to_read += 1;
23150                next_offset += envelope_size;
23151            }
23152
23153            let next_out_of_line = decoder.next_out_of_line();
23154            let handles_before = decoder.remaining_handles();
23155            if let Some((inlined, num_bytes, num_handles)) =
23156                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23157            {
23158                let member_inline_size =
23159                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23160                if inlined != (member_inline_size <= 4) {
23161                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23162                }
23163                let inner_offset;
23164                let mut inner_depth = depth.clone();
23165                if inlined {
23166                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23167                    inner_offset = next_offset;
23168                } else {
23169                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23170                    inner_depth.increment()?;
23171                }
23172                let val_ref =
23173                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
23174                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
23175                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23176                {
23177                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23178                }
23179                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23180                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23181                }
23182            }
23183
23184            next_offset += envelope_size;
23185            _next_ordinal_to_read += 1;
23186            if next_offset >= end_offset {
23187                return Ok(());
23188            }
23189
23190            // Decode unknown envelopes for gaps in ordinals.
23191            while _next_ordinal_to_read < 8 {
23192                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23193                _next_ordinal_to_read += 1;
23194                next_offset += envelope_size;
23195            }
23196
23197            let next_out_of_line = decoder.next_out_of_line();
23198            let handles_before = decoder.remaining_handles();
23199            if let Some((inlined, num_bytes, num_handles)) =
23200                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23201            {
23202                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23203                if inlined != (member_inline_size <= 4) {
23204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23205                }
23206                let inner_offset;
23207                let mut inner_depth = depth.clone();
23208                if inlined {
23209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23210                    inner_offset = next_offset;
23211                } else {
23212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23213                    inner_depth.increment()?;
23214                }
23215                let val_ref = self.source_dictionary.get_or_insert_with(|| {
23216                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23217                });
23218                fidl::decode!(
23219                    fidl::encoding::BoundedString<1024>,
23220                    D,
23221                    val_ref,
23222                    decoder,
23223                    inner_offset,
23224                    inner_depth
23225                )?;
23226                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23227                {
23228                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23229                }
23230                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23231                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23232                }
23233            }
23234
23235            next_offset += envelope_size;
23236
23237            // Decode the remaining unknown envelopes.
23238            while next_offset < end_offset {
23239                _next_ordinal_to_read += 1;
23240                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23241                next_offset += envelope_size;
23242            }
23243
23244            Ok(())
23245        }
23246    }
23247
23248    impl UseDirectory {
23249        #[inline(always)]
23250        fn max_ordinal_present(&self) -> u64 {
23251            if let Some(_) = self.source_dictionary {
23252                return 8;
23253            }
23254            if let Some(_) = self.availability {
23255                return 7;
23256            }
23257            if let Some(_) = self.dependency_type {
23258                return 6;
23259            }
23260            if let Some(_) = self.subdir {
23261                return 5;
23262            }
23263            if let Some(_) = self.rights {
23264                return 4;
23265            }
23266            if let Some(_) = self.target_path {
23267                return 3;
23268            }
23269            if let Some(_) = self.source_name {
23270                return 2;
23271            }
23272            if let Some(_) = self.source {
23273                return 1;
23274            }
23275            0
23276        }
23277    }
23278
23279    impl fidl::encoding::ValueTypeMarker for UseDirectory {
23280        type Borrowed<'a> = &'a Self;
23281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23282            value
23283        }
23284    }
23285
23286    unsafe impl fidl::encoding::TypeMarker for UseDirectory {
23287        type Owned = Self;
23288
23289        #[inline(always)]
23290        fn inline_align(_context: fidl::encoding::Context) -> usize {
23291            8
23292        }
23293
23294        #[inline(always)]
23295        fn inline_size(_context: fidl::encoding::Context) -> usize {
23296            16
23297        }
23298    }
23299
23300    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDirectory, D>
23301        for &UseDirectory
23302    {
23303        unsafe fn encode(
23304            self,
23305            encoder: &mut fidl::encoding::Encoder<'_, D>,
23306            offset: usize,
23307            mut depth: fidl::encoding::Depth,
23308        ) -> fidl::Result<()> {
23309            encoder.debug_check_bounds::<UseDirectory>(offset);
23310            // Vector header
23311            let max_ordinal: u64 = self.max_ordinal_present();
23312            encoder.write_num(max_ordinal, offset);
23313            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23314            // Calling encoder.out_of_line_offset(0) is not allowed.
23315            if max_ordinal == 0 {
23316                return Ok(());
23317            }
23318            depth.increment()?;
23319            let envelope_size = 8;
23320            let bytes_len = max_ordinal as usize * envelope_size;
23321            #[allow(unused_variables)]
23322            let offset = encoder.out_of_line_offset(bytes_len);
23323            let mut _prev_end_offset: usize = 0;
23324            if 1 > max_ordinal {
23325                return Ok(());
23326            }
23327
23328            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23329            // are envelope_size bytes.
23330            let cur_offset: usize = (1 - 1) * envelope_size;
23331
23332            // Zero reserved fields.
23333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23334
23335            // Safety:
23336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23338            //   envelope_size bytes, there is always sufficient room.
23339            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
23340                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
23341                encoder,
23342                offset + cur_offset,
23343                depth,
23344            )?;
23345
23346            _prev_end_offset = cur_offset + envelope_size;
23347            if 2 > max_ordinal {
23348                return Ok(());
23349            }
23350
23351            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23352            // are envelope_size bytes.
23353            let cur_offset: usize = (2 - 1) * envelope_size;
23354
23355            // Zero reserved fields.
23356            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23357
23358            // Safety:
23359            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23360            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23361            //   envelope_size bytes, there is always sufficient room.
23362            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
23363                self.source_name.as_ref().map(
23364                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
23365                ),
23366                encoder,
23367                offset + cur_offset,
23368                depth,
23369            )?;
23370
23371            _prev_end_offset = cur_offset + envelope_size;
23372            if 3 > 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 = (3 - 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::encoding::BoundedString<1024>, D>(
23388            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23389            encoder, offset + cur_offset, depth
23390        )?;
23391
23392            _prev_end_offset = cur_offset + envelope_size;
23393            if 4 > 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 = (4 - 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_fuchsia_io_common::Operations, D>(
23409                self.rights.as_ref().map(
23410                    <fidl_fuchsia_io_common::Operations as fidl::encoding::ValueTypeMarker>::borrow,
23411                ),
23412                encoder,
23413                offset + cur_offset,
23414                depth,
23415            )?;
23416
23417            _prev_end_offset = cur_offset + envelope_size;
23418            if 5 > max_ordinal {
23419                return Ok(());
23420            }
23421
23422            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23423            // are envelope_size bytes.
23424            let cur_offset: usize = (5 - 1) * envelope_size;
23425
23426            // Zero reserved fields.
23427            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23428
23429            // Safety:
23430            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23431            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23432            //   envelope_size bytes, there is always sufficient room.
23433            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23434            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23435            encoder, offset + cur_offset, depth
23436        )?;
23437
23438            _prev_end_offset = cur_offset + envelope_size;
23439            if 6 > 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 = (6 - 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::<DependencyType, D>(
23455                self.dependency_type
23456                    .as_ref()
23457                    .map(<DependencyType 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 7 > 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 = (7 - 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::<Availability, D>(
23480                self.availability
23481                    .as_ref()
23482                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
23483                encoder,
23484                offset + cur_offset,
23485                depth,
23486            )?;
23487
23488            _prev_end_offset = cur_offset + envelope_size;
23489            if 8 > max_ordinal {
23490                return Ok(());
23491            }
23492
23493            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23494            // are envelope_size bytes.
23495            let cur_offset: usize = (8 - 1) * envelope_size;
23496
23497            // Zero reserved fields.
23498            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23499
23500            // Safety:
23501            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23502            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23503            //   envelope_size bytes, there is always sufficient room.
23504            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23505            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23506            encoder, offset + cur_offset, depth
23507        )?;
23508
23509            _prev_end_offset = cur_offset + envelope_size;
23510
23511            Ok(())
23512        }
23513    }
23514
23515    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDirectory {
23516        #[inline(always)]
23517        fn new_empty() -> Self {
23518            Self::default()
23519        }
23520
23521        unsafe fn decode(
23522            &mut self,
23523            decoder: &mut fidl::encoding::Decoder<'_, D>,
23524            offset: usize,
23525            mut depth: fidl::encoding::Depth,
23526        ) -> fidl::Result<()> {
23527            decoder.debug_check_bounds::<Self>(offset);
23528            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23529                None => return Err(fidl::Error::NotNullable),
23530                Some(len) => len,
23531            };
23532            // Calling decoder.out_of_line_offset(0) is not allowed.
23533            if len == 0 {
23534                return Ok(());
23535            };
23536            depth.increment()?;
23537            let envelope_size = 8;
23538            let bytes_len = len * envelope_size;
23539            let offset = decoder.out_of_line_offset(bytes_len)?;
23540            // Decode the envelope for each type.
23541            let mut _next_ordinal_to_read = 0;
23542            let mut next_offset = offset;
23543            let end_offset = offset + bytes_len;
23544            _next_ordinal_to_read += 1;
23545            if next_offset >= end_offset {
23546                return Ok(());
23547            }
23548
23549            // Decode unknown envelopes for gaps in ordinals.
23550            while _next_ordinal_to_read < 1 {
23551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23552                _next_ordinal_to_read += 1;
23553                next_offset += envelope_size;
23554            }
23555
23556            let next_out_of_line = decoder.next_out_of_line();
23557            let handles_before = decoder.remaining_handles();
23558            if let Some((inlined, num_bytes, num_handles)) =
23559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23560            {
23561                let member_inline_size =
23562                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23563                if inlined != (member_inline_size <= 4) {
23564                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23565                }
23566                let inner_offset;
23567                let mut inner_depth = depth.clone();
23568                if inlined {
23569                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23570                    inner_offset = next_offset;
23571                } else {
23572                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23573                    inner_depth.increment()?;
23574                }
23575                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
23576                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
23577                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23578                {
23579                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23580                }
23581                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23582                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23583                }
23584            }
23585
23586            next_offset += envelope_size;
23587            _next_ordinal_to_read += 1;
23588            if next_offset >= end_offset {
23589                return Ok(());
23590            }
23591
23592            // Decode unknown envelopes for gaps in ordinals.
23593            while _next_ordinal_to_read < 2 {
23594                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23595                _next_ordinal_to_read += 1;
23596                next_offset += envelope_size;
23597            }
23598
23599            let next_out_of_line = decoder.next_out_of_line();
23600            let handles_before = decoder.remaining_handles();
23601            if let Some((inlined, num_bytes, num_handles)) =
23602                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23603            {
23604                let member_inline_size =
23605                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
23606                        decoder.context,
23607                    );
23608                if inlined != (member_inline_size <= 4) {
23609                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23610                }
23611                let inner_offset;
23612                let mut inner_depth = depth.clone();
23613                if inlined {
23614                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23615                    inner_offset = next_offset;
23616                } else {
23617                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23618                    inner_depth.increment()?;
23619                }
23620                let val_ref = self
23621                    .source_name
23622                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23623                fidl::decode!(
23624                    fidl::encoding::BoundedString<100>,
23625                    D,
23626                    val_ref,
23627                    decoder,
23628                    inner_offset,
23629                    inner_depth
23630                )?;
23631                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23632                {
23633                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23634                }
23635                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23636                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23637                }
23638            }
23639
23640            next_offset += envelope_size;
23641            _next_ordinal_to_read += 1;
23642            if next_offset >= end_offset {
23643                return Ok(());
23644            }
23645
23646            // Decode unknown envelopes for gaps in ordinals.
23647            while _next_ordinal_to_read < 3 {
23648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23649                _next_ordinal_to_read += 1;
23650                next_offset += envelope_size;
23651            }
23652
23653            let next_out_of_line = decoder.next_out_of_line();
23654            let handles_before = decoder.remaining_handles();
23655            if let Some((inlined, num_bytes, num_handles)) =
23656                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23657            {
23658                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23659                if inlined != (member_inline_size <= 4) {
23660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23661                }
23662                let inner_offset;
23663                let mut inner_depth = depth.clone();
23664                if inlined {
23665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23666                    inner_offset = next_offset;
23667                } else {
23668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23669                    inner_depth.increment()?;
23670                }
23671                let val_ref = self.target_path.get_or_insert_with(|| {
23672                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23673                });
23674                fidl::decode!(
23675                    fidl::encoding::BoundedString<1024>,
23676                    D,
23677                    val_ref,
23678                    decoder,
23679                    inner_offset,
23680                    inner_depth
23681                )?;
23682                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23683                {
23684                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23685                }
23686                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23687                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23688                }
23689            }
23690
23691            next_offset += envelope_size;
23692            _next_ordinal_to_read += 1;
23693            if next_offset >= end_offset {
23694                return Ok(());
23695            }
23696
23697            // Decode unknown envelopes for gaps in ordinals.
23698            while _next_ordinal_to_read < 4 {
23699                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23700                _next_ordinal_to_read += 1;
23701                next_offset += envelope_size;
23702            }
23703
23704            let next_out_of_line = decoder.next_out_of_line();
23705            let handles_before = decoder.remaining_handles();
23706            if let Some((inlined, num_bytes, num_handles)) =
23707                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23708            {
23709                let member_inline_size =
23710                    <fidl_fuchsia_io_common::Operations as fidl::encoding::TypeMarker>::inline_size(
23711                        decoder.context,
23712                    );
23713                if inlined != (member_inline_size <= 4) {
23714                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23715                }
23716                let inner_offset;
23717                let mut inner_depth = depth.clone();
23718                if inlined {
23719                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23720                    inner_offset = next_offset;
23721                } else {
23722                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23723                    inner_depth.increment()?;
23724                }
23725                let val_ref = self
23726                    .rights
23727                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_io_common::Operations, D));
23728                fidl::decode!(
23729                    fidl_fuchsia_io_common::Operations,
23730                    D,
23731                    val_ref,
23732                    decoder,
23733                    inner_offset,
23734                    inner_depth
23735                )?;
23736                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23737                {
23738                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23739                }
23740                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23741                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23742                }
23743            }
23744
23745            next_offset += envelope_size;
23746            _next_ordinal_to_read += 1;
23747            if next_offset >= end_offset {
23748                return Ok(());
23749            }
23750
23751            // Decode unknown envelopes for gaps in ordinals.
23752            while _next_ordinal_to_read < 5 {
23753                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23754                _next_ordinal_to_read += 1;
23755                next_offset += envelope_size;
23756            }
23757
23758            let next_out_of_line = decoder.next_out_of_line();
23759            let handles_before = decoder.remaining_handles();
23760            if let Some((inlined, num_bytes, num_handles)) =
23761                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23762            {
23763                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23764                if inlined != (member_inline_size <= 4) {
23765                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23766                }
23767                let inner_offset;
23768                let mut inner_depth = depth.clone();
23769                if inlined {
23770                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23771                    inner_offset = next_offset;
23772                } else {
23773                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23774                    inner_depth.increment()?;
23775                }
23776                let val_ref = self.subdir.get_or_insert_with(|| {
23777                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23778                });
23779                fidl::decode!(
23780                    fidl::encoding::BoundedString<1024>,
23781                    D,
23782                    val_ref,
23783                    decoder,
23784                    inner_offset,
23785                    inner_depth
23786                )?;
23787                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23788                {
23789                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23790                }
23791                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23792                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23793                }
23794            }
23795
23796            next_offset += envelope_size;
23797            _next_ordinal_to_read += 1;
23798            if next_offset >= end_offset {
23799                return Ok(());
23800            }
23801
23802            // Decode unknown envelopes for gaps in ordinals.
23803            while _next_ordinal_to_read < 6 {
23804                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23805                _next_ordinal_to_read += 1;
23806                next_offset += envelope_size;
23807            }
23808
23809            let next_out_of_line = decoder.next_out_of_line();
23810            let handles_before = decoder.remaining_handles();
23811            if let Some((inlined, num_bytes, num_handles)) =
23812                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23813            {
23814                let member_inline_size =
23815                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23816                if inlined != (member_inline_size <= 4) {
23817                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23818                }
23819                let inner_offset;
23820                let mut inner_depth = depth.clone();
23821                if inlined {
23822                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23823                    inner_offset = next_offset;
23824                } else {
23825                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23826                    inner_depth.increment()?;
23827                }
23828                let val_ref =
23829                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
23830                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
23831                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23832                {
23833                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23834                }
23835                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23836                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23837                }
23838            }
23839
23840            next_offset += envelope_size;
23841            _next_ordinal_to_read += 1;
23842            if next_offset >= end_offset {
23843                return Ok(());
23844            }
23845
23846            // Decode unknown envelopes for gaps in ordinals.
23847            while _next_ordinal_to_read < 7 {
23848                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23849                _next_ordinal_to_read += 1;
23850                next_offset += envelope_size;
23851            }
23852
23853            let next_out_of_line = decoder.next_out_of_line();
23854            let handles_before = decoder.remaining_handles();
23855            if let Some((inlined, num_bytes, num_handles)) =
23856                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23857            {
23858                let member_inline_size =
23859                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23860                if inlined != (member_inline_size <= 4) {
23861                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23862                }
23863                let inner_offset;
23864                let mut inner_depth = depth.clone();
23865                if inlined {
23866                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23867                    inner_offset = next_offset;
23868                } else {
23869                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23870                    inner_depth.increment()?;
23871                }
23872                let val_ref =
23873                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
23874                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
23875                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23876                {
23877                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23878                }
23879                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23880                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23881                }
23882            }
23883
23884            next_offset += envelope_size;
23885            _next_ordinal_to_read += 1;
23886            if next_offset >= end_offset {
23887                return Ok(());
23888            }
23889
23890            // Decode unknown envelopes for gaps in ordinals.
23891            while _next_ordinal_to_read < 8 {
23892                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23893                _next_ordinal_to_read += 1;
23894                next_offset += envelope_size;
23895            }
23896
23897            let next_out_of_line = decoder.next_out_of_line();
23898            let handles_before = decoder.remaining_handles();
23899            if let Some((inlined, num_bytes, num_handles)) =
23900                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23901            {
23902                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23903                if inlined != (member_inline_size <= 4) {
23904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23905                }
23906                let inner_offset;
23907                let mut inner_depth = depth.clone();
23908                if inlined {
23909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23910                    inner_offset = next_offset;
23911                } else {
23912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23913                    inner_depth.increment()?;
23914                }
23915                let val_ref = self.source_dictionary.get_or_insert_with(|| {
23916                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23917                });
23918                fidl::decode!(
23919                    fidl::encoding::BoundedString<1024>,
23920                    D,
23921                    val_ref,
23922                    decoder,
23923                    inner_offset,
23924                    inner_depth
23925                )?;
23926                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23927                {
23928                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23929                }
23930                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23931                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23932                }
23933            }
23934
23935            next_offset += envelope_size;
23936
23937            // Decode the remaining unknown envelopes.
23938            while next_offset < end_offset {
23939                _next_ordinal_to_read += 1;
23940                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23941                next_offset += envelope_size;
23942            }
23943
23944            Ok(())
23945        }
23946    }
23947
23948    impl UseEventStream {
23949        #[inline(always)]
23950        fn max_ordinal_present(&self) -> u64 {
23951            if let Some(_) = self.filter {
23952                return 6;
23953            }
23954            if let Some(_) = self.availability {
23955                return 5;
23956            }
23957            if let Some(_) = self.target_path {
23958                return 4;
23959            }
23960            if let Some(_) = self.scope {
23961                return 3;
23962            }
23963            if let Some(_) = self.source {
23964                return 2;
23965            }
23966            if let Some(_) = self.source_name {
23967                return 1;
23968            }
23969            0
23970        }
23971    }
23972
23973    impl fidl::encoding::ValueTypeMarker for UseEventStream {
23974        type Borrowed<'a> = &'a Self;
23975        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23976            value
23977        }
23978    }
23979
23980    unsafe impl fidl::encoding::TypeMarker for UseEventStream {
23981        type Owned = Self;
23982
23983        #[inline(always)]
23984        fn inline_align(_context: fidl::encoding::Context) -> usize {
23985            8
23986        }
23987
23988        #[inline(always)]
23989        fn inline_size(_context: fidl::encoding::Context) -> usize {
23990            16
23991        }
23992    }
23993
23994    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseEventStream, D>
23995        for &UseEventStream
23996    {
23997        unsafe fn encode(
23998            self,
23999            encoder: &mut fidl::encoding::Encoder<'_, D>,
24000            offset: usize,
24001            mut depth: fidl::encoding::Depth,
24002        ) -> fidl::Result<()> {
24003            encoder.debug_check_bounds::<UseEventStream>(offset);
24004            // Vector header
24005            let max_ordinal: u64 = self.max_ordinal_present();
24006            encoder.write_num(max_ordinal, offset);
24007            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24008            // Calling encoder.out_of_line_offset(0) is not allowed.
24009            if max_ordinal == 0 {
24010                return Ok(());
24011            }
24012            depth.increment()?;
24013            let envelope_size = 8;
24014            let bytes_len = max_ordinal as usize * envelope_size;
24015            #[allow(unused_variables)]
24016            let offset = encoder.out_of_line_offset(bytes_len);
24017            let mut _prev_end_offset: usize = 0;
24018            if 1 > max_ordinal {
24019                return Ok(());
24020            }
24021
24022            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24023            // are envelope_size bytes.
24024            let cur_offset: usize = (1 - 1) * envelope_size;
24025
24026            // Zero reserved fields.
24027            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24028
24029            // Safety:
24030            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24031            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24032            //   envelope_size bytes, there is always sufficient room.
24033            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24034                self.source_name.as_ref().map(
24035                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24036                ),
24037                encoder,
24038                offset + cur_offset,
24039                depth,
24040            )?;
24041
24042            _prev_end_offset = cur_offset + envelope_size;
24043            if 2 > max_ordinal {
24044                return Ok(());
24045            }
24046
24047            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24048            // are envelope_size bytes.
24049            let cur_offset: usize = (2 - 1) * envelope_size;
24050
24051            // Zero reserved fields.
24052            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24053
24054            // Safety:
24055            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24056            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24057            //   envelope_size bytes, there is always sufficient room.
24058            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24059                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24060                encoder,
24061                offset + cur_offset,
24062                depth,
24063            )?;
24064
24065            _prev_end_offset = cur_offset + envelope_size;
24066            if 3 > max_ordinal {
24067                return Ok(());
24068            }
24069
24070            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24071            // are envelope_size bytes.
24072            let cur_offset: usize = (3 - 1) * envelope_size;
24073
24074            // Zero reserved fields.
24075            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24076
24077            // Safety:
24078            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24079            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24080            //   envelope_size bytes, there is always sufficient room.
24081            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Ref>, D>(
24082            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
24083            encoder, offset + cur_offset, depth
24084        )?;
24085
24086            _prev_end_offset = cur_offset + envelope_size;
24087            if 4 > max_ordinal {
24088                return Ok(());
24089            }
24090
24091            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24092            // are envelope_size bytes.
24093            let cur_offset: usize = (4 - 1) * envelope_size;
24094
24095            // Zero reserved fields.
24096            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24097
24098            // Safety:
24099            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24100            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24101            //   envelope_size bytes, there is always sufficient room.
24102            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24103                self.target_path.as_ref().map(
24104                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24105                ),
24106                encoder,
24107                offset + cur_offset,
24108                depth,
24109            )?;
24110
24111            _prev_end_offset = cur_offset + envelope_size;
24112            if 5 > max_ordinal {
24113                return Ok(());
24114            }
24115
24116            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24117            // are envelope_size bytes.
24118            let cur_offset: usize = (5 - 1) * envelope_size;
24119
24120            // Zero reserved fields.
24121            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24122
24123            // Safety:
24124            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24125            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24126            //   envelope_size bytes, there is always sufficient room.
24127            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
24128                self.availability
24129                    .as_ref()
24130                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
24131                encoder,
24132                offset + cur_offset,
24133                depth,
24134            )?;
24135
24136            _prev_end_offset = cur_offset + envelope_size;
24137            if 6 > max_ordinal {
24138                return Ok(());
24139            }
24140
24141            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24142            // are envelope_size bytes.
24143            let cur_offset: usize = (6 - 1) * envelope_size;
24144
24145            // Zero reserved fields.
24146            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24147
24148            // Safety:
24149            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24150            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24151            //   envelope_size bytes, there is always sufficient room.
24152            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data_common::Dictionary, D>(
24153            self.filter.as_ref().map(<fidl_fuchsia_data_common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
24154            encoder, offset + cur_offset, depth
24155        )?;
24156
24157            _prev_end_offset = cur_offset + envelope_size;
24158
24159            Ok(())
24160        }
24161    }
24162
24163    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseEventStream {
24164        #[inline(always)]
24165        fn new_empty() -> Self {
24166            Self::default()
24167        }
24168
24169        unsafe fn decode(
24170            &mut self,
24171            decoder: &mut fidl::encoding::Decoder<'_, D>,
24172            offset: usize,
24173            mut depth: fidl::encoding::Depth,
24174        ) -> fidl::Result<()> {
24175            decoder.debug_check_bounds::<Self>(offset);
24176            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24177                None => return Err(fidl::Error::NotNullable),
24178                Some(len) => len,
24179            };
24180            // Calling decoder.out_of_line_offset(0) is not allowed.
24181            if len == 0 {
24182                return Ok(());
24183            };
24184            depth.increment()?;
24185            let envelope_size = 8;
24186            let bytes_len = len * envelope_size;
24187            let offset = decoder.out_of_line_offset(bytes_len)?;
24188            // Decode the envelope for each type.
24189            let mut _next_ordinal_to_read = 0;
24190            let mut next_offset = offset;
24191            let end_offset = offset + bytes_len;
24192            _next_ordinal_to_read += 1;
24193            if next_offset >= end_offset {
24194                return Ok(());
24195            }
24196
24197            // Decode unknown envelopes for gaps in ordinals.
24198            while _next_ordinal_to_read < 1 {
24199                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24200                _next_ordinal_to_read += 1;
24201                next_offset += envelope_size;
24202            }
24203
24204            let next_out_of_line = decoder.next_out_of_line();
24205            let handles_before = decoder.remaining_handles();
24206            if let Some((inlined, num_bytes, num_handles)) =
24207                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24208            {
24209                let member_inline_size =
24210                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24211                        decoder.context,
24212                    );
24213                if inlined != (member_inline_size <= 4) {
24214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24215                }
24216                let inner_offset;
24217                let mut inner_depth = depth.clone();
24218                if inlined {
24219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24220                    inner_offset = next_offset;
24221                } else {
24222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24223                    inner_depth.increment()?;
24224                }
24225                let val_ref = self
24226                    .source_name
24227                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24228                fidl::decode!(
24229                    fidl::encoding::BoundedString<100>,
24230                    D,
24231                    val_ref,
24232                    decoder,
24233                    inner_offset,
24234                    inner_depth
24235                )?;
24236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24237                {
24238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24239                }
24240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24242                }
24243            }
24244
24245            next_offset += envelope_size;
24246            _next_ordinal_to_read += 1;
24247            if next_offset >= end_offset {
24248                return Ok(());
24249            }
24250
24251            // Decode unknown envelopes for gaps in ordinals.
24252            while _next_ordinal_to_read < 2 {
24253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24254                _next_ordinal_to_read += 1;
24255                next_offset += envelope_size;
24256            }
24257
24258            let next_out_of_line = decoder.next_out_of_line();
24259            let handles_before = decoder.remaining_handles();
24260            if let Some((inlined, num_bytes, num_handles)) =
24261                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24262            {
24263                let member_inline_size =
24264                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24265                if inlined != (member_inline_size <= 4) {
24266                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24267                }
24268                let inner_offset;
24269                let mut inner_depth = depth.clone();
24270                if inlined {
24271                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24272                    inner_offset = next_offset;
24273                } else {
24274                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24275                    inner_depth.increment()?;
24276                }
24277                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
24278                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
24279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24280                {
24281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24282                }
24283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24285                }
24286            }
24287
24288            next_offset += envelope_size;
24289            _next_ordinal_to_read += 1;
24290            if next_offset >= end_offset {
24291                return Ok(());
24292            }
24293
24294            // Decode unknown envelopes for gaps in ordinals.
24295            while _next_ordinal_to_read < 3 {
24296                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24297                _next_ordinal_to_read += 1;
24298                next_offset += envelope_size;
24299            }
24300
24301            let next_out_of_line = decoder.next_out_of_line();
24302            let handles_before = decoder.remaining_handles();
24303            if let Some((inlined, num_bytes, num_handles)) =
24304                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24305            {
24306                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24307                if inlined != (member_inline_size <= 4) {
24308                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24309                }
24310                let inner_offset;
24311                let mut inner_depth = depth.clone();
24312                if inlined {
24313                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24314                    inner_offset = next_offset;
24315                } else {
24316                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24317                    inner_depth.increment()?;
24318                }
24319                let val_ref = self.scope.get_or_insert_with(|| {
24320                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
24321                });
24322                fidl::decode!(
24323                    fidl::encoding::UnboundedVector<Ref>,
24324                    D,
24325                    val_ref,
24326                    decoder,
24327                    inner_offset,
24328                    inner_depth
24329                )?;
24330                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24331                {
24332                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24333                }
24334                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24335                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24336                }
24337            }
24338
24339            next_offset += envelope_size;
24340            _next_ordinal_to_read += 1;
24341            if next_offset >= end_offset {
24342                return Ok(());
24343            }
24344
24345            // Decode unknown envelopes for gaps in ordinals.
24346            while _next_ordinal_to_read < 4 {
24347                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24348                _next_ordinal_to_read += 1;
24349                next_offset += envelope_size;
24350            }
24351
24352            let next_out_of_line = decoder.next_out_of_line();
24353            let handles_before = decoder.remaining_handles();
24354            if let Some((inlined, num_bytes, num_handles)) =
24355                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24356            {
24357                let member_inline_size =
24358                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24359                        decoder.context,
24360                    );
24361                if inlined != (member_inline_size <= 4) {
24362                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24363                }
24364                let inner_offset;
24365                let mut inner_depth = depth.clone();
24366                if inlined {
24367                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24368                    inner_offset = next_offset;
24369                } else {
24370                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24371                    inner_depth.increment()?;
24372                }
24373                let val_ref = self
24374                    .target_path
24375                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24376                fidl::decode!(
24377                    fidl::encoding::BoundedString<100>,
24378                    D,
24379                    val_ref,
24380                    decoder,
24381                    inner_offset,
24382                    inner_depth
24383                )?;
24384                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24385                {
24386                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24387                }
24388                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24389                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24390                }
24391            }
24392
24393            next_offset += envelope_size;
24394            _next_ordinal_to_read += 1;
24395            if next_offset >= end_offset {
24396                return Ok(());
24397            }
24398
24399            // Decode unknown envelopes for gaps in ordinals.
24400            while _next_ordinal_to_read < 5 {
24401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24402                _next_ordinal_to_read += 1;
24403                next_offset += envelope_size;
24404            }
24405
24406            let next_out_of_line = decoder.next_out_of_line();
24407            let handles_before = decoder.remaining_handles();
24408            if let Some((inlined, num_bytes, num_handles)) =
24409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24410            {
24411                let member_inline_size =
24412                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24413                if inlined != (member_inline_size <= 4) {
24414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24415                }
24416                let inner_offset;
24417                let mut inner_depth = depth.clone();
24418                if inlined {
24419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24420                    inner_offset = next_offset;
24421                } else {
24422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24423                    inner_depth.increment()?;
24424                }
24425                let val_ref =
24426                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24427                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24428                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24429                {
24430                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24431                }
24432                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24433                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24434                }
24435            }
24436
24437            next_offset += envelope_size;
24438            _next_ordinal_to_read += 1;
24439            if next_offset >= end_offset {
24440                return Ok(());
24441            }
24442
24443            // Decode unknown envelopes for gaps in ordinals.
24444            while _next_ordinal_to_read < 6 {
24445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24446                _next_ordinal_to_read += 1;
24447                next_offset += envelope_size;
24448            }
24449
24450            let next_out_of_line = decoder.next_out_of_line();
24451            let handles_before = decoder.remaining_handles();
24452            if let Some((inlined, num_bytes, num_handles)) =
24453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24454            {
24455                let member_inline_size = <fidl_fuchsia_data_common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24456                if inlined != (member_inline_size <= 4) {
24457                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24458                }
24459                let inner_offset;
24460                let mut inner_depth = depth.clone();
24461                if inlined {
24462                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24463                    inner_offset = next_offset;
24464                } else {
24465                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24466                    inner_depth.increment()?;
24467                }
24468                let val_ref = self.filter.get_or_insert_with(|| {
24469                    fidl::new_empty!(fidl_fuchsia_data_common::Dictionary, D)
24470                });
24471                fidl::decode!(
24472                    fidl_fuchsia_data_common::Dictionary,
24473                    D,
24474                    val_ref,
24475                    decoder,
24476                    inner_offset,
24477                    inner_depth
24478                )?;
24479                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24480                {
24481                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24482                }
24483                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24484                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24485                }
24486            }
24487
24488            next_offset += envelope_size;
24489
24490            // Decode the remaining unknown envelopes.
24491            while next_offset < end_offset {
24492                _next_ordinal_to_read += 1;
24493                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24494                next_offset += envelope_size;
24495            }
24496
24497            Ok(())
24498        }
24499    }
24500
24501    impl UseProtocol {
24502        #[inline(always)]
24503        fn max_ordinal_present(&self) -> u64 {
24504            if let Some(_) = self.numbered_handle {
24505                return 7;
24506            }
24507            if let Some(_) = self.source_dictionary {
24508                return 6;
24509            }
24510            if let Some(_) = self.availability {
24511                return 5;
24512            }
24513            if let Some(_) = self.dependency_type {
24514                return 4;
24515            }
24516            if let Some(_) = self.target_path {
24517                return 3;
24518            }
24519            if let Some(_) = self.source_name {
24520                return 2;
24521            }
24522            if let Some(_) = self.source {
24523                return 1;
24524            }
24525            0
24526        }
24527    }
24528
24529    impl fidl::encoding::ValueTypeMarker for UseProtocol {
24530        type Borrowed<'a> = &'a Self;
24531        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24532            value
24533        }
24534    }
24535
24536    unsafe impl fidl::encoding::TypeMarker for UseProtocol {
24537        type Owned = Self;
24538
24539        #[inline(always)]
24540        fn inline_align(_context: fidl::encoding::Context) -> usize {
24541            8
24542        }
24543
24544        #[inline(always)]
24545        fn inline_size(_context: fidl::encoding::Context) -> usize {
24546            16
24547        }
24548    }
24549
24550    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseProtocol, D>
24551        for &UseProtocol
24552    {
24553        unsafe fn encode(
24554            self,
24555            encoder: &mut fidl::encoding::Encoder<'_, D>,
24556            offset: usize,
24557            mut depth: fidl::encoding::Depth,
24558        ) -> fidl::Result<()> {
24559            encoder.debug_check_bounds::<UseProtocol>(offset);
24560            // Vector header
24561            let max_ordinal: u64 = self.max_ordinal_present();
24562            encoder.write_num(max_ordinal, offset);
24563            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24564            // Calling encoder.out_of_line_offset(0) is not allowed.
24565            if max_ordinal == 0 {
24566                return Ok(());
24567            }
24568            depth.increment()?;
24569            let envelope_size = 8;
24570            let bytes_len = max_ordinal as usize * envelope_size;
24571            #[allow(unused_variables)]
24572            let offset = encoder.out_of_line_offset(bytes_len);
24573            let mut _prev_end_offset: usize = 0;
24574            if 1 > max_ordinal {
24575                return Ok(());
24576            }
24577
24578            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24579            // are envelope_size bytes.
24580            let cur_offset: usize = (1 - 1) * envelope_size;
24581
24582            // Zero reserved fields.
24583            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24584
24585            // Safety:
24586            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24587            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24588            //   envelope_size bytes, there is always sufficient room.
24589            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24590                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24591                encoder,
24592                offset + cur_offset,
24593                depth,
24594            )?;
24595
24596            _prev_end_offset = cur_offset + envelope_size;
24597            if 2 > max_ordinal {
24598                return Ok(());
24599            }
24600
24601            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24602            // are envelope_size bytes.
24603            let cur_offset: usize = (2 - 1) * envelope_size;
24604
24605            // Zero reserved fields.
24606            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24607
24608            // Safety:
24609            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24610            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24611            //   envelope_size bytes, there is always sufficient room.
24612            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24613                self.source_name.as_ref().map(
24614                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24615                ),
24616                encoder,
24617                offset + cur_offset,
24618                depth,
24619            )?;
24620
24621            _prev_end_offset = cur_offset + envelope_size;
24622            if 3 > max_ordinal {
24623                return Ok(());
24624            }
24625
24626            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24627            // are envelope_size bytes.
24628            let cur_offset: usize = (3 - 1) * envelope_size;
24629
24630            // Zero reserved fields.
24631            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24632
24633            // Safety:
24634            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24635            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24636            //   envelope_size bytes, there is always sufficient room.
24637            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24638            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24639            encoder, offset + cur_offset, depth
24640        )?;
24641
24642            _prev_end_offset = cur_offset + envelope_size;
24643            if 4 > max_ordinal {
24644                return Ok(());
24645            }
24646
24647            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24648            // are envelope_size bytes.
24649            let cur_offset: usize = (4 - 1) * envelope_size;
24650
24651            // Zero reserved fields.
24652            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24653
24654            // Safety:
24655            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24656            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24657            //   envelope_size bytes, there is always sufficient room.
24658            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
24659                self.dependency_type
24660                    .as_ref()
24661                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
24662                encoder,
24663                offset + cur_offset,
24664                depth,
24665            )?;
24666
24667            _prev_end_offset = cur_offset + envelope_size;
24668            if 5 > max_ordinal {
24669                return Ok(());
24670            }
24671
24672            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24673            // are envelope_size bytes.
24674            let cur_offset: usize = (5 - 1) * envelope_size;
24675
24676            // Zero reserved fields.
24677            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24678
24679            // Safety:
24680            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24681            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24682            //   envelope_size bytes, there is always sufficient room.
24683            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
24684                self.availability
24685                    .as_ref()
24686                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
24687                encoder,
24688                offset + cur_offset,
24689                depth,
24690            )?;
24691
24692            _prev_end_offset = cur_offset + envelope_size;
24693            if 6 > max_ordinal {
24694                return Ok(());
24695            }
24696
24697            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24698            // are envelope_size bytes.
24699            let cur_offset: usize = (6 - 1) * envelope_size;
24700
24701            // Zero reserved fields.
24702            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24703
24704            // Safety:
24705            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24706            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24707            //   envelope_size bytes, there is always sufficient room.
24708            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24709            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24710            encoder, offset + cur_offset, depth
24711        )?;
24712
24713            _prev_end_offset = cur_offset + envelope_size;
24714            if 7 > max_ordinal {
24715                return Ok(());
24716            }
24717
24718            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24719            // are envelope_size bytes.
24720            let cur_offset: usize = (7 - 1) * envelope_size;
24721
24722            // Zero reserved fields.
24723            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24724
24725            // Safety:
24726            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24727            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24728            //   envelope_size bytes, there is always sufficient room.
24729            fidl::encoding::encode_in_envelope_optional::<u8, D>(
24730                self.numbered_handle.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24731                encoder,
24732                offset + cur_offset,
24733                depth,
24734            )?;
24735
24736            _prev_end_offset = cur_offset + envelope_size;
24737
24738            Ok(())
24739        }
24740    }
24741
24742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseProtocol {
24743        #[inline(always)]
24744        fn new_empty() -> Self {
24745            Self::default()
24746        }
24747
24748        unsafe fn decode(
24749            &mut self,
24750            decoder: &mut fidl::encoding::Decoder<'_, D>,
24751            offset: usize,
24752            mut depth: fidl::encoding::Depth,
24753        ) -> fidl::Result<()> {
24754            decoder.debug_check_bounds::<Self>(offset);
24755            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24756                None => return Err(fidl::Error::NotNullable),
24757                Some(len) => len,
24758            };
24759            // Calling decoder.out_of_line_offset(0) is not allowed.
24760            if len == 0 {
24761                return Ok(());
24762            };
24763            depth.increment()?;
24764            let envelope_size = 8;
24765            let bytes_len = len * envelope_size;
24766            let offset = decoder.out_of_line_offset(bytes_len)?;
24767            // Decode the envelope for each type.
24768            let mut _next_ordinal_to_read = 0;
24769            let mut next_offset = offset;
24770            let end_offset = offset + bytes_len;
24771            _next_ordinal_to_read += 1;
24772            if next_offset >= end_offset {
24773                return Ok(());
24774            }
24775
24776            // Decode unknown envelopes for gaps in ordinals.
24777            while _next_ordinal_to_read < 1 {
24778                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24779                _next_ordinal_to_read += 1;
24780                next_offset += envelope_size;
24781            }
24782
24783            let next_out_of_line = decoder.next_out_of_line();
24784            let handles_before = decoder.remaining_handles();
24785            if let Some((inlined, num_bytes, num_handles)) =
24786                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24787            {
24788                let member_inline_size =
24789                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24790                if inlined != (member_inline_size <= 4) {
24791                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24792                }
24793                let inner_offset;
24794                let mut inner_depth = depth.clone();
24795                if inlined {
24796                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24797                    inner_offset = next_offset;
24798                } else {
24799                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24800                    inner_depth.increment()?;
24801                }
24802                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
24803                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
24804                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24805                {
24806                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24807                }
24808                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24809                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24810                }
24811            }
24812
24813            next_offset += envelope_size;
24814            _next_ordinal_to_read += 1;
24815            if next_offset >= end_offset {
24816                return Ok(());
24817            }
24818
24819            // Decode unknown envelopes for gaps in ordinals.
24820            while _next_ordinal_to_read < 2 {
24821                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24822                _next_ordinal_to_read += 1;
24823                next_offset += envelope_size;
24824            }
24825
24826            let next_out_of_line = decoder.next_out_of_line();
24827            let handles_before = decoder.remaining_handles();
24828            if let Some((inlined, num_bytes, num_handles)) =
24829                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24830            {
24831                let member_inline_size =
24832                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24833                        decoder.context,
24834                    );
24835                if inlined != (member_inline_size <= 4) {
24836                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24837                }
24838                let inner_offset;
24839                let mut inner_depth = depth.clone();
24840                if inlined {
24841                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24842                    inner_offset = next_offset;
24843                } else {
24844                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24845                    inner_depth.increment()?;
24846                }
24847                let val_ref = self
24848                    .source_name
24849                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24850                fidl::decode!(
24851                    fidl::encoding::BoundedString<100>,
24852                    D,
24853                    val_ref,
24854                    decoder,
24855                    inner_offset,
24856                    inner_depth
24857                )?;
24858                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24859                {
24860                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24861                }
24862                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24863                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24864                }
24865            }
24866
24867            next_offset += envelope_size;
24868            _next_ordinal_to_read += 1;
24869            if next_offset >= end_offset {
24870                return Ok(());
24871            }
24872
24873            // Decode unknown envelopes for gaps in ordinals.
24874            while _next_ordinal_to_read < 3 {
24875                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24876                _next_ordinal_to_read += 1;
24877                next_offset += envelope_size;
24878            }
24879
24880            let next_out_of_line = decoder.next_out_of_line();
24881            let handles_before = decoder.remaining_handles();
24882            if let Some((inlined, num_bytes, num_handles)) =
24883                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24884            {
24885                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24886                if inlined != (member_inline_size <= 4) {
24887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24888                }
24889                let inner_offset;
24890                let mut inner_depth = depth.clone();
24891                if inlined {
24892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24893                    inner_offset = next_offset;
24894                } else {
24895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24896                    inner_depth.increment()?;
24897                }
24898                let val_ref = self.target_path.get_or_insert_with(|| {
24899                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
24900                });
24901                fidl::decode!(
24902                    fidl::encoding::BoundedString<1024>,
24903                    D,
24904                    val_ref,
24905                    decoder,
24906                    inner_offset,
24907                    inner_depth
24908                )?;
24909                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24910                {
24911                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24912                }
24913                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24914                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24915                }
24916            }
24917
24918            next_offset += envelope_size;
24919            _next_ordinal_to_read += 1;
24920            if next_offset >= end_offset {
24921                return Ok(());
24922            }
24923
24924            // Decode unknown envelopes for gaps in ordinals.
24925            while _next_ordinal_to_read < 4 {
24926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24927                _next_ordinal_to_read += 1;
24928                next_offset += envelope_size;
24929            }
24930
24931            let next_out_of_line = decoder.next_out_of_line();
24932            let handles_before = decoder.remaining_handles();
24933            if let Some((inlined, num_bytes, num_handles)) =
24934                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24935            {
24936                let member_inline_size =
24937                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24938                if inlined != (member_inline_size <= 4) {
24939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24940                }
24941                let inner_offset;
24942                let mut inner_depth = depth.clone();
24943                if inlined {
24944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24945                    inner_offset = next_offset;
24946                } else {
24947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24948                    inner_depth.increment()?;
24949                }
24950                let val_ref =
24951                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
24952                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
24953                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24954                {
24955                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24956                }
24957                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24958                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24959                }
24960            }
24961
24962            next_offset += envelope_size;
24963            _next_ordinal_to_read += 1;
24964            if next_offset >= end_offset {
24965                return Ok(());
24966            }
24967
24968            // Decode unknown envelopes for gaps in ordinals.
24969            while _next_ordinal_to_read < 5 {
24970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24971                _next_ordinal_to_read += 1;
24972                next_offset += envelope_size;
24973            }
24974
24975            let next_out_of_line = decoder.next_out_of_line();
24976            let handles_before = decoder.remaining_handles();
24977            if let Some((inlined, num_bytes, num_handles)) =
24978                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24979            {
24980                let member_inline_size =
24981                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24982                if inlined != (member_inline_size <= 4) {
24983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24984                }
24985                let inner_offset;
24986                let mut inner_depth = depth.clone();
24987                if inlined {
24988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24989                    inner_offset = next_offset;
24990                } else {
24991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24992                    inner_depth.increment()?;
24993                }
24994                let val_ref =
24995                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24996                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24998                {
24999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25000                }
25001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25003                }
25004            }
25005
25006            next_offset += envelope_size;
25007            _next_ordinal_to_read += 1;
25008            if next_offset >= end_offset {
25009                return Ok(());
25010            }
25011
25012            // Decode unknown envelopes for gaps in ordinals.
25013            while _next_ordinal_to_read < 6 {
25014                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25015                _next_ordinal_to_read += 1;
25016                next_offset += envelope_size;
25017            }
25018
25019            let next_out_of_line = decoder.next_out_of_line();
25020            let handles_before = decoder.remaining_handles();
25021            if let Some((inlined, num_bytes, num_handles)) =
25022                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25023            {
25024                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25025                if inlined != (member_inline_size <= 4) {
25026                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25027                }
25028                let inner_offset;
25029                let mut inner_depth = depth.clone();
25030                if inlined {
25031                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25032                    inner_offset = next_offset;
25033                } else {
25034                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25035                    inner_depth.increment()?;
25036                }
25037                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25038                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25039                });
25040                fidl::decode!(
25041                    fidl::encoding::BoundedString<1024>,
25042                    D,
25043                    val_ref,
25044                    decoder,
25045                    inner_offset,
25046                    inner_depth
25047                )?;
25048                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25049                {
25050                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25051                }
25052                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25053                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25054                }
25055            }
25056
25057            next_offset += envelope_size;
25058            _next_ordinal_to_read += 1;
25059            if next_offset >= end_offset {
25060                return Ok(());
25061            }
25062
25063            // Decode unknown envelopes for gaps in ordinals.
25064            while _next_ordinal_to_read < 7 {
25065                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25066                _next_ordinal_to_read += 1;
25067                next_offset += envelope_size;
25068            }
25069
25070            let next_out_of_line = decoder.next_out_of_line();
25071            let handles_before = decoder.remaining_handles();
25072            if let Some((inlined, num_bytes, num_handles)) =
25073                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25074            {
25075                let member_inline_size =
25076                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25077                if inlined != (member_inline_size <= 4) {
25078                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25079                }
25080                let inner_offset;
25081                let mut inner_depth = depth.clone();
25082                if inlined {
25083                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25084                    inner_offset = next_offset;
25085                } else {
25086                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25087                    inner_depth.increment()?;
25088                }
25089                let val_ref = self.numbered_handle.get_or_insert_with(|| fidl::new_empty!(u8, D));
25090                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
25091                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25092                {
25093                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25094                }
25095                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25096                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25097                }
25098            }
25099
25100            next_offset += envelope_size;
25101
25102            // Decode the remaining unknown envelopes.
25103            while next_offset < end_offset {
25104                _next_ordinal_to_read += 1;
25105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25106                next_offset += envelope_size;
25107            }
25108
25109            Ok(())
25110        }
25111    }
25112
25113    impl UseRunner {
25114        #[inline(always)]
25115        fn max_ordinal_present(&self) -> u64 {
25116            if let Some(_) = self.source_dictionary {
25117                return 3;
25118            }
25119            if let Some(_) = self.source_name {
25120                return 2;
25121            }
25122            if let Some(_) = self.source {
25123                return 1;
25124            }
25125            0
25126        }
25127    }
25128
25129    impl fidl::encoding::ValueTypeMarker for UseRunner {
25130        type Borrowed<'a> = &'a Self;
25131        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25132            value
25133        }
25134    }
25135
25136    unsafe impl fidl::encoding::TypeMarker for UseRunner {
25137        type Owned = Self;
25138
25139        #[inline(always)]
25140        fn inline_align(_context: fidl::encoding::Context) -> usize {
25141            8
25142        }
25143
25144        #[inline(always)]
25145        fn inline_size(_context: fidl::encoding::Context) -> usize {
25146            16
25147        }
25148    }
25149
25150    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseRunner, D>
25151        for &UseRunner
25152    {
25153        unsafe fn encode(
25154            self,
25155            encoder: &mut fidl::encoding::Encoder<'_, D>,
25156            offset: usize,
25157            mut depth: fidl::encoding::Depth,
25158        ) -> fidl::Result<()> {
25159            encoder.debug_check_bounds::<UseRunner>(offset);
25160            // Vector header
25161            let max_ordinal: u64 = self.max_ordinal_present();
25162            encoder.write_num(max_ordinal, offset);
25163            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25164            // Calling encoder.out_of_line_offset(0) is not allowed.
25165            if max_ordinal == 0 {
25166                return Ok(());
25167            }
25168            depth.increment()?;
25169            let envelope_size = 8;
25170            let bytes_len = max_ordinal as usize * envelope_size;
25171            #[allow(unused_variables)]
25172            let offset = encoder.out_of_line_offset(bytes_len);
25173            let mut _prev_end_offset: usize = 0;
25174            if 1 > max_ordinal {
25175                return Ok(());
25176            }
25177
25178            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25179            // are envelope_size bytes.
25180            let cur_offset: usize = (1 - 1) * envelope_size;
25181
25182            // Zero reserved fields.
25183            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25184
25185            // Safety:
25186            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25187            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25188            //   envelope_size bytes, there is always sufficient room.
25189            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
25190                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
25191                encoder,
25192                offset + cur_offset,
25193                depth,
25194            )?;
25195
25196            _prev_end_offset = cur_offset + envelope_size;
25197            if 2 > max_ordinal {
25198                return Ok(());
25199            }
25200
25201            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25202            // are envelope_size bytes.
25203            let cur_offset: usize = (2 - 1) * envelope_size;
25204
25205            // Zero reserved fields.
25206            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25207
25208            // Safety:
25209            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25210            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25211            //   envelope_size bytes, there is always sufficient room.
25212            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25213                self.source_name.as_ref().map(
25214                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25215                ),
25216                encoder,
25217                offset + cur_offset,
25218                depth,
25219            )?;
25220
25221            _prev_end_offset = cur_offset + envelope_size;
25222            if 3 > max_ordinal {
25223                return Ok(());
25224            }
25225
25226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25227            // are envelope_size bytes.
25228            let cur_offset: usize = (3 - 1) * envelope_size;
25229
25230            // Zero reserved fields.
25231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25232
25233            // Safety:
25234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25236            //   envelope_size bytes, there is always sufficient room.
25237            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25238            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25239            encoder, offset + cur_offset, depth
25240        )?;
25241
25242            _prev_end_offset = cur_offset + envelope_size;
25243
25244            Ok(())
25245        }
25246    }
25247
25248    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseRunner {
25249        #[inline(always)]
25250        fn new_empty() -> Self {
25251            Self::default()
25252        }
25253
25254        unsafe fn decode(
25255            &mut self,
25256            decoder: &mut fidl::encoding::Decoder<'_, D>,
25257            offset: usize,
25258            mut depth: fidl::encoding::Depth,
25259        ) -> fidl::Result<()> {
25260            decoder.debug_check_bounds::<Self>(offset);
25261            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25262                None => return Err(fidl::Error::NotNullable),
25263                Some(len) => len,
25264            };
25265            // Calling decoder.out_of_line_offset(0) is not allowed.
25266            if len == 0 {
25267                return Ok(());
25268            };
25269            depth.increment()?;
25270            let envelope_size = 8;
25271            let bytes_len = len * envelope_size;
25272            let offset = decoder.out_of_line_offset(bytes_len)?;
25273            // Decode the envelope for each type.
25274            let mut _next_ordinal_to_read = 0;
25275            let mut next_offset = offset;
25276            let end_offset = offset + bytes_len;
25277            _next_ordinal_to_read += 1;
25278            if next_offset >= end_offset {
25279                return Ok(());
25280            }
25281
25282            // Decode unknown envelopes for gaps in ordinals.
25283            while _next_ordinal_to_read < 1 {
25284                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25285                _next_ordinal_to_read += 1;
25286                next_offset += envelope_size;
25287            }
25288
25289            let next_out_of_line = decoder.next_out_of_line();
25290            let handles_before = decoder.remaining_handles();
25291            if let Some((inlined, num_bytes, num_handles)) =
25292                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25293            {
25294                let member_inline_size =
25295                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25296                if inlined != (member_inline_size <= 4) {
25297                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25298                }
25299                let inner_offset;
25300                let mut inner_depth = depth.clone();
25301                if inlined {
25302                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25303                    inner_offset = next_offset;
25304                } else {
25305                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25306                    inner_depth.increment()?;
25307                }
25308                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25309                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25311                {
25312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25313                }
25314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25316                }
25317            }
25318
25319            next_offset += envelope_size;
25320            _next_ordinal_to_read += 1;
25321            if next_offset >= end_offset {
25322                return Ok(());
25323            }
25324
25325            // Decode unknown envelopes for gaps in ordinals.
25326            while _next_ordinal_to_read < 2 {
25327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25328                _next_ordinal_to_read += 1;
25329                next_offset += envelope_size;
25330            }
25331
25332            let next_out_of_line = decoder.next_out_of_line();
25333            let handles_before = decoder.remaining_handles();
25334            if let Some((inlined, num_bytes, num_handles)) =
25335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25336            {
25337                let member_inline_size =
25338                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25339                        decoder.context,
25340                    );
25341                if inlined != (member_inline_size <= 4) {
25342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25343                }
25344                let inner_offset;
25345                let mut inner_depth = depth.clone();
25346                if inlined {
25347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25348                    inner_offset = next_offset;
25349                } else {
25350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25351                    inner_depth.increment()?;
25352                }
25353                let val_ref = self
25354                    .source_name
25355                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25356                fidl::decode!(
25357                    fidl::encoding::BoundedString<100>,
25358                    D,
25359                    val_ref,
25360                    decoder,
25361                    inner_offset,
25362                    inner_depth
25363                )?;
25364                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25365                {
25366                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25367                }
25368                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25369                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25370                }
25371            }
25372
25373            next_offset += envelope_size;
25374            _next_ordinal_to_read += 1;
25375            if next_offset >= end_offset {
25376                return Ok(());
25377            }
25378
25379            // Decode unknown envelopes for gaps in ordinals.
25380            while _next_ordinal_to_read < 3 {
25381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25382                _next_ordinal_to_read += 1;
25383                next_offset += envelope_size;
25384            }
25385
25386            let next_out_of_line = decoder.next_out_of_line();
25387            let handles_before = decoder.remaining_handles();
25388            if let Some((inlined, num_bytes, num_handles)) =
25389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25390            {
25391                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25392                if inlined != (member_inline_size <= 4) {
25393                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25394                }
25395                let inner_offset;
25396                let mut inner_depth = depth.clone();
25397                if inlined {
25398                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25399                    inner_offset = next_offset;
25400                } else {
25401                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25402                    inner_depth.increment()?;
25403                }
25404                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25405                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25406                });
25407                fidl::decode!(
25408                    fidl::encoding::BoundedString<1024>,
25409                    D,
25410                    val_ref,
25411                    decoder,
25412                    inner_offset,
25413                    inner_depth
25414                )?;
25415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25416                {
25417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25418                }
25419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25421                }
25422            }
25423
25424            next_offset += envelope_size;
25425
25426            // Decode the remaining unknown envelopes.
25427            while next_offset < end_offset {
25428                _next_ordinal_to_read += 1;
25429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25430                next_offset += envelope_size;
25431            }
25432
25433            Ok(())
25434        }
25435    }
25436
25437    impl UseService {
25438        #[inline(always)]
25439        fn max_ordinal_present(&self) -> u64 {
25440            if let Some(_) = self.source_dictionary {
25441                return 6;
25442            }
25443            if let Some(_) = self.availability {
25444                return 5;
25445            }
25446            if let Some(_) = self.dependency_type {
25447                return 4;
25448            }
25449            if let Some(_) = self.target_path {
25450                return 3;
25451            }
25452            if let Some(_) = self.source_name {
25453                return 2;
25454            }
25455            if let Some(_) = self.source {
25456                return 1;
25457            }
25458            0
25459        }
25460    }
25461
25462    impl fidl::encoding::ValueTypeMarker for UseService {
25463        type Borrowed<'a> = &'a Self;
25464        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25465            value
25466        }
25467    }
25468
25469    unsafe impl fidl::encoding::TypeMarker for UseService {
25470        type Owned = Self;
25471
25472        #[inline(always)]
25473        fn inline_align(_context: fidl::encoding::Context) -> usize {
25474            8
25475        }
25476
25477        #[inline(always)]
25478        fn inline_size(_context: fidl::encoding::Context) -> usize {
25479            16
25480        }
25481    }
25482
25483    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseService, D>
25484        for &UseService
25485    {
25486        unsafe fn encode(
25487            self,
25488            encoder: &mut fidl::encoding::Encoder<'_, D>,
25489            offset: usize,
25490            mut depth: fidl::encoding::Depth,
25491        ) -> fidl::Result<()> {
25492            encoder.debug_check_bounds::<UseService>(offset);
25493            // Vector header
25494            let max_ordinal: u64 = self.max_ordinal_present();
25495            encoder.write_num(max_ordinal, offset);
25496            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25497            // Calling encoder.out_of_line_offset(0) is not allowed.
25498            if max_ordinal == 0 {
25499                return Ok(());
25500            }
25501            depth.increment()?;
25502            let envelope_size = 8;
25503            let bytes_len = max_ordinal as usize * envelope_size;
25504            #[allow(unused_variables)]
25505            let offset = encoder.out_of_line_offset(bytes_len);
25506            let mut _prev_end_offset: usize = 0;
25507            if 1 > max_ordinal {
25508                return Ok(());
25509            }
25510
25511            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25512            // are envelope_size bytes.
25513            let cur_offset: usize = (1 - 1) * envelope_size;
25514
25515            // Zero reserved fields.
25516            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25517
25518            // Safety:
25519            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25520            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25521            //   envelope_size bytes, there is always sufficient room.
25522            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
25523                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
25524                encoder,
25525                offset + cur_offset,
25526                depth,
25527            )?;
25528
25529            _prev_end_offset = cur_offset + envelope_size;
25530            if 2 > max_ordinal {
25531                return Ok(());
25532            }
25533
25534            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25535            // are envelope_size bytes.
25536            let cur_offset: usize = (2 - 1) * envelope_size;
25537
25538            // Zero reserved fields.
25539            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25540
25541            // Safety:
25542            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25543            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25544            //   envelope_size bytes, there is always sufficient room.
25545            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25546                self.source_name.as_ref().map(
25547                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25548                ),
25549                encoder,
25550                offset + cur_offset,
25551                depth,
25552            )?;
25553
25554            _prev_end_offset = cur_offset + envelope_size;
25555            if 3 > max_ordinal {
25556                return Ok(());
25557            }
25558
25559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25560            // are envelope_size bytes.
25561            let cur_offset: usize = (3 - 1) * envelope_size;
25562
25563            // Zero reserved fields.
25564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25565
25566            // Safety:
25567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25569            //   envelope_size bytes, there is always sufficient room.
25570            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25571            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25572            encoder, offset + cur_offset, depth
25573        )?;
25574
25575            _prev_end_offset = cur_offset + envelope_size;
25576            if 4 > max_ordinal {
25577                return Ok(());
25578            }
25579
25580            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25581            // are envelope_size bytes.
25582            let cur_offset: usize = (4 - 1) * envelope_size;
25583
25584            // Zero reserved fields.
25585            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25586
25587            // Safety:
25588            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25589            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25590            //   envelope_size bytes, there is always sufficient room.
25591            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
25592                self.dependency_type
25593                    .as_ref()
25594                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
25595                encoder,
25596                offset + cur_offset,
25597                depth,
25598            )?;
25599
25600            _prev_end_offset = cur_offset + envelope_size;
25601            if 5 > max_ordinal {
25602                return Ok(());
25603            }
25604
25605            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25606            // are envelope_size bytes.
25607            let cur_offset: usize = (5 - 1) * envelope_size;
25608
25609            // Zero reserved fields.
25610            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25611
25612            // Safety:
25613            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25614            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25615            //   envelope_size bytes, there is always sufficient room.
25616            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
25617                self.availability
25618                    .as_ref()
25619                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
25620                encoder,
25621                offset + cur_offset,
25622                depth,
25623            )?;
25624
25625            _prev_end_offset = cur_offset + envelope_size;
25626            if 6 > max_ordinal {
25627                return Ok(());
25628            }
25629
25630            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25631            // are envelope_size bytes.
25632            let cur_offset: usize = (6 - 1) * envelope_size;
25633
25634            // Zero reserved fields.
25635            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25636
25637            // Safety:
25638            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25639            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25640            //   envelope_size bytes, there is always sufficient room.
25641            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25642            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25643            encoder, offset + cur_offset, depth
25644        )?;
25645
25646            _prev_end_offset = cur_offset + envelope_size;
25647
25648            Ok(())
25649        }
25650    }
25651
25652    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseService {
25653        #[inline(always)]
25654        fn new_empty() -> Self {
25655            Self::default()
25656        }
25657
25658        unsafe fn decode(
25659            &mut self,
25660            decoder: &mut fidl::encoding::Decoder<'_, D>,
25661            offset: usize,
25662            mut depth: fidl::encoding::Depth,
25663        ) -> fidl::Result<()> {
25664            decoder.debug_check_bounds::<Self>(offset);
25665            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25666                None => return Err(fidl::Error::NotNullable),
25667                Some(len) => len,
25668            };
25669            // Calling decoder.out_of_line_offset(0) is not allowed.
25670            if len == 0 {
25671                return Ok(());
25672            };
25673            depth.increment()?;
25674            let envelope_size = 8;
25675            let bytes_len = len * envelope_size;
25676            let offset = decoder.out_of_line_offset(bytes_len)?;
25677            // Decode the envelope for each type.
25678            let mut _next_ordinal_to_read = 0;
25679            let mut next_offset = offset;
25680            let end_offset = offset + bytes_len;
25681            _next_ordinal_to_read += 1;
25682            if next_offset >= end_offset {
25683                return Ok(());
25684            }
25685
25686            // Decode unknown envelopes for gaps in ordinals.
25687            while _next_ordinal_to_read < 1 {
25688                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25689                _next_ordinal_to_read += 1;
25690                next_offset += envelope_size;
25691            }
25692
25693            let next_out_of_line = decoder.next_out_of_line();
25694            let handles_before = decoder.remaining_handles();
25695            if let Some((inlined, num_bytes, num_handles)) =
25696                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25697            {
25698                let member_inline_size =
25699                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25700                if inlined != (member_inline_size <= 4) {
25701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25702                }
25703                let inner_offset;
25704                let mut inner_depth = depth.clone();
25705                if inlined {
25706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25707                    inner_offset = next_offset;
25708                } else {
25709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25710                    inner_depth.increment()?;
25711                }
25712                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25713                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25714                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25715                {
25716                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25717                }
25718                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25719                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25720                }
25721            }
25722
25723            next_offset += envelope_size;
25724            _next_ordinal_to_read += 1;
25725            if next_offset >= end_offset {
25726                return Ok(());
25727            }
25728
25729            // Decode unknown envelopes for gaps in ordinals.
25730            while _next_ordinal_to_read < 2 {
25731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25732                _next_ordinal_to_read += 1;
25733                next_offset += envelope_size;
25734            }
25735
25736            let next_out_of_line = decoder.next_out_of_line();
25737            let handles_before = decoder.remaining_handles();
25738            if let Some((inlined, num_bytes, num_handles)) =
25739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25740            {
25741                let member_inline_size =
25742                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25743                        decoder.context,
25744                    );
25745                if inlined != (member_inline_size <= 4) {
25746                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25747                }
25748                let inner_offset;
25749                let mut inner_depth = depth.clone();
25750                if inlined {
25751                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25752                    inner_offset = next_offset;
25753                } else {
25754                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25755                    inner_depth.increment()?;
25756                }
25757                let val_ref = self
25758                    .source_name
25759                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25760                fidl::decode!(
25761                    fidl::encoding::BoundedString<100>,
25762                    D,
25763                    val_ref,
25764                    decoder,
25765                    inner_offset,
25766                    inner_depth
25767                )?;
25768                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25769                {
25770                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25771                }
25772                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25773                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25774                }
25775            }
25776
25777            next_offset += envelope_size;
25778            _next_ordinal_to_read += 1;
25779            if next_offset >= end_offset {
25780                return Ok(());
25781            }
25782
25783            // Decode unknown envelopes for gaps in ordinals.
25784            while _next_ordinal_to_read < 3 {
25785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25786                _next_ordinal_to_read += 1;
25787                next_offset += envelope_size;
25788            }
25789
25790            let next_out_of_line = decoder.next_out_of_line();
25791            let handles_before = decoder.remaining_handles();
25792            if let Some((inlined, num_bytes, num_handles)) =
25793                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25794            {
25795                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25796                if inlined != (member_inline_size <= 4) {
25797                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25798                }
25799                let inner_offset;
25800                let mut inner_depth = depth.clone();
25801                if inlined {
25802                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25803                    inner_offset = next_offset;
25804                } else {
25805                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25806                    inner_depth.increment()?;
25807                }
25808                let val_ref = self.target_path.get_or_insert_with(|| {
25809                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25810                });
25811                fidl::decode!(
25812                    fidl::encoding::BoundedString<1024>,
25813                    D,
25814                    val_ref,
25815                    decoder,
25816                    inner_offset,
25817                    inner_depth
25818                )?;
25819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25820                {
25821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25822                }
25823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25825                }
25826            }
25827
25828            next_offset += envelope_size;
25829            _next_ordinal_to_read += 1;
25830            if next_offset >= end_offset {
25831                return Ok(());
25832            }
25833
25834            // Decode unknown envelopes for gaps in ordinals.
25835            while _next_ordinal_to_read < 4 {
25836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25837                _next_ordinal_to_read += 1;
25838                next_offset += envelope_size;
25839            }
25840
25841            let next_out_of_line = decoder.next_out_of_line();
25842            let handles_before = decoder.remaining_handles();
25843            if let Some((inlined, num_bytes, num_handles)) =
25844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25845            {
25846                let member_inline_size =
25847                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25848                if inlined != (member_inline_size <= 4) {
25849                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25850                }
25851                let inner_offset;
25852                let mut inner_depth = depth.clone();
25853                if inlined {
25854                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25855                    inner_offset = next_offset;
25856                } else {
25857                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25858                    inner_depth.increment()?;
25859                }
25860                let val_ref =
25861                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
25862                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
25863                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25864                {
25865                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25866                }
25867                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25868                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25869                }
25870            }
25871
25872            next_offset += envelope_size;
25873            _next_ordinal_to_read += 1;
25874            if next_offset >= end_offset {
25875                return Ok(());
25876            }
25877
25878            // Decode unknown envelopes for gaps in ordinals.
25879            while _next_ordinal_to_read < 5 {
25880                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25881                _next_ordinal_to_read += 1;
25882                next_offset += envelope_size;
25883            }
25884
25885            let next_out_of_line = decoder.next_out_of_line();
25886            let handles_before = decoder.remaining_handles();
25887            if let Some((inlined, num_bytes, num_handles)) =
25888                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25889            {
25890                let member_inline_size =
25891                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25892                if inlined != (member_inline_size <= 4) {
25893                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25894                }
25895                let inner_offset;
25896                let mut inner_depth = depth.clone();
25897                if inlined {
25898                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25899                    inner_offset = next_offset;
25900                } else {
25901                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25902                    inner_depth.increment()?;
25903                }
25904                let val_ref =
25905                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
25906                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
25907                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25908                {
25909                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25910                }
25911                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25912                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25913                }
25914            }
25915
25916            next_offset += envelope_size;
25917            _next_ordinal_to_read += 1;
25918            if next_offset >= end_offset {
25919                return Ok(());
25920            }
25921
25922            // Decode unknown envelopes for gaps in ordinals.
25923            while _next_ordinal_to_read < 6 {
25924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25925                _next_ordinal_to_read += 1;
25926                next_offset += envelope_size;
25927            }
25928
25929            let next_out_of_line = decoder.next_out_of_line();
25930            let handles_before = decoder.remaining_handles();
25931            if let Some((inlined, num_bytes, num_handles)) =
25932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25933            {
25934                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25935                if inlined != (member_inline_size <= 4) {
25936                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25937                }
25938                let inner_offset;
25939                let mut inner_depth = depth.clone();
25940                if inlined {
25941                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25942                    inner_offset = next_offset;
25943                } else {
25944                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25945                    inner_depth.increment()?;
25946                }
25947                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25948                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25949                });
25950                fidl::decode!(
25951                    fidl::encoding::BoundedString<1024>,
25952                    D,
25953                    val_ref,
25954                    decoder,
25955                    inner_offset,
25956                    inner_depth
25957                )?;
25958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25959                {
25960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25961                }
25962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25964                }
25965            }
25966
25967            next_offset += envelope_size;
25968
25969            // Decode the remaining unknown envelopes.
25970            while next_offset < end_offset {
25971                _next_ordinal_to_read += 1;
25972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25973                next_offset += envelope_size;
25974            }
25975
25976            Ok(())
25977        }
25978    }
25979
25980    impl UseStorage {
25981        #[inline(always)]
25982        fn max_ordinal_present(&self) -> u64 {
25983            if let Some(_) = self.availability {
25984                return 3;
25985            }
25986            if let Some(_) = self.target_path {
25987                return 2;
25988            }
25989            if let Some(_) = self.source_name {
25990                return 1;
25991            }
25992            0
25993        }
25994    }
25995
25996    impl fidl::encoding::ValueTypeMarker for UseStorage {
25997        type Borrowed<'a> = &'a Self;
25998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25999            value
26000        }
26001    }
26002
26003    unsafe impl fidl::encoding::TypeMarker for UseStorage {
26004        type Owned = Self;
26005
26006        #[inline(always)]
26007        fn inline_align(_context: fidl::encoding::Context) -> usize {
26008            8
26009        }
26010
26011        #[inline(always)]
26012        fn inline_size(_context: fidl::encoding::Context) -> usize {
26013            16
26014        }
26015    }
26016
26017    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseStorage, D>
26018        for &UseStorage
26019    {
26020        unsafe fn encode(
26021            self,
26022            encoder: &mut fidl::encoding::Encoder<'_, D>,
26023            offset: usize,
26024            mut depth: fidl::encoding::Depth,
26025        ) -> fidl::Result<()> {
26026            encoder.debug_check_bounds::<UseStorage>(offset);
26027            // Vector header
26028            let max_ordinal: u64 = self.max_ordinal_present();
26029            encoder.write_num(max_ordinal, offset);
26030            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26031            // Calling encoder.out_of_line_offset(0) is not allowed.
26032            if max_ordinal == 0 {
26033                return Ok(());
26034            }
26035            depth.increment()?;
26036            let envelope_size = 8;
26037            let bytes_len = max_ordinal as usize * envelope_size;
26038            #[allow(unused_variables)]
26039            let offset = encoder.out_of_line_offset(bytes_len);
26040            let mut _prev_end_offset: usize = 0;
26041            if 1 > max_ordinal {
26042                return Ok(());
26043            }
26044
26045            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26046            // are envelope_size bytes.
26047            let cur_offset: usize = (1 - 1) * envelope_size;
26048
26049            // Zero reserved fields.
26050            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26051
26052            // Safety:
26053            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26054            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26055            //   envelope_size bytes, there is always sufficient room.
26056            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
26057                self.source_name.as_ref().map(
26058                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
26059                ),
26060                encoder,
26061                offset + cur_offset,
26062                depth,
26063            )?;
26064
26065            _prev_end_offset = cur_offset + envelope_size;
26066            if 2 > max_ordinal {
26067                return Ok(());
26068            }
26069
26070            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26071            // are envelope_size bytes.
26072            let cur_offset: usize = (2 - 1) * envelope_size;
26073
26074            // Zero reserved fields.
26075            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26076
26077            // Safety:
26078            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26079            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26080            //   envelope_size bytes, there is always sufficient room.
26081            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
26082            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
26083            encoder, offset + cur_offset, depth
26084        )?;
26085
26086            _prev_end_offset = cur_offset + envelope_size;
26087            if 3 > max_ordinal {
26088                return Ok(());
26089            }
26090
26091            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
26092            // are envelope_size bytes.
26093            let cur_offset: usize = (3 - 1) * envelope_size;
26094
26095            // Zero reserved fields.
26096            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26097
26098            // Safety:
26099            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
26100            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
26101            //   envelope_size bytes, there is always sufficient room.
26102            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
26103                self.availability
26104                    .as_ref()
26105                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
26106                encoder,
26107                offset + cur_offset,
26108                depth,
26109            )?;
26110
26111            _prev_end_offset = cur_offset + envelope_size;
26112
26113            Ok(())
26114        }
26115    }
26116
26117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseStorage {
26118        #[inline(always)]
26119        fn new_empty() -> Self {
26120            Self::default()
26121        }
26122
26123        unsafe fn decode(
26124            &mut self,
26125            decoder: &mut fidl::encoding::Decoder<'_, D>,
26126            offset: usize,
26127            mut depth: fidl::encoding::Depth,
26128        ) -> fidl::Result<()> {
26129            decoder.debug_check_bounds::<Self>(offset);
26130            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26131                None => return Err(fidl::Error::NotNullable),
26132                Some(len) => len,
26133            };
26134            // Calling decoder.out_of_line_offset(0) is not allowed.
26135            if len == 0 {
26136                return Ok(());
26137            };
26138            depth.increment()?;
26139            let envelope_size = 8;
26140            let bytes_len = len * envelope_size;
26141            let offset = decoder.out_of_line_offset(bytes_len)?;
26142            // Decode the envelope for each type.
26143            let mut _next_ordinal_to_read = 0;
26144            let mut next_offset = offset;
26145            let end_offset = offset + bytes_len;
26146            _next_ordinal_to_read += 1;
26147            if next_offset >= end_offset {
26148                return Ok(());
26149            }
26150
26151            // Decode unknown envelopes for gaps in ordinals.
26152            while _next_ordinal_to_read < 1 {
26153                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26154                _next_ordinal_to_read += 1;
26155                next_offset += envelope_size;
26156            }
26157
26158            let next_out_of_line = decoder.next_out_of_line();
26159            let handles_before = decoder.remaining_handles();
26160            if let Some((inlined, num_bytes, num_handles)) =
26161                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26162            {
26163                let member_inline_size =
26164                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
26165                        decoder.context,
26166                    );
26167                if inlined != (member_inline_size <= 4) {
26168                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26169                }
26170                let inner_offset;
26171                let mut inner_depth = depth.clone();
26172                if inlined {
26173                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26174                    inner_offset = next_offset;
26175                } else {
26176                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26177                    inner_depth.increment()?;
26178                }
26179                let val_ref = self
26180                    .source_name
26181                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
26182                fidl::decode!(
26183                    fidl::encoding::BoundedString<100>,
26184                    D,
26185                    val_ref,
26186                    decoder,
26187                    inner_offset,
26188                    inner_depth
26189                )?;
26190                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26191                {
26192                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26193                }
26194                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26195                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26196                }
26197            }
26198
26199            next_offset += envelope_size;
26200            _next_ordinal_to_read += 1;
26201            if next_offset >= end_offset {
26202                return Ok(());
26203            }
26204
26205            // Decode unknown envelopes for gaps in ordinals.
26206            while _next_ordinal_to_read < 2 {
26207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26208                _next_ordinal_to_read += 1;
26209                next_offset += envelope_size;
26210            }
26211
26212            let next_out_of_line = decoder.next_out_of_line();
26213            let handles_before = decoder.remaining_handles();
26214            if let Some((inlined, num_bytes, num_handles)) =
26215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26216            {
26217                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26218                if inlined != (member_inline_size <= 4) {
26219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26220                }
26221                let inner_offset;
26222                let mut inner_depth = depth.clone();
26223                if inlined {
26224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26225                    inner_offset = next_offset;
26226                } else {
26227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26228                    inner_depth.increment()?;
26229                }
26230                let val_ref = self.target_path.get_or_insert_with(|| {
26231                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
26232                });
26233                fidl::decode!(
26234                    fidl::encoding::BoundedString<1024>,
26235                    D,
26236                    val_ref,
26237                    decoder,
26238                    inner_offset,
26239                    inner_depth
26240                )?;
26241                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26242                {
26243                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26244                }
26245                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26246                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26247                }
26248            }
26249
26250            next_offset += envelope_size;
26251            _next_ordinal_to_read += 1;
26252            if next_offset >= end_offset {
26253                return Ok(());
26254            }
26255
26256            // Decode unknown envelopes for gaps in ordinals.
26257            while _next_ordinal_to_read < 3 {
26258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26259                _next_ordinal_to_read += 1;
26260                next_offset += envelope_size;
26261            }
26262
26263            let next_out_of_line = decoder.next_out_of_line();
26264            let handles_before = decoder.remaining_handles();
26265            if let Some((inlined, num_bytes, num_handles)) =
26266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
26267            {
26268                let member_inline_size =
26269                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26270                if inlined != (member_inline_size <= 4) {
26271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
26272                }
26273                let inner_offset;
26274                let mut inner_depth = depth.clone();
26275                if inlined {
26276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26277                    inner_offset = next_offset;
26278                } else {
26279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26280                    inner_depth.increment()?;
26281                }
26282                let val_ref =
26283                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
26284                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
26285                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26286                {
26287                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
26288                }
26289                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26290                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26291                }
26292            }
26293
26294            next_offset += envelope_size;
26295
26296            // Decode the remaining unknown envelopes.
26297            while next_offset < end_offset {
26298                _next_ordinal_to_read += 1;
26299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26300                next_offset += envelope_size;
26301            }
26302
26303            Ok(())
26304        }
26305    }
26306
26307    impl fidl::encoding::ValueTypeMarker for Capability {
26308        type Borrowed<'a> = &'a Self;
26309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26310            value
26311        }
26312    }
26313
26314    unsafe impl fidl::encoding::TypeMarker for Capability {
26315        type Owned = Self;
26316
26317        #[inline(always)]
26318        fn inline_align(_context: fidl::encoding::Context) -> usize {
26319            8
26320        }
26321
26322        #[inline(always)]
26323        fn inline_size(_context: fidl::encoding::Context) -> usize {
26324            16
26325        }
26326    }
26327
26328    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
26329        for &Capability
26330    {
26331        #[inline]
26332        unsafe fn encode(
26333            self,
26334            encoder: &mut fidl::encoding::Encoder<'_, D>,
26335            offset: usize,
26336            _depth: fidl::encoding::Depth,
26337        ) -> fidl::Result<()> {
26338            encoder.debug_check_bounds::<Capability>(offset);
26339            encoder.write_num::<u64>(self.ordinal(), offset);
26340            match self {
26341                Capability::Service(ref val) => fidl::encoding::encode_in_envelope::<Service, D>(
26342                    <Service as fidl::encoding::ValueTypeMarker>::borrow(val),
26343                    encoder,
26344                    offset + 8,
26345                    _depth,
26346                ),
26347                Capability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<Protocol, D>(
26348                    <Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
26349                    encoder,
26350                    offset + 8,
26351                    _depth,
26352                ),
26353                Capability::Directory(ref val) => {
26354                    fidl::encoding::encode_in_envelope::<Directory, D>(
26355                        <Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
26356                        encoder,
26357                        offset + 8,
26358                        _depth,
26359                    )
26360                }
26361                Capability::Storage(ref val) => fidl::encoding::encode_in_envelope::<Storage, D>(
26362                    <Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
26363                    encoder,
26364                    offset + 8,
26365                    _depth,
26366                ),
26367                Capability::Runner(ref val) => fidl::encoding::encode_in_envelope::<Runner, D>(
26368                    <Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
26369                    encoder,
26370                    offset + 8,
26371                    _depth,
26372                ),
26373                Capability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<Resolver, D>(
26374                    <Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
26375                    encoder,
26376                    offset + 8,
26377                    _depth,
26378                ),
26379                Capability::EventStream(ref val) => {
26380                    fidl::encoding::encode_in_envelope::<EventStream, D>(
26381                        <EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
26382                        encoder,
26383                        offset + 8,
26384                        _depth,
26385                    )
26386                }
26387                Capability::Dictionary(ref val) => {
26388                    fidl::encoding::encode_in_envelope::<Dictionary, D>(
26389                        <Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
26390                        encoder,
26391                        offset + 8,
26392                        _depth,
26393                    )
26394                }
26395                Capability::Config(ref val) => {
26396                    fidl::encoding::encode_in_envelope::<Configuration, D>(
26397                        <Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
26398                        encoder,
26399                        offset + 8,
26400                        _depth,
26401                    )
26402                }
26403                Capability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26404            }
26405        }
26406    }
26407
26408    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
26409        #[inline(always)]
26410        fn new_empty() -> Self {
26411            Self::__SourceBreaking { unknown_ordinal: 0 }
26412        }
26413
26414        #[inline]
26415        unsafe fn decode(
26416            &mut self,
26417            decoder: &mut fidl::encoding::Decoder<'_, D>,
26418            offset: usize,
26419            mut depth: fidl::encoding::Depth,
26420        ) -> fidl::Result<()> {
26421            decoder.debug_check_bounds::<Self>(offset);
26422            #[allow(unused_variables)]
26423            let next_out_of_line = decoder.next_out_of_line();
26424            let handles_before = decoder.remaining_handles();
26425            let (ordinal, inlined, num_bytes, num_handles) =
26426                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26427
26428            let member_inline_size = match ordinal {
26429                1 => <Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26430                2 => <Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26431                3 => <Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26432                4 => <Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26433                5 => <Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26434                6 => <Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26435                8 => <EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26436                9 => <Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26437                10 => <Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26438                0 => return Err(fidl::Error::UnknownUnionTag),
26439                _ => num_bytes as usize,
26440            };
26441
26442            if inlined != (member_inline_size <= 4) {
26443                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26444            }
26445            let _inner_offset;
26446            if inlined {
26447                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26448                _inner_offset = offset + 8;
26449            } else {
26450                depth.increment()?;
26451                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26452            }
26453            match ordinal {
26454                1 => {
26455                    #[allow(irrefutable_let_patterns)]
26456                    if let Capability::Service(_) = self {
26457                        // Do nothing, read the value into the object
26458                    } else {
26459                        // Initialize `self` to the right variant
26460                        *self = Capability::Service(fidl::new_empty!(Service, D));
26461                    }
26462                    #[allow(irrefutable_let_patterns)]
26463                    if let Capability::Service(ref mut val) = self {
26464                        fidl::decode!(Service, D, val, decoder, _inner_offset, depth)?;
26465                    } else {
26466                        unreachable!()
26467                    }
26468                }
26469                2 => {
26470                    #[allow(irrefutable_let_patterns)]
26471                    if let Capability::Protocol(_) = self {
26472                        // Do nothing, read the value into the object
26473                    } else {
26474                        // Initialize `self` to the right variant
26475                        *self = Capability::Protocol(fidl::new_empty!(Protocol, D));
26476                    }
26477                    #[allow(irrefutable_let_patterns)]
26478                    if let Capability::Protocol(ref mut val) = self {
26479                        fidl::decode!(Protocol, D, val, decoder, _inner_offset, depth)?;
26480                    } else {
26481                        unreachable!()
26482                    }
26483                }
26484                3 => {
26485                    #[allow(irrefutable_let_patterns)]
26486                    if let Capability::Directory(_) = self {
26487                        // Do nothing, read the value into the object
26488                    } else {
26489                        // Initialize `self` to the right variant
26490                        *self = Capability::Directory(fidl::new_empty!(Directory, D));
26491                    }
26492                    #[allow(irrefutable_let_patterns)]
26493                    if let Capability::Directory(ref mut val) = self {
26494                        fidl::decode!(Directory, D, val, decoder, _inner_offset, depth)?;
26495                    } else {
26496                        unreachable!()
26497                    }
26498                }
26499                4 => {
26500                    #[allow(irrefutable_let_patterns)]
26501                    if let Capability::Storage(_) = self {
26502                        // Do nothing, read the value into the object
26503                    } else {
26504                        // Initialize `self` to the right variant
26505                        *self = Capability::Storage(fidl::new_empty!(Storage, D));
26506                    }
26507                    #[allow(irrefutable_let_patterns)]
26508                    if let Capability::Storage(ref mut val) = self {
26509                        fidl::decode!(Storage, D, val, decoder, _inner_offset, depth)?;
26510                    } else {
26511                        unreachable!()
26512                    }
26513                }
26514                5 => {
26515                    #[allow(irrefutable_let_patterns)]
26516                    if let Capability::Runner(_) = self {
26517                        // Do nothing, read the value into the object
26518                    } else {
26519                        // Initialize `self` to the right variant
26520                        *self = Capability::Runner(fidl::new_empty!(Runner, D));
26521                    }
26522                    #[allow(irrefutable_let_patterns)]
26523                    if let Capability::Runner(ref mut val) = self {
26524                        fidl::decode!(Runner, D, val, decoder, _inner_offset, depth)?;
26525                    } else {
26526                        unreachable!()
26527                    }
26528                }
26529                6 => {
26530                    #[allow(irrefutable_let_patterns)]
26531                    if let Capability::Resolver(_) = self {
26532                        // Do nothing, read the value into the object
26533                    } else {
26534                        // Initialize `self` to the right variant
26535                        *self = Capability::Resolver(fidl::new_empty!(Resolver, D));
26536                    }
26537                    #[allow(irrefutable_let_patterns)]
26538                    if let Capability::Resolver(ref mut val) = self {
26539                        fidl::decode!(Resolver, D, val, decoder, _inner_offset, depth)?;
26540                    } else {
26541                        unreachable!()
26542                    }
26543                }
26544                8 => {
26545                    #[allow(irrefutable_let_patterns)]
26546                    if let Capability::EventStream(_) = self {
26547                        // Do nothing, read the value into the object
26548                    } else {
26549                        // Initialize `self` to the right variant
26550                        *self = Capability::EventStream(fidl::new_empty!(EventStream, D));
26551                    }
26552                    #[allow(irrefutable_let_patterns)]
26553                    if let Capability::EventStream(ref mut val) = self {
26554                        fidl::decode!(EventStream, D, val, decoder, _inner_offset, depth)?;
26555                    } else {
26556                        unreachable!()
26557                    }
26558                }
26559                9 => {
26560                    #[allow(irrefutable_let_patterns)]
26561                    if let Capability::Dictionary(_) = self {
26562                        // Do nothing, read the value into the object
26563                    } else {
26564                        // Initialize `self` to the right variant
26565                        *self = Capability::Dictionary(fidl::new_empty!(Dictionary, D));
26566                    }
26567                    #[allow(irrefutable_let_patterns)]
26568                    if let Capability::Dictionary(ref mut val) = self {
26569                        fidl::decode!(Dictionary, D, val, decoder, _inner_offset, depth)?;
26570                    } else {
26571                        unreachable!()
26572                    }
26573                }
26574                10 => {
26575                    #[allow(irrefutable_let_patterns)]
26576                    if let Capability::Config(_) = self {
26577                        // Do nothing, read the value into the object
26578                    } else {
26579                        // Initialize `self` to the right variant
26580                        *self = Capability::Config(fidl::new_empty!(Configuration, D));
26581                    }
26582                    #[allow(irrefutable_let_patterns)]
26583                    if let Capability::Config(ref mut val) = self {
26584                        fidl::decode!(Configuration, D, val, decoder, _inner_offset, depth)?;
26585                    } else {
26586                        unreachable!()
26587                    }
26588                }
26589                #[allow(deprecated)]
26590                ordinal => {
26591                    for _ in 0..num_handles {
26592                        decoder.drop_next_handle()?;
26593                    }
26594                    *self = Capability::__SourceBreaking { unknown_ordinal: ordinal };
26595                }
26596            }
26597            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26598                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26599            }
26600            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26601                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26602            }
26603            Ok(())
26604        }
26605    }
26606
26607    impl fidl::encoding::ValueTypeMarker for ConfigChecksum {
26608        type Borrowed<'a> = &'a Self;
26609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26610            value
26611        }
26612    }
26613
26614    unsafe impl fidl::encoding::TypeMarker for ConfigChecksum {
26615        type Owned = Self;
26616
26617        #[inline(always)]
26618        fn inline_align(_context: fidl::encoding::Context) -> usize {
26619            8
26620        }
26621
26622        #[inline(always)]
26623        fn inline_size(_context: fidl::encoding::Context) -> usize {
26624            16
26625        }
26626    }
26627
26628    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigChecksum, D>
26629        for &ConfigChecksum
26630    {
26631        #[inline]
26632        unsafe fn encode(
26633            self,
26634            encoder: &mut fidl::encoding::Encoder<'_, D>,
26635            offset: usize,
26636            _depth: fidl::encoding::Depth,
26637        ) -> fidl::Result<()> {
26638            encoder.debug_check_bounds::<ConfigChecksum>(offset);
26639            encoder.write_num::<u64>(self.ordinal(), offset);
26640            match self {
26641                ConfigChecksum::Sha256(ref val) => fidl::encoding::encode_in_envelope::<
26642                    fidl::encoding::Array<u8, 32>,
26643                    D,
26644                >(
26645                    <fidl::encoding::Array<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(val),
26646                    encoder,
26647                    offset + 8,
26648                    _depth,
26649                ),
26650                ConfigChecksum::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26651            }
26652        }
26653    }
26654
26655    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigChecksum {
26656        #[inline(always)]
26657        fn new_empty() -> Self {
26658            Self::__SourceBreaking { unknown_ordinal: 0 }
26659        }
26660
26661        #[inline]
26662        unsafe fn decode(
26663            &mut self,
26664            decoder: &mut fidl::encoding::Decoder<'_, D>,
26665            offset: usize,
26666            mut depth: fidl::encoding::Depth,
26667        ) -> fidl::Result<()> {
26668            decoder.debug_check_bounds::<Self>(offset);
26669            #[allow(unused_variables)]
26670            let next_out_of_line = decoder.next_out_of_line();
26671            let handles_before = decoder.remaining_handles();
26672            let (ordinal, inlined, num_bytes, num_handles) =
26673                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26674
26675            let member_inline_size = match ordinal {
26676                1 => <fidl::encoding::Array<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
26677                    decoder.context,
26678                ),
26679                0 => return Err(fidl::Error::UnknownUnionTag),
26680                _ => num_bytes as usize,
26681            };
26682
26683            if inlined != (member_inline_size <= 4) {
26684                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26685            }
26686            let _inner_offset;
26687            if inlined {
26688                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26689                _inner_offset = offset + 8;
26690            } else {
26691                depth.increment()?;
26692                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26693            }
26694            match ordinal {
26695                1 => {
26696                    #[allow(irrefutable_let_patterns)]
26697                    if let ConfigChecksum::Sha256(_) = self {
26698                        // Do nothing, read the value into the object
26699                    } else {
26700                        // Initialize `self` to the right variant
26701                        *self = ConfigChecksum::Sha256(
26702                            fidl::new_empty!(fidl::encoding::Array<u8, 32>, D),
26703                        );
26704                    }
26705                    #[allow(irrefutable_let_patterns)]
26706                    if let ConfigChecksum::Sha256(ref mut val) = self {
26707                        fidl::decode!(fidl::encoding::Array<u8, 32>, D, val, decoder, _inner_offset, depth)?;
26708                    } else {
26709                        unreachable!()
26710                    }
26711                }
26712                #[allow(deprecated)]
26713                ordinal => {
26714                    for _ in 0..num_handles {
26715                        decoder.drop_next_handle()?;
26716                    }
26717                    *self = ConfigChecksum::__SourceBreaking { unknown_ordinal: ordinal };
26718                }
26719            }
26720            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26721                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26722            }
26723            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26724                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26725            }
26726            Ok(())
26727        }
26728    }
26729
26730    impl fidl::encoding::ValueTypeMarker for ConfigSingleValue {
26731        type Borrowed<'a> = &'a Self;
26732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26733            value
26734        }
26735    }
26736
26737    unsafe impl fidl::encoding::TypeMarker for ConfigSingleValue {
26738        type Owned = Self;
26739
26740        #[inline(always)]
26741        fn inline_align(_context: fidl::encoding::Context) -> usize {
26742            8
26743        }
26744
26745        #[inline(always)]
26746        fn inline_size(_context: fidl::encoding::Context) -> usize {
26747            16
26748        }
26749    }
26750
26751    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigSingleValue, D>
26752        for &ConfigSingleValue
26753    {
26754        #[inline]
26755        unsafe fn encode(
26756            self,
26757            encoder: &mut fidl::encoding::Encoder<'_, D>,
26758            offset: usize,
26759            _depth: fidl::encoding::Depth,
26760        ) -> fidl::Result<()> {
26761            encoder.debug_check_bounds::<ConfigSingleValue>(offset);
26762            encoder.write_num::<u64>(self.ordinal(), offset);
26763            match self {
26764                ConfigSingleValue::Bool(ref val) => fidl::encoding::encode_in_envelope::<bool, D>(
26765                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
26766                    encoder,
26767                    offset + 8,
26768                    _depth,
26769                ),
26770                ConfigSingleValue::Uint8(ref val) => fidl::encoding::encode_in_envelope::<u8, D>(
26771                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26772                    encoder,
26773                    offset + 8,
26774                    _depth,
26775                ),
26776                ConfigSingleValue::Uint16(ref val) => fidl::encoding::encode_in_envelope::<u16, D>(
26777                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26778                    encoder,
26779                    offset + 8,
26780                    _depth,
26781                ),
26782                ConfigSingleValue::Uint32(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
26783                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26784                    encoder,
26785                    offset + 8,
26786                    _depth,
26787                ),
26788                ConfigSingleValue::Uint64(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
26789                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26790                    encoder,
26791                    offset + 8,
26792                    _depth,
26793                ),
26794                ConfigSingleValue::Int8(ref val) => fidl::encoding::encode_in_envelope::<i8, D>(
26795                    <i8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26796                    encoder,
26797                    offset + 8,
26798                    _depth,
26799                ),
26800                ConfigSingleValue::Int16(ref val) => fidl::encoding::encode_in_envelope::<i16, D>(
26801                    <i16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26802                    encoder,
26803                    offset + 8,
26804                    _depth,
26805                ),
26806                ConfigSingleValue::Int32(ref val) => fidl::encoding::encode_in_envelope::<i32, D>(
26807                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26808                    encoder,
26809                    offset + 8,
26810                    _depth,
26811                ),
26812                ConfigSingleValue::Int64(ref val) => fidl::encoding::encode_in_envelope::<i64, D>(
26813                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26814                    encoder,
26815                    offset + 8,
26816                    _depth,
26817                ),
26818                ConfigSingleValue::String(ref val) => fidl::encoding::encode_in_envelope::<
26819                    fidl::encoding::UnboundedString,
26820                    D,
26821                >(
26822                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
26823                        val,
26824                    ),
26825                    encoder,
26826                    offset + 8,
26827                    _depth,
26828                ),
26829                ConfigSingleValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26830            }
26831        }
26832    }
26833
26834    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigSingleValue {
26835        #[inline(always)]
26836        fn new_empty() -> Self {
26837            Self::__SourceBreaking { unknown_ordinal: 0 }
26838        }
26839
26840        #[inline]
26841        unsafe fn decode(
26842            &mut self,
26843            decoder: &mut fidl::encoding::Decoder<'_, D>,
26844            offset: usize,
26845            mut depth: fidl::encoding::Depth,
26846        ) -> fidl::Result<()> {
26847            decoder.debug_check_bounds::<Self>(offset);
26848            #[allow(unused_variables)]
26849            let next_out_of_line = decoder.next_out_of_line();
26850            let handles_before = decoder.remaining_handles();
26851            let (ordinal, inlined, num_bytes, num_handles) =
26852                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26853
26854            let member_inline_size = match ordinal {
26855                1 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26856                2 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26857                3 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26858                4 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26859                5 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26860                6 => <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26861                7 => <i16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26862                8 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26863                9 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26864                10 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
26865                    decoder.context,
26866                ),
26867                0 => return Err(fidl::Error::UnknownUnionTag),
26868                _ => num_bytes as usize,
26869            };
26870
26871            if inlined != (member_inline_size <= 4) {
26872                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26873            }
26874            let _inner_offset;
26875            if inlined {
26876                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26877                _inner_offset = offset + 8;
26878            } else {
26879                depth.increment()?;
26880                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26881            }
26882            match ordinal {
26883                1 => {
26884                    #[allow(irrefutable_let_patterns)]
26885                    if let ConfigSingleValue::Bool(_) = self {
26886                        // Do nothing, read the value into the object
26887                    } else {
26888                        // Initialize `self` to the right variant
26889                        *self = ConfigSingleValue::Bool(fidl::new_empty!(bool, D));
26890                    }
26891                    #[allow(irrefutable_let_patterns)]
26892                    if let ConfigSingleValue::Bool(ref mut val) = self {
26893                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
26894                    } else {
26895                        unreachable!()
26896                    }
26897                }
26898                2 => {
26899                    #[allow(irrefutable_let_patterns)]
26900                    if let ConfigSingleValue::Uint8(_) = self {
26901                        // Do nothing, read the value into the object
26902                    } else {
26903                        // Initialize `self` to the right variant
26904                        *self = ConfigSingleValue::Uint8(fidl::new_empty!(u8, D));
26905                    }
26906                    #[allow(irrefutable_let_patterns)]
26907                    if let ConfigSingleValue::Uint8(ref mut val) = self {
26908                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
26909                    } else {
26910                        unreachable!()
26911                    }
26912                }
26913                3 => {
26914                    #[allow(irrefutable_let_patterns)]
26915                    if let ConfigSingleValue::Uint16(_) = self {
26916                        // Do nothing, read the value into the object
26917                    } else {
26918                        // Initialize `self` to the right variant
26919                        *self = ConfigSingleValue::Uint16(fidl::new_empty!(u16, D));
26920                    }
26921                    #[allow(irrefutable_let_patterns)]
26922                    if let ConfigSingleValue::Uint16(ref mut val) = self {
26923                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
26924                    } else {
26925                        unreachable!()
26926                    }
26927                }
26928                4 => {
26929                    #[allow(irrefutable_let_patterns)]
26930                    if let ConfigSingleValue::Uint32(_) = self {
26931                        // Do nothing, read the value into the object
26932                    } else {
26933                        // Initialize `self` to the right variant
26934                        *self = ConfigSingleValue::Uint32(fidl::new_empty!(u32, D));
26935                    }
26936                    #[allow(irrefutable_let_patterns)]
26937                    if let ConfigSingleValue::Uint32(ref mut val) = self {
26938                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
26939                    } else {
26940                        unreachable!()
26941                    }
26942                }
26943                5 => {
26944                    #[allow(irrefutable_let_patterns)]
26945                    if let ConfigSingleValue::Uint64(_) = self {
26946                        // Do nothing, read the value into the object
26947                    } else {
26948                        // Initialize `self` to the right variant
26949                        *self = ConfigSingleValue::Uint64(fidl::new_empty!(u64, D));
26950                    }
26951                    #[allow(irrefutable_let_patterns)]
26952                    if let ConfigSingleValue::Uint64(ref mut val) = self {
26953                        fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
26954                    } else {
26955                        unreachable!()
26956                    }
26957                }
26958                6 => {
26959                    #[allow(irrefutable_let_patterns)]
26960                    if let ConfigSingleValue::Int8(_) = self {
26961                        // Do nothing, read the value into the object
26962                    } else {
26963                        // Initialize `self` to the right variant
26964                        *self = ConfigSingleValue::Int8(fidl::new_empty!(i8, D));
26965                    }
26966                    #[allow(irrefutable_let_patterns)]
26967                    if let ConfigSingleValue::Int8(ref mut val) = self {
26968                        fidl::decode!(i8, D, val, decoder, _inner_offset, depth)?;
26969                    } else {
26970                        unreachable!()
26971                    }
26972                }
26973                7 => {
26974                    #[allow(irrefutable_let_patterns)]
26975                    if let ConfigSingleValue::Int16(_) = self {
26976                        // Do nothing, read the value into the object
26977                    } else {
26978                        // Initialize `self` to the right variant
26979                        *self = ConfigSingleValue::Int16(fidl::new_empty!(i16, D));
26980                    }
26981                    #[allow(irrefutable_let_patterns)]
26982                    if let ConfigSingleValue::Int16(ref mut val) = self {
26983                        fidl::decode!(i16, D, val, decoder, _inner_offset, depth)?;
26984                    } else {
26985                        unreachable!()
26986                    }
26987                }
26988                8 => {
26989                    #[allow(irrefutable_let_patterns)]
26990                    if let ConfigSingleValue::Int32(_) = self {
26991                        // Do nothing, read the value into the object
26992                    } else {
26993                        // Initialize `self` to the right variant
26994                        *self = ConfigSingleValue::Int32(fidl::new_empty!(i32, D));
26995                    }
26996                    #[allow(irrefutable_let_patterns)]
26997                    if let ConfigSingleValue::Int32(ref mut val) = self {
26998                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
26999                    } else {
27000                        unreachable!()
27001                    }
27002                }
27003                9 => {
27004                    #[allow(irrefutable_let_patterns)]
27005                    if let ConfigSingleValue::Int64(_) = self {
27006                        // Do nothing, read the value into the object
27007                    } else {
27008                        // Initialize `self` to the right variant
27009                        *self = ConfigSingleValue::Int64(fidl::new_empty!(i64, D));
27010                    }
27011                    #[allow(irrefutable_let_patterns)]
27012                    if let ConfigSingleValue::Int64(ref mut val) = self {
27013                        fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
27014                    } else {
27015                        unreachable!()
27016                    }
27017                }
27018                10 => {
27019                    #[allow(irrefutable_let_patterns)]
27020                    if let ConfigSingleValue::String(_) = self {
27021                        // Do nothing, read the value into the object
27022                    } else {
27023                        // Initialize `self` to the right variant
27024                        *self = ConfigSingleValue::String(fidl::new_empty!(
27025                            fidl::encoding::UnboundedString,
27026                            D
27027                        ));
27028                    }
27029                    #[allow(irrefutable_let_patterns)]
27030                    if let ConfigSingleValue::String(ref mut val) = self {
27031                        fidl::decode!(
27032                            fidl::encoding::UnboundedString,
27033                            D,
27034                            val,
27035                            decoder,
27036                            _inner_offset,
27037                            depth
27038                        )?;
27039                    } else {
27040                        unreachable!()
27041                    }
27042                }
27043                #[allow(deprecated)]
27044                ordinal => {
27045                    for _ in 0..num_handles {
27046                        decoder.drop_next_handle()?;
27047                    }
27048                    *self = ConfigSingleValue::__SourceBreaking { unknown_ordinal: ordinal };
27049                }
27050            }
27051            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27052                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27053            }
27054            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27055                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27056            }
27057            Ok(())
27058        }
27059    }
27060
27061    impl fidl::encoding::ValueTypeMarker for ConfigValue {
27062        type Borrowed<'a> = &'a Self;
27063        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27064            value
27065        }
27066    }
27067
27068    unsafe impl fidl::encoding::TypeMarker for ConfigValue {
27069        type Owned = Self;
27070
27071        #[inline(always)]
27072        fn inline_align(_context: fidl::encoding::Context) -> usize {
27073            8
27074        }
27075
27076        #[inline(always)]
27077        fn inline_size(_context: fidl::encoding::Context) -> usize {
27078            16
27079        }
27080    }
27081
27082    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValue, D>
27083        for &ConfigValue
27084    {
27085        #[inline]
27086        unsafe fn encode(
27087            self,
27088            encoder: &mut fidl::encoding::Encoder<'_, D>,
27089            offset: usize,
27090            _depth: fidl::encoding::Depth,
27091        ) -> fidl::Result<()> {
27092            encoder.debug_check_bounds::<ConfigValue>(offset);
27093            encoder.write_num::<u64>(self.ordinal(), offset);
27094            match self {
27095                ConfigValue::Single(ref val) => {
27096                    fidl::encoding::encode_in_envelope::<ConfigSingleValue, D>(
27097                        <ConfigSingleValue as fidl::encoding::ValueTypeMarker>::borrow(val),
27098                        encoder,
27099                        offset + 8,
27100                        _depth,
27101                    )
27102                }
27103                ConfigValue::Vector(ref val) => {
27104                    fidl::encoding::encode_in_envelope::<ConfigVectorValue, D>(
27105                        <ConfigVectorValue as fidl::encoding::ValueTypeMarker>::borrow(val),
27106                        encoder,
27107                        offset + 8,
27108                        _depth,
27109                    )
27110                }
27111                ConfigValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27112            }
27113        }
27114    }
27115
27116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValue {
27117        #[inline(always)]
27118        fn new_empty() -> Self {
27119            Self::__SourceBreaking { unknown_ordinal: 0 }
27120        }
27121
27122        #[inline]
27123        unsafe fn decode(
27124            &mut self,
27125            decoder: &mut fidl::encoding::Decoder<'_, D>,
27126            offset: usize,
27127            mut depth: fidl::encoding::Depth,
27128        ) -> fidl::Result<()> {
27129            decoder.debug_check_bounds::<Self>(offset);
27130            #[allow(unused_variables)]
27131            let next_out_of_line = decoder.next_out_of_line();
27132            let handles_before = decoder.remaining_handles();
27133            let (ordinal, inlined, num_bytes, num_handles) =
27134                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27135
27136            let member_inline_size = match ordinal {
27137                1 => {
27138                    <ConfigSingleValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
27139                }
27140                2 => {
27141                    <ConfigVectorValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
27142                }
27143                0 => return Err(fidl::Error::UnknownUnionTag),
27144                _ => num_bytes as usize,
27145            };
27146
27147            if inlined != (member_inline_size <= 4) {
27148                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27149            }
27150            let _inner_offset;
27151            if inlined {
27152                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27153                _inner_offset = offset + 8;
27154            } else {
27155                depth.increment()?;
27156                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27157            }
27158            match ordinal {
27159                1 => {
27160                    #[allow(irrefutable_let_patterns)]
27161                    if let ConfigValue::Single(_) = self {
27162                        // Do nothing, read the value into the object
27163                    } else {
27164                        // Initialize `self` to the right variant
27165                        *self = ConfigValue::Single(fidl::new_empty!(ConfigSingleValue, D));
27166                    }
27167                    #[allow(irrefutable_let_patterns)]
27168                    if let ConfigValue::Single(ref mut val) = self {
27169                        fidl::decode!(ConfigSingleValue, D, val, decoder, _inner_offset, depth)?;
27170                    } else {
27171                        unreachable!()
27172                    }
27173                }
27174                2 => {
27175                    #[allow(irrefutable_let_patterns)]
27176                    if let ConfigValue::Vector(_) = self {
27177                        // Do nothing, read the value into the object
27178                    } else {
27179                        // Initialize `self` to the right variant
27180                        *self = ConfigValue::Vector(fidl::new_empty!(ConfigVectorValue, D));
27181                    }
27182                    #[allow(irrefutable_let_patterns)]
27183                    if let ConfigValue::Vector(ref mut val) = self {
27184                        fidl::decode!(ConfigVectorValue, D, val, decoder, _inner_offset, depth)?;
27185                    } else {
27186                        unreachable!()
27187                    }
27188                }
27189                #[allow(deprecated)]
27190                ordinal => {
27191                    for _ in 0..num_handles {
27192                        decoder.drop_next_handle()?;
27193                    }
27194                    *self = ConfigValue::__SourceBreaking { unknown_ordinal: ordinal };
27195                }
27196            }
27197            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27198                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27199            }
27200            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27201                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27202            }
27203            Ok(())
27204        }
27205    }
27206
27207    impl fidl::encoding::ValueTypeMarker for ConfigValueSource {
27208        type Borrowed<'a> = &'a Self;
27209        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27210            value
27211        }
27212    }
27213
27214    unsafe impl fidl::encoding::TypeMarker for ConfigValueSource {
27215        type Owned = Self;
27216
27217        #[inline(always)]
27218        fn inline_align(_context: fidl::encoding::Context) -> usize {
27219            8
27220        }
27221
27222        #[inline(always)]
27223        fn inline_size(_context: fidl::encoding::Context) -> usize {
27224            16
27225        }
27226    }
27227
27228    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValueSource, D>
27229        for &ConfigValueSource
27230    {
27231        #[inline]
27232        unsafe fn encode(
27233            self,
27234            encoder: &mut fidl::encoding::Encoder<'_, D>,
27235            offset: usize,
27236            _depth: fidl::encoding::Depth,
27237        ) -> fidl::Result<()> {
27238            encoder.debug_check_bounds::<ConfigValueSource>(offset);
27239            encoder.write_num::<u64>(self.ordinal(), offset);
27240            match self {
27241                ConfigValueSource::PackagePath(ref val) => fidl::encoding::encode_in_envelope::<
27242                    fidl::encoding::UnboundedString,
27243                    D,
27244                >(
27245                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
27246                        val,
27247                    ),
27248                    encoder,
27249                    offset + 8,
27250                    _depth,
27251                ),
27252                ConfigValueSource::Capabilities(ref val) => {
27253                    fidl::encoding::encode_in_envelope::<ConfigSourceCapabilities, D>(
27254                        <ConfigSourceCapabilities as fidl::encoding::ValueTypeMarker>::borrow(val),
27255                        encoder,
27256                        offset + 8,
27257                        _depth,
27258                    )
27259                }
27260                ConfigValueSource::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27261            }
27262        }
27263    }
27264
27265    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValueSource {
27266        #[inline(always)]
27267        fn new_empty() -> Self {
27268            Self::__SourceBreaking { unknown_ordinal: 0 }
27269        }
27270
27271        #[inline]
27272        unsafe fn decode(
27273            &mut self,
27274            decoder: &mut fidl::encoding::Decoder<'_, D>,
27275            offset: usize,
27276            mut depth: fidl::encoding::Depth,
27277        ) -> fidl::Result<()> {
27278            decoder.debug_check_bounds::<Self>(offset);
27279            #[allow(unused_variables)]
27280            let next_out_of_line = decoder.next_out_of_line();
27281            let handles_before = decoder.remaining_handles();
27282            let (ordinal, inlined, num_bytes, num_handles) =
27283                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27284
27285            let member_inline_size = match ordinal {
27286                1 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
27287                    decoder.context,
27288                ),
27289                2 => <ConfigSourceCapabilities as fidl::encoding::TypeMarker>::inline_size(
27290                    decoder.context,
27291                ),
27292                0 => return Err(fidl::Error::UnknownUnionTag),
27293                _ => num_bytes as usize,
27294            };
27295
27296            if inlined != (member_inline_size <= 4) {
27297                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27298            }
27299            let _inner_offset;
27300            if inlined {
27301                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27302                _inner_offset = offset + 8;
27303            } else {
27304                depth.increment()?;
27305                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27306            }
27307            match ordinal {
27308                1 => {
27309                    #[allow(irrefutable_let_patterns)]
27310                    if let ConfigValueSource::PackagePath(_) = self {
27311                        // Do nothing, read the value into the object
27312                    } else {
27313                        // Initialize `self` to the right variant
27314                        *self = ConfigValueSource::PackagePath(fidl::new_empty!(
27315                            fidl::encoding::UnboundedString,
27316                            D
27317                        ));
27318                    }
27319                    #[allow(irrefutable_let_patterns)]
27320                    if let ConfigValueSource::PackagePath(ref mut val) = self {
27321                        fidl::decode!(
27322                            fidl::encoding::UnboundedString,
27323                            D,
27324                            val,
27325                            decoder,
27326                            _inner_offset,
27327                            depth
27328                        )?;
27329                    } else {
27330                        unreachable!()
27331                    }
27332                }
27333                2 => {
27334                    #[allow(irrefutable_let_patterns)]
27335                    if let ConfigValueSource::Capabilities(_) = self {
27336                        // Do nothing, read the value into the object
27337                    } else {
27338                        // Initialize `self` to the right variant
27339                        *self = ConfigValueSource::Capabilities(fidl::new_empty!(
27340                            ConfigSourceCapabilities,
27341                            D
27342                        ));
27343                    }
27344                    #[allow(irrefutable_let_patterns)]
27345                    if let ConfigValueSource::Capabilities(ref mut val) = self {
27346                        fidl::decode!(
27347                            ConfigSourceCapabilities,
27348                            D,
27349                            val,
27350                            decoder,
27351                            _inner_offset,
27352                            depth
27353                        )?;
27354                    } else {
27355                        unreachable!()
27356                    }
27357                }
27358                #[allow(deprecated)]
27359                ordinal => {
27360                    for _ in 0..num_handles {
27361                        decoder.drop_next_handle()?;
27362                    }
27363                    *self = ConfigValueSource::__SourceBreaking { unknown_ordinal: ordinal };
27364                }
27365            }
27366            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27367                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27368            }
27369            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27370                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27371            }
27372            Ok(())
27373        }
27374    }
27375
27376    impl fidl::encoding::ValueTypeMarker for ConfigVectorValue {
27377        type Borrowed<'a> = &'a Self;
27378        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27379            value
27380        }
27381    }
27382
27383    unsafe impl fidl::encoding::TypeMarker for ConfigVectorValue {
27384        type Owned = Self;
27385
27386        #[inline(always)]
27387        fn inline_align(_context: fidl::encoding::Context) -> usize {
27388            8
27389        }
27390
27391        #[inline(always)]
27392        fn inline_size(_context: fidl::encoding::Context) -> usize {
27393            16
27394        }
27395    }
27396
27397    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigVectorValue, D>
27398        for &ConfigVectorValue
27399    {
27400        #[inline]
27401        unsafe fn encode(
27402            self,
27403            encoder: &mut fidl::encoding::Encoder<'_, D>,
27404            offset: usize,
27405            _depth: fidl::encoding::Depth,
27406        ) -> fidl::Result<()> {
27407            encoder.debug_check_bounds::<ConfigVectorValue>(offset);
27408            encoder.write_num::<u64>(self.ordinal(), offset);
27409            match self {
27410            ConfigVectorValue::BoolVector(ref val) => {
27411                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<bool>, D>(
27412                    <fidl::encoding::UnboundedVector<bool> as fidl::encoding::ValueTypeMarker>::borrow(val),
27413                    encoder, offset + 8, _depth
27414                )
27415            }
27416            ConfigVectorValue::Uint8Vector(ref val) => {
27417                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
27418                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27419                    encoder, offset + 8, _depth
27420                )
27421            }
27422            ConfigVectorValue::Uint16Vector(ref val) => {
27423                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u16>, D>(
27424                    <fidl::encoding::UnboundedVector<u16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27425                    encoder, offset + 8, _depth
27426                )
27427            }
27428            ConfigVectorValue::Uint32Vector(ref val) => {
27429                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u32>, D>(
27430                    <fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27431                    encoder, offset + 8, _depth
27432                )
27433            }
27434            ConfigVectorValue::Uint64Vector(ref val) => {
27435                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u64>, D>(
27436                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27437                    encoder, offset + 8, _depth
27438                )
27439            }
27440            ConfigVectorValue::Int8Vector(ref val) => {
27441                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i8>, D>(
27442                    <fidl::encoding::UnboundedVector<i8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27443                    encoder, offset + 8, _depth
27444                )
27445            }
27446            ConfigVectorValue::Int16Vector(ref val) => {
27447                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i16>, D>(
27448                    <fidl::encoding::UnboundedVector<i16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27449                    encoder, offset + 8, _depth
27450                )
27451            }
27452            ConfigVectorValue::Int32Vector(ref val) => {
27453                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i32>, D>(
27454                    <fidl::encoding::UnboundedVector<i32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27455                    encoder, offset + 8, _depth
27456                )
27457            }
27458            ConfigVectorValue::Int64Vector(ref val) => {
27459                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i64>, D>(
27460                    <fidl::encoding::UnboundedVector<i64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27461                    encoder, offset + 8, _depth
27462                )
27463            }
27464            ConfigVectorValue::StringVector(ref val) => {
27465                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
27466                    <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow(val),
27467                    encoder, offset + 8, _depth
27468                )
27469            }
27470            ConfigVectorValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27471        }
27472        }
27473    }
27474
27475    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigVectorValue {
27476        #[inline(always)]
27477        fn new_empty() -> Self {
27478            Self::__SourceBreaking { unknown_ordinal: 0 }
27479        }
27480
27481        #[inline]
27482        unsafe fn decode(
27483            &mut self,
27484            decoder: &mut fidl::encoding::Decoder<'_, D>,
27485            offset: usize,
27486            mut depth: fidl::encoding::Depth,
27487        ) -> fidl::Result<()> {
27488            decoder.debug_check_bounds::<Self>(offset);
27489            #[allow(unused_variables)]
27490            let next_out_of_line = decoder.next_out_of_line();
27491            let handles_before = decoder.remaining_handles();
27492            let (ordinal, inlined, num_bytes, num_handles) =
27493                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27494
27495            let member_inline_size = match ordinal {
27496            1 => <fidl::encoding::UnboundedVector<bool> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27497            2 => <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27498            3 => <fidl::encoding::UnboundedVector<u16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27499            4 => <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27500            5 => <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27501            6 => <fidl::encoding::UnboundedVector<i8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27502            7 => <fidl::encoding::UnboundedVector<i16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27503            8 => <fidl::encoding::UnboundedVector<i32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27504            9 => <fidl::encoding::UnboundedVector<i64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27505            10 => <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27506            0 => return Err(fidl::Error::UnknownUnionTag),
27507            _ => num_bytes as usize,
27508        };
27509
27510            if inlined != (member_inline_size <= 4) {
27511                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27512            }
27513            let _inner_offset;
27514            if inlined {
27515                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27516                _inner_offset = offset + 8;
27517            } else {
27518                depth.increment()?;
27519                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27520            }
27521            match ordinal {
27522                1 => {
27523                    #[allow(irrefutable_let_patterns)]
27524                    if let ConfigVectorValue::BoolVector(_) = self {
27525                        // Do nothing, read the value into the object
27526                    } else {
27527                        // Initialize `self` to the right variant
27528                        *self = ConfigVectorValue::BoolVector(fidl::new_empty!(
27529                            fidl::encoding::UnboundedVector<bool>,
27530                            D
27531                        ));
27532                    }
27533                    #[allow(irrefutable_let_patterns)]
27534                    if let ConfigVectorValue::BoolVector(ref mut val) = self {
27535                        fidl::decode!(
27536                            fidl::encoding::UnboundedVector<bool>,
27537                            D,
27538                            val,
27539                            decoder,
27540                            _inner_offset,
27541                            depth
27542                        )?;
27543                    } else {
27544                        unreachable!()
27545                    }
27546                }
27547                2 => {
27548                    #[allow(irrefutable_let_patterns)]
27549                    if let ConfigVectorValue::Uint8Vector(_) = self {
27550                        // Do nothing, read the value into the object
27551                    } else {
27552                        // Initialize `self` to the right variant
27553                        *self = ConfigVectorValue::Uint8Vector(fidl::new_empty!(
27554                            fidl::encoding::UnboundedVector<u8>,
27555                            D
27556                        ));
27557                    }
27558                    #[allow(irrefutable_let_patterns)]
27559                    if let ConfigVectorValue::Uint8Vector(ref mut val) = self {
27560                        fidl::decode!(
27561                            fidl::encoding::UnboundedVector<u8>,
27562                            D,
27563                            val,
27564                            decoder,
27565                            _inner_offset,
27566                            depth
27567                        )?;
27568                    } else {
27569                        unreachable!()
27570                    }
27571                }
27572                3 => {
27573                    #[allow(irrefutable_let_patterns)]
27574                    if let ConfigVectorValue::Uint16Vector(_) = self {
27575                        // Do nothing, read the value into the object
27576                    } else {
27577                        // Initialize `self` to the right variant
27578                        *self = ConfigVectorValue::Uint16Vector(fidl::new_empty!(
27579                            fidl::encoding::UnboundedVector<u16>,
27580                            D
27581                        ));
27582                    }
27583                    #[allow(irrefutable_let_patterns)]
27584                    if let ConfigVectorValue::Uint16Vector(ref mut val) = self {
27585                        fidl::decode!(
27586                            fidl::encoding::UnboundedVector<u16>,
27587                            D,
27588                            val,
27589                            decoder,
27590                            _inner_offset,
27591                            depth
27592                        )?;
27593                    } else {
27594                        unreachable!()
27595                    }
27596                }
27597                4 => {
27598                    #[allow(irrefutable_let_patterns)]
27599                    if let ConfigVectorValue::Uint32Vector(_) = self {
27600                        // Do nothing, read the value into the object
27601                    } else {
27602                        // Initialize `self` to the right variant
27603                        *self = ConfigVectorValue::Uint32Vector(fidl::new_empty!(
27604                            fidl::encoding::UnboundedVector<u32>,
27605                            D
27606                        ));
27607                    }
27608                    #[allow(irrefutable_let_patterns)]
27609                    if let ConfigVectorValue::Uint32Vector(ref mut val) = self {
27610                        fidl::decode!(
27611                            fidl::encoding::UnboundedVector<u32>,
27612                            D,
27613                            val,
27614                            decoder,
27615                            _inner_offset,
27616                            depth
27617                        )?;
27618                    } else {
27619                        unreachable!()
27620                    }
27621                }
27622                5 => {
27623                    #[allow(irrefutable_let_patterns)]
27624                    if let ConfigVectorValue::Uint64Vector(_) = self {
27625                        // Do nothing, read the value into the object
27626                    } else {
27627                        // Initialize `self` to the right variant
27628                        *self = ConfigVectorValue::Uint64Vector(fidl::new_empty!(
27629                            fidl::encoding::UnboundedVector<u64>,
27630                            D
27631                        ));
27632                    }
27633                    #[allow(irrefutable_let_patterns)]
27634                    if let ConfigVectorValue::Uint64Vector(ref mut val) = self {
27635                        fidl::decode!(
27636                            fidl::encoding::UnboundedVector<u64>,
27637                            D,
27638                            val,
27639                            decoder,
27640                            _inner_offset,
27641                            depth
27642                        )?;
27643                    } else {
27644                        unreachable!()
27645                    }
27646                }
27647                6 => {
27648                    #[allow(irrefutable_let_patterns)]
27649                    if let ConfigVectorValue::Int8Vector(_) = self {
27650                        // Do nothing, read the value into the object
27651                    } else {
27652                        // Initialize `self` to the right variant
27653                        *self = ConfigVectorValue::Int8Vector(fidl::new_empty!(
27654                            fidl::encoding::UnboundedVector<i8>,
27655                            D
27656                        ));
27657                    }
27658                    #[allow(irrefutable_let_patterns)]
27659                    if let ConfigVectorValue::Int8Vector(ref mut val) = self {
27660                        fidl::decode!(
27661                            fidl::encoding::UnboundedVector<i8>,
27662                            D,
27663                            val,
27664                            decoder,
27665                            _inner_offset,
27666                            depth
27667                        )?;
27668                    } else {
27669                        unreachable!()
27670                    }
27671                }
27672                7 => {
27673                    #[allow(irrefutable_let_patterns)]
27674                    if let ConfigVectorValue::Int16Vector(_) = self {
27675                        // Do nothing, read the value into the object
27676                    } else {
27677                        // Initialize `self` to the right variant
27678                        *self = ConfigVectorValue::Int16Vector(fidl::new_empty!(
27679                            fidl::encoding::UnboundedVector<i16>,
27680                            D
27681                        ));
27682                    }
27683                    #[allow(irrefutable_let_patterns)]
27684                    if let ConfigVectorValue::Int16Vector(ref mut val) = self {
27685                        fidl::decode!(
27686                            fidl::encoding::UnboundedVector<i16>,
27687                            D,
27688                            val,
27689                            decoder,
27690                            _inner_offset,
27691                            depth
27692                        )?;
27693                    } else {
27694                        unreachable!()
27695                    }
27696                }
27697                8 => {
27698                    #[allow(irrefutable_let_patterns)]
27699                    if let ConfigVectorValue::Int32Vector(_) = self {
27700                        // Do nothing, read the value into the object
27701                    } else {
27702                        // Initialize `self` to the right variant
27703                        *self = ConfigVectorValue::Int32Vector(fidl::new_empty!(
27704                            fidl::encoding::UnboundedVector<i32>,
27705                            D
27706                        ));
27707                    }
27708                    #[allow(irrefutable_let_patterns)]
27709                    if let ConfigVectorValue::Int32Vector(ref mut val) = self {
27710                        fidl::decode!(
27711                            fidl::encoding::UnboundedVector<i32>,
27712                            D,
27713                            val,
27714                            decoder,
27715                            _inner_offset,
27716                            depth
27717                        )?;
27718                    } else {
27719                        unreachable!()
27720                    }
27721                }
27722                9 => {
27723                    #[allow(irrefutable_let_patterns)]
27724                    if let ConfigVectorValue::Int64Vector(_) = self {
27725                        // Do nothing, read the value into the object
27726                    } else {
27727                        // Initialize `self` to the right variant
27728                        *self = ConfigVectorValue::Int64Vector(fidl::new_empty!(
27729                            fidl::encoding::UnboundedVector<i64>,
27730                            D
27731                        ));
27732                    }
27733                    #[allow(irrefutable_let_patterns)]
27734                    if let ConfigVectorValue::Int64Vector(ref mut val) = self {
27735                        fidl::decode!(
27736                            fidl::encoding::UnboundedVector<i64>,
27737                            D,
27738                            val,
27739                            decoder,
27740                            _inner_offset,
27741                            depth
27742                        )?;
27743                    } else {
27744                        unreachable!()
27745                    }
27746                }
27747                10 => {
27748                    #[allow(irrefutable_let_patterns)]
27749                    if let ConfigVectorValue::StringVector(_) = self {
27750                        // Do nothing, read the value into the object
27751                    } else {
27752                        // Initialize `self` to the right variant
27753                        *self = ConfigVectorValue::StringVector(fidl::new_empty!(
27754                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27755                            D
27756                        ));
27757                    }
27758                    #[allow(irrefutable_let_patterns)]
27759                    if let ConfigVectorValue::StringVector(ref mut val) = self {
27760                        fidl::decode!(
27761                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27762                            D,
27763                            val,
27764                            decoder,
27765                            _inner_offset,
27766                            depth
27767                        )?;
27768                    } else {
27769                        unreachable!()
27770                    }
27771                }
27772                #[allow(deprecated)]
27773                ordinal => {
27774                    for _ in 0..num_handles {
27775                        decoder.drop_next_handle()?;
27776                    }
27777                    *self = ConfigVectorValue::__SourceBreaking { unknown_ordinal: ordinal };
27778                }
27779            }
27780            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27781                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27782            }
27783            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27784                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27785            }
27786            Ok(())
27787        }
27788    }
27789
27790    impl fidl::encoding::ValueTypeMarker for DebugRegistration {
27791        type Borrowed<'a> = &'a Self;
27792        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27793            value
27794        }
27795    }
27796
27797    unsafe impl fidl::encoding::TypeMarker for DebugRegistration {
27798        type Owned = Self;
27799
27800        #[inline(always)]
27801        fn inline_align(_context: fidl::encoding::Context) -> usize {
27802            8
27803        }
27804
27805        #[inline(always)]
27806        fn inline_size(_context: fidl::encoding::Context) -> usize {
27807            16
27808        }
27809    }
27810
27811    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugRegistration, D>
27812        for &DebugRegistration
27813    {
27814        #[inline]
27815        unsafe fn encode(
27816            self,
27817            encoder: &mut fidl::encoding::Encoder<'_, D>,
27818            offset: usize,
27819            _depth: fidl::encoding::Depth,
27820        ) -> fidl::Result<()> {
27821            encoder.debug_check_bounds::<DebugRegistration>(offset);
27822            encoder.write_num::<u64>(self.ordinal(), offset);
27823            match self {
27824                DebugRegistration::Protocol(ref val) => {
27825                    fidl::encoding::encode_in_envelope::<DebugProtocolRegistration, D>(
27826                        <DebugProtocolRegistration as fidl::encoding::ValueTypeMarker>::borrow(val),
27827                        encoder,
27828                        offset + 8,
27829                        _depth,
27830                    )
27831                }
27832                DebugRegistration::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27833            }
27834        }
27835    }
27836
27837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugRegistration {
27838        #[inline(always)]
27839        fn new_empty() -> Self {
27840            Self::__SourceBreaking { unknown_ordinal: 0 }
27841        }
27842
27843        #[inline]
27844        unsafe fn decode(
27845            &mut self,
27846            decoder: &mut fidl::encoding::Decoder<'_, D>,
27847            offset: usize,
27848            mut depth: fidl::encoding::Depth,
27849        ) -> fidl::Result<()> {
27850            decoder.debug_check_bounds::<Self>(offset);
27851            #[allow(unused_variables)]
27852            let next_out_of_line = decoder.next_out_of_line();
27853            let handles_before = decoder.remaining_handles();
27854            let (ordinal, inlined, num_bytes, num_handles) =
27855                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27856
27857            let member_inline_size = match ordinal {
27858                1 => <DebugProtocolRegistration as fidl::encoding::TypeMarker>::inline_size(
27859                    decoder.context,
27860                ),
27861                0 => return Err(fidl::Error::UnknownUnionTag),
27862                _ => num_bytes as usize,
27863            };
27864
27865            if inlined != (member_inline_size <= 4) {
27866                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27867            }
27868            let _inner_offset;
27869            if inlined {
27870                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27871                _inner_offset = offset + 8;
27872            } else {
27873                depth.increment()?;
27874                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27875            }
27876            match ordinal {
27877                1 => {
27878                    #[allow(irrefutable_let_patterns)]
27879                    if let DebugRegistration::Protocol(_) = self {
27880                        // Do nothing, read the value into the object
27881                    } else {
27882                        // Initialize `self` to the right variant
27883                        *self = DebugRegistration::Protocol(fidl::new_empty!(
27884                            DebugProtocolRegistration,
27885                            D
27886                        ));
27887                    }
27888                    #[allow(irrefutable_let_patterns)]
27889                    if let DebugRegistration::Protocol(ref mut val) = self {
27890                        fidl::decode!(
27891                            DebugProtocolRegistration,
27892                            D,
27893                            val,
27894                            decoder,
27895                            _inner_offset,
27896                            depth
27897                        )?;
27898                    } else {
27899                        unreachable!()
27900                    }
27901                }
27902                #[allow(deprecated)]
27903                ordinal => {
27904                    for _ in 0..num_handles {
27905                        decoder.drop_next_handle()?;
27906                    }
27907                    *self = DebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
27908                }
27909            }
27910            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27911                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27912            }
27913            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27914                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27915            }
27916            Ok(())
27917        }
27918    }
27919
27920    impl fidl::encoding::ValueTypeMarker for Expose {
27921        type Borrowed<'a> = &'a Self;
27922        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27923            value
27924        }
27925    }
27926
27927    unsafe impl fidl::encoding::TypeMarker for Expose {
27928        type Owned = Self;
27929
27930        #[inline(always)]
27931        fn inline_align(_context: fidl::encoding::Context) -> usize {
27932            8
27933        }
27934
27935        #[inline(always)]
27936        fn inline_size(_context: fidl::encoding::Context) -> usize {
27937            16
27938        }
27939    }
27940
27941    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Expose, D> for &Expose {
27942        #[inline]
27943        unsafe fn encode(
27944            self,
27945            encoder: &mut fidl::encoding::Encoder<'_, D>,
27946            offset: usize,
27947            _depth: fidl::encoding::Depth,
27948        ) -> fidl::Result<()> {
27949            encoder.debug_check_bounds::<Expose>(offset);
27950            encoder.write_num::<u64>(self.ordinal(), offset);
27951            match self {
27952                Expose::Service(ref val) => fidl::encoding::encode_in_envelope::<ExposeService, D>(
27953                    <ExposeService as fidl::encoding::ValueTypeMarker>::borrow(val),
27954                    encoder,
27955                    offset + 8,
27956                    _depth,
27957                ),
27958                Expose::Protocol(ref val) => {
27959                    fidl::encoding::encode_in_envelope::<ExposeProtocol, D>(
27960                        <ExposeProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
27961                        encoder,
27962                        offset + 8,
27963                        _depth,
27964                    )
27965                }
27966                Expose::Directory(ref val) => {
27967                    fidl::encoding::encode_in_envelope::<ExposeDirectory, D>(
27968                        <ExposeDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
27969                        encoder,
27970                        offset + 8,
27971                        _depth,
27972                    )
27973                }
27974                Expose::Runner(ref val) => fidl::encoding::encode_in_envelope::<ExposeRunner, D>(
27975                    <ExposeRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
27976                    encoder,
27977                    offset + 8,
27978                    _depth,
27979                ),
27980                Expose::Resolver(ref val) => {
27981                    fidl::encoding::encode_in_envelope::<ExposeResolver, D>(
27982                        <ExposeResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
27983                        encoder,
27984                        offset + 8,
27985                        _depth,
27986                    )
27987                }
27988                Expose::Dictionary(ref val) => {
27989                    fidl::encoding::encode_in_envelope::<ExposeDictionary, D>(
27990                        <ExposeDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
27991                        encoder,
27992                        offset + 8,
27993                        _depth,
27994                    )
27995                }
27996                Expose::Config(ref val) => {
27997                    fidl::encoding::encode_in_envelope::<ExposeConfiguration, D>(
27998                        <ExposeConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
27999                        encoder,
28000                        offset + 8,
28001                        _depth,
28002                    )
28003                }
28004                Expose::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28005            }
28006        }
28007    }
28008
28009    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Expose {
28010        #[inline(always)]
28011        fn new_empty() -> Self {
28012            Self::__SourceBreaking { unknown_ordinal: 0 }
28013        }
28014
28015        #[inline]
28016        unsafe fn decode(
28017            &mut self,
28018            decoder: &mut fidl::encoding::Decoder<'_, D>,
28019            offset: usize,
28020            mut depth: fidl::encoding::Depth,
28021        ) -> fidl::Result<()> {
28022            decoder.debug_check_bounds::<Self>(offset);
28023            #[allow(unused_variables)]
28024            let next_out_of_line = decoder.next_out_of_line();
28025            let handles_before = decoder.remaining_handles();
28026            let (ordinal, inlined, num_bytes, num_handles) =
28027                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28028
28029            let member_inline_size = match ordinal {
28030                1 => <ExposeService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28031                2 => <ExposeProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28032                3 => <ExposeDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28033                4 => <ExposeRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28034                5 => <ExposeResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28035                7 => <ExposeDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28036                8 => <ExposeConfiguration as fidl::encoding::TypeMarker>::inline_size(
28037                    decoder.context,
28038                ),
28039                0 => return Err(fidl::Error::UnknownUnionTag),
28040                _ => num_bytes as usize,
28041            };
28042
28043            if inlined != (member_inline_size <= 4) {
28044                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28045            }
28046            let _inner_offset;
28047            if inlined {
28048                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28049                _inner_offset = offset + 8;
28050            } else {
28051                depth.increment()?;
28052                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28053            }
28054            match ordinal {
28055                1 => {
28056                    #[allow(irrefutable_let_patterns)]
28057                    if let Expose::Service(_) = self {
28058                        // Do nothing, read the value into the object
28059                    } else {
28060                        // Initialize `self` to the right variant
28061                        *self = Expose::Service(fidl::new_empty!(ExposeService, D));
28062                    }
28063                    #[allow(irrefutable_let_patterns)]
28064                    if let Expose::Service(ref mut val) = self {
28065                        fidl::decode!(ExposeService, D, val, decoder, _inner_offset, depth)?;
28066                    } else {
28067                        unreachable!()
28068                    }
28069                }
28070                2 => {
28071                    #[allow(irrefutable_let_patterns)]
28072                    if let Expose::Protocol(_) = self {
28073                        // Do nothing, read the value into the object
28074                    } else {
28075                        // Initialize `self` to the right variant
28076                        *self = Expose::Protocol(fidl::new_empty!(ExposeProtocol, D));
28077                    }
28078                    #[allow(irrefutable_let_patterns)]
28079                    if let Expose::Protocol(ref mut val) = self {
28080                        fidl::decode!(ExposeProtocol, D, val, decoder, _inner_offset, depth)?;
28081                    } else {
28082                        unreachable!()
28083                    }
28084                }
28085                3 => {
28086                    #[allow(irrefutable_let_patterns)]
28087                    if let Expose::Directory(_) = self {
28088                        // Do nothing, read the value into the object
28089                    } else {
28090                        // Initialize `self` to the right variant
28091                        *self = Expose::Directory(fidl::new_empty!(ExposeDirectory, D));
28092                    }
28093                    #[allow(irrefutable_let_patterns)]
28094                    if let Expose::Directory(ref mut val) = self {
28095                        fidl::decode!(ExposeDirectory, D, val, decoder, _inner_offset, depth)?;
28096                    } else {
28097                        unreachable!()
28098                    }
28099                }
28100                4 => {
28101                    #[allow(irrefutable_let_patterns)]
28102                    if let Expose::Runner(_) = self {
28103                        // Do nothing, read the value into the object
28104                    } else {
28105                        // Initialize `self` to the right variant
28106                        *self = Expose::Runner(fidl::new_empty!(ExposeRunner, D));
28107                    }
28108                    #[allow(irrefutable_let_patterns)]
28109                    if let Expose::Runner(ref mut val) = self {
28110                        fidl::decode!(ExposeRunner, D, val, decoder, _inner_offset, depth)?;
28111                    } else {
28112                        unreachable!()
28113                    }
28114                }
28115                5 => {
28116                    #[allow(irrefutable_let_patterns)]
28117                    if let Expose::Resolver(_) = self {
28118                        // Do nothing, read the value into the object
28119                    } else {
28120                        // Initialize `self` to the right variant
28121                        *self = Expose::Resolver(fidl::new_empty!(ExposeResolver, D));
28122                    }
28123                    #[allow(irrefutable_let_patterns)]
28124                    if let Expose::Resolver(ref mut val) = self {
28125                        fidl::decode!(ExposeResolver, D, val, decoder, _inner_offset, depth)?;
28126                    } else {
28127                        unreachable!()
28128                    }
28129                }
28130                7 => {
28131                    #[allow(irrefutable_let_patterns)]
28132                    if let Expose::Dictionary(_) = self {
28133                        // Do nothing, read the value into the object
28134                    } else {
28135                        // Initialize `self` to the right variant
28136                        *self = Expose::Dictionary(fidl::new_empty!(ExposeDictionary, D));
28137                    }
28138                    #[allow(irrefutable_let_patterns)]
28139                    if let Expose::Dictionary(ref mut val) = self {
28140                        fidl::decode!(ExposeDictionary, D, val, decoder, _inner_offset, depth)?;
28141                    } else {
28142                        unreachable!()
28143                    }
28144                }
28145                8 => {
28146                    #[allow(irrefutable_let_patterns)]
28147                    if let Expose::Config(_) = self {
28148                        // Do nothing, read the value into the object
28149                    } else {
28150                        // Initialize `self` to the right variant
28151                        *self = Expose::Config(fidl::new_empty!(ExposeConfiguration, D));
28152                    }
28153                    #[allow(irrefutable_let_patterns)]
28154                    if let Expose::Config(ref mut val) = self {
28155                        fidl::decode!(ExposeConfiguration, D, val, decoder, _inner_offset, depth)?;
28156                    } else {
28157                        unreachable!()
28158                    }
28159                }
28160                #[allow(deprecated)]
28161                ordinal => {
28162                    for _ in 0..num_handles {
28163                        decoder.drop_next_handle()?;
28164                    }
28165                    *self = Expose::__SourceBreaking { unknown_ordinal: ordinal };
28166                }
28167            }
28168            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28169                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28170            }
28171            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28172                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28173            }
28174            Ok(())
28175        }
28176    }
28177
28178    impl fidl::encoding::ValueTypeMarker for LayoutConstraint {
28179        type Borrowed<'a> = &'a Self;
28180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28181            value
28182        }
28183    }
28184
28185    unsafe impl fidl::encoding::TypeMarker for LayoutConstraint {
28186        type Owned = Self;
28187
28188        #[inline(always)]
28189        fn inline_align(_context: fidl::encoding::Context) -> usize {
28190            8
28191        }
28192
28193        #[inline(always)]
28194        fn inline_size(_context: fidl::encoding::Context) -> usize {
28195            16
28196        }
28197    }
28198
28199    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutConstraint, D>
28200        for &LayoutConstraint
28201    {
28202        #[inline]
28203        unsafe fn encode(
28204            self,
28205            encoder: &mut fidl::encoding::Encoder<'_, D>,
28206            offset: usize,
28207            _depth: fidl::encoding::Depth,
28208        ) -> fidl::Result<()> {
28209            encoder.debug_check_bounds::<LayoutConstraint>(offset);
28210            encoder.write_num::<u64>(self.ordinal(), offset);
28211            match self {
28212                LayoutConstraint::MaxSize(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
28213                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
28214                    encoder,
28215                    offset + 8,
28216                    _depth,
28217                ),
28218                LayoutConstraint::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28219            }
28220        }
28221    }
28222
28223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutConstraint {
28224        #[inline(always)]
28225        fn new_empty() -> Self {
28226            Self::__SourceBreaking { unknown_ordinal: 0 }
28227        }
28228
28229        #[inline]
28230        unsafe fn decode(
28231            &mut self,
28232            decoder: &mut fidl::encoding::Decoder<'_, D>,
28233            offset: usize,
28234            mut depth: fidl::encoding::Depth,
28235        ) -> fidl::Result<()> {
28236            decoder.debug_check_bounds::<Self>(offset);
28237            #[allow(unused_variables)]
28238            let next_out_of_line = decoder.next_out_of_line();
28239            let handles_before = decoder.remaining_handles();
28240            let (ordinal, inlined, num_bytes, num_handles) =
28241                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28242
28243            let member_inline_size = match ordinal {
28244                1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28245                0 => return Err(fidl::Error::UnknownUnionTag),
28246                _ => num_bytes as usize,
28247            };
28248
28249            if inlined != (member_inline_size <= 4) {
28250                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28251            }
28252            let _inner_offset;
28253            if inlined {
28254                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28255                _inner_offset = offset + 8;
28256            } else {
28257                depth.increment()?;
28258                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28259            }
28260            match ordinal {
28261                1 => {
28262                    #[allow(irrefutable_let_patterns)]
28263                    if let LayoutConstraint::MaxSize(_) = self {
28264                        // Do nothing, read the value into the object
28265                    } else {
28266                        // Initialize `self` to the right variant
28267                        *self = LayoutConstraint::MaxSize(fidl::new_empty!(u32, D));
28268                    }
28269                    #[allow(irrefutable_let_patterns)]
28270                    if let LayoutConstraint::MaxSize(ref mut val) = self {
28271                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
28272                    } else {
28273                        unreachable!()
28274                    }
28275                }
28276                #[allow(deprecated)]
28277                ordinal => {
28278                    for _ in 0..num_handles {
28279                        decoder.drop_next_handle()?;
28280                    }
28281                    *self = LayoutConstraint::__SourceBreaking { unknown_ordinal: ordinal };
28282                }
28283            }
28284            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28285                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28286            }
28287            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28288                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28289            }
28290            Ok(())
28291        }
28292    }
28293
28294    impl fidl::encoding::ValueTypeMarker for LayoutParameter {
28295        type Borrowed<'a> = &'a Self;
28296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28297            value
28298        }
28299    }
28300
28301    unsafe impl fidl::encoding::TypeMarker for LayoutParameter {
28302        type Owned = Self;
28303
28304        #[inline(always)]
28305        fn inline_align(_context: fidl::encoding::Context) -> usize {
28306            8
28307        }
28308
28309        #[inline(always)]
28310        fn inline_size(_context: fidl::encoding::Context) -> usize {
28311            16
28312        }
28313    }
28314
28315    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutParameter, D>
28316        for &LayoutParameter
28317    {
28318        #[inline]
28319        unsafe fn encode(
28320            self,
28321            encoder: &mut fidl::encoding::Encoder<'_, D>,
28322            offset: usize,
28323            _depth: fidl::encoding::Depth,
28324        ) -> fidl::Result<()> {
28325            encoder.debug_check_bounds::<LayoutParameter>(offset);
28326            encoder.write_num::<u64>(self.ordinal(), offset);
28327            match self {
28328                LayoutParameter::NestedType(ref val) => {
28329                    fidl::encoding::encode_in_envelope::<ConfigType, D>(
28330                        <ConfigType as fidl::encoding::ValueTypeMarker>::borrow(val),
28331                        encoder,
28332                        offset + 8,
28333                        _depth,
28334                    )
28335                }
28336                LayoutParameter::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28337            }
28338        }
28339    }
28340
28341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutParameter {
28342        #[inline(always)]
28343        fn new_empty() -> Self {
28344            Self::__SourceBreaking { unknown_ordinal: 0 }
28345        }
28346
28347        #[inline]
28348        unsafe fn decode(
28349            &mut self,
28350            decoder: &mut fidl::encoding::Decoder<'_, D>,
28351            offset: usize,
28352            mut depth: fidl::encoding::Depth,
28353        ) -> fidl::Result<()> {
28354            decoder.debug_check_bounds::<Self>(offset);
28355            #[allow(unused_variables)]
28356            let next_out_of_line = decoder.next_out_of_line();
28357            let handles_before = decoder.remaining_handles();
28358            let (ordinal, inlined, num_bytes, num_handles) =
28359                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28360
28361            let member_inline_size = match ordinal {
28362                1 => <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28363                0 => return Err(fidl::Error::UnknownUnionTag),
28364                _ => num_bytes as usize,
28365            };
28366
28367            if inlined != (member_inline_size <= 4) {
28368                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28369            }
28370            let _inner_offset;
28371            if inlined {
28372                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28373                _inner_offset = offset + 8;
28374            } else {
28375                depth.increment()?;
28376                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28377            }
28378            match ordinal {
28379                1 => {
28380                    #[allow(irrefutable_let_patterns)]
28381                    if let LayoutParameter::NestedType(_) = self {
28382                        // Do nothing, read the value into the object
28383                    } else {
28384                        // Initialize `self` to the right variant
28385                        *self = LayoutParameter::NestedType(fidl::new_empty!(ConfigType, D));
28386                    }
28387                    #[allow(irrefutable_let_patterns)]
28388                    if let LayoutParameter::NestedType(ref mut val) = self {
28389                        fidl::decode!(ConfigType, D, val, decoder, _inner_offset, depth)?;
28390                    } else {
28391                        unreachable!()
28392                    }
28393                }
28394                #[allow(deprecated)]
28395                ordinal => {
28396                    for _ in 0..num_handles {
28397                        decoder.drop_next_handle()?;
28398                    }
28399                    *self = LayoutParameter::__SourceBreaking { unknown_ordinal: ordinal };
28400                }
28401            }
28402            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28403                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28404            }
28405            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28406                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28407            }
28408            Ok(())
28409        }
28410    }
28411
28412    impl fidl::encoding::ValueTypeMarker for Offer {
28413        type Borrowed<'a> = &'a Self;
28414        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28415            value
28416        }
28417    }
28418
28419    unsafe impl fidl::encoding::TypeMarker for Offer {
28420        type Owned = Self;
28421
28422        #[inline(always)]
28423        fn inline_align(_context: fidl::encoding::Context) -> usize {
28424            8
28425        }
28426
28427        #[inline(always)]
28428        fn inline_size(_context: fidl::encoding::Context) -> usize {
28429            16
28430        }
28431    }
28432
28433    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
28434        #[inline]
28435        unsafe fn encode(
28436            self,
28437            encoder: &mut fidl::encoding::Encoder<'_, D>,
28438            offset: usize,
28439            _depth: fidl::encoding::Depth,
28440        ) -> fidl::Result<()> {
28441            encoder.debug_check_bounds::<Offer>(offset);
28442            encoder.write_num::<u64>(self.ordinal(), offset);
28443            match self {
28444                Offer::Service(ref val) => fidl::encoding::encode_in_envelope::<OfferService, D>(
28445                    <OfferService as fidl::encoding::ValueTypeMarker>::borrow(val),
28446                    encoder,
28447                    offset + 8,
28448                    _depth,
28449                ),
28450                Offer::Protocol(ref val) => fidl::encoding::encode_in_envelope::<OfferProtocol, D>(
28451                    <OfferProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
28452                    encoder,
28453                    offset + 8,
28454                    _depth,
28455                ),
28456                Offer::Directory(ref val) => {
28457                    fidl::encoding::encode_in_envelope::<OfferDirectory, D>(
28458                        <OfferDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
28459                        encoder,
28460                        offset + 8,
28461                        _depth,
28462                    )
28463                }
28464                Offer::Storage(ref val) => fidl::encoding::encode_in_envelope::<OfferStorage, D>(
28465                    <OfferStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
28466                    encoder,
28467                    offset + 8,
28468                    _depth,
28469                ),
28470                Offer::Runner(ref val) => fidl::encoding::encode_in_envelope::<OfferRunner, D>(
28471                    <OfferRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
28472                    encoder,
28473                    offset + 8,
28474                    _depth,
28475                ),
28476                Offer::Resolver(ref val) => fidl::encoding::encode_in_envelope::<OfferResolver, D>(
28477                    <OfferResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
28478                    encoder,
28479                    offset + 8,
28480                    _depth,
28481                ),
28482                Offer::EventStream(ref val) => {
28483                    fidl::encoding::encode_in_envelope::<OfferEventStream, D>(
28484                        <OfferEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
28485                        encoder,
28486                        offset + 8,
28487                        _depth,
28488                    )
28489                }
28490                Offer::Dictionary(ref val) => {
28491                    fidl::encoding::encode_in_envelope::<OfferDictionary, D>(
28492                        <OfferDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
28493                        encoder,
28494                        offset + 8,
28495                        _depth,
28496                    )
28497                }
28498                Offer::Config(ref val) => {
28499                    fidl::encoding::encode_in_envelope::<OfferConfiguration, D>(
28500                        <OfferConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
28501                        encoder,
28502                        offset + 8,
28503                        _depth,
28504                    )
28505                }
28506                Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28507            }
28508        }
28509    }
28510
28511    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
28512        #[inline(always)]
28513        fn new_empty() -> Self {
28514            Self::__SourceBreaking { unknown_ordinal: 0 }
28515        }
28516
28517        #[inline]
28518        unsafe fn decode(
28519            &mut self,
28520            decoder: &mut fidl::encoding::Decoder<'_, D>,
28521            offset: usize,
28522            mut depth: fidl::encoding::Depth,
28523        ) -> fidl::Result<()> {
28524            decoder.debug_check_bounds::<Self>(offset);
28525            #[allow(unused_variables)]
28526            let next_out_of_line = decoder.next_out_of_line();
28527            let handles_before = decoder.remaining_handles();
28528            let (ordinal, inlined, num_bytes, num_handles) =
28529                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28530
28531            let member_inline_size = match ordinal {
28532                1 => <OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28533                2 => <OfferProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28534                3 => <OfferDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28535                4 => <OfferStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28536                5 => <OfferRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28537                6 => <OfferResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28538                8 => <OfferEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28539                9 => <OfferDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28540                10 => {
28541                    <OfferConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context)
28542                }
28543                0 => return Err(fidl::Error::UnknownUnionTag),
28544                _ => num_bytes as usize,
28545            };
28546
28547            if inlined != (member_inline_size <= 4) {
28548                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28549            }
28550            let _inner_offset;
28551            if inlined {
28552                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28553                _inner_offset = offset + 8;
28554            } else {
28555                depth.increment()?;
28556                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28557            }
28558            match ordinal {
28559                1 => {
28560                    #[allow(irrefutable_let_patterns)]
28561                    if let Offer::Service(_) = self {
28562                        // Do nothing, read the value into the object
28563                    } else {
28564                        // Initialize `self` to the right variant
28565                        *self = Offer::Service(fidl::new_empty!(OfferService, D));
28566                    }
28567                    #[allow(irrefutable_let_patterns)]
28568                    if let Offer::Service(ref mut val) = self {
28569                        fidl::decode!(OfferService, D, val, decoder, _inner_offset, depth)?;
28570                    } else {
28571                        unreachable!()
28572                    }
28573                }
28574                2 => {
28575                    #[allow(irrefutable_let_patterns)]
28576                    if let Offer::Protocol(_) = self {
28577                        // Do nothing, read the value into the object
28578                    } else {
28579                        // Initialize `self` to the right variant
28580                        *self = Offer::Protocol(fidl::new_empty!(OfferProtocol, D));
28581                    }
28582                    #[allow(irrefutable_let_patterns)]
28583                    if let Offer::Protocol(ref mut val) = self {
28584                        fidl::decode!(OfferProtocol, D, val, decoder, _inner_offset, depth)?;
28585                    } else {
28586                        unreachable!()
28587                    }
28588                }
28589                3 => {
28590                    #[allow(irrefutable_let_patterns)]
28591                    if let Offer::Directory(_) = self {
28592                        // Do nothing, read the value into the object
28593                    } else {
28594                        // Initialize `self` to the right variant
28595                        *self = Offer::Directory(fidl::new_empty!(OfferDirectory, D));
28596                    }
28597                    #[allow(irrefutable_let_patterns)]
28598                    if let Offer::Directory(ref mut val) = self {
28599                        fidl::decode!(OfferDirectory, D, val, decoder, _inner_offset, depth)?;
28600                    } else {
28601                        unreachable!()
28602                    }
28603                }
28604                4 => {
28605                    #[allow(irrefutable_let_patterns)]
28606                    if let Offer::Storage(_) = self {
28607                        // Do nothing, read the value into the object
28608                    } else {
28609                        // Initialize `self` to the right variant
28610                        *self = Offer::Storage(fidl::new_empty!(OfferStorage, D));
28611                    }
28612                    #[allow(irrefutable_let_patterns)]
28613                    if let Offer::Storage(ref mut val) = self {
28614                        fidl::decode!(OfferStorage, D, val, decoder, _inner_offset, depth)?;
28615                    } else {
28616                        unreachable!()
28617                    }
28618                }
28619                5 => {
28620                    #[allow(irrefutable_let_patterns)]
28621                    if let Offer::Runner(_) = self {
28622                        // Do nothing, read the value into the object
28623                    } else {
28624                        // Initialize `self` to the right variant
28625                        *self = Offer::Runner(fidl::new_empty!(OfferRunner, D));
28626                    }
28627                    #[allow(irrefutable_let_patterns)]
28628                    if let Offer::Runner(ref mut val) = self {
28629                        fidl::decode!(OfferRunner, D, val, decoder, _inner_offset, depth)?;
28630                    } else {
28631                        unreachable!()
28632                    }
28633                }
28634                6 => {
28635                    #[allow(irrefutable_let_patterns)]
28636                    if let Offer::Resolver(_) = self {
28637                        // Do nothing, read the value into the object
28638                    } else {
28639                        // Initialize `self` to the right variant
28640                        *self = Offer::Resolver(fidl::new_empty!(OfferResolver, D));
28641                    }
28642                    #[allow(irrefutable_let_patterns)]
28643                    if let Offer::Resolver(ref mut val) = self {
28644                        fidl::decode!(OfferResolver, D, val, decoder, _inner_offset, depth)?;
28645                    } else {
28646                        unreachable!()
28647                    }
28648                }
28649                8 => {
28650                    #[allow(irrefutable_let_patterns)]
28651                    if let Offer::EventStream(_) = self {
28652                        // Do nothing, read the value into the object
28653                    } else {
28654                        // Initialize `self` to the right variant
28655                        *self = Offer::EventStream(fidl::new_empty!(OfferEventStream, D));
28656                    }
28657                    #[allow(irrefutable_let_patterns)]
28658                    if let Offer::EventStream(ref mut val) = self {
28659                        fidl::decode!(OfferEventStream, D, val, decoder, _inner_offset, depth)?;
28660                    } else {
28661                        unreachable!()
28662                    }
28663                }
28664                9 => {
28665                    #[allow(irrefutable_let_patterns)]
28666                    if let Offer::Dictionary(_) = self {
28667                        // Do nothing, read the value into the object
28668                    } else {
28669                        // Initialize `self` to the right variant
28670                        *self = Offer::Dictionary(fidl::new_empty!(OfferDictionary, D));
28671                    }
28672                    #[allow(irrefutable_let_patterns)]
28673                    if let Offer::Dictionary(ref mut val) = self {
28674                        fidl::decode!(OfferDictionary, D, val, decoder, _inner_offset, depth)?;
28675                    } else {
28676                        unreachable!()
28677                    }
28678                }
28679                10 => {
28680                    #[allow(irrefutable_let_patterns)]
28681                    if let Offer::Config(_) = self {
28682                        // Do nothing, read the value into the object
28683                    } else {
28684                        // Initialize `self` to the right variant
28685                        *self = Offer::Config(fidl::new_empty!(OfferConfiguration, D));
28686                    }
28687                    #[allow(irrefutable_let_patterns)]
28688                    if let Offer::Config(ref mut val) = self {
28689                        fidl::decode!(OfferConfiguration, D, val, decoder, _inner_offset, depth)?;
28690                    } else {
28691                        unreachable!()
28692                    }
28693                }
28694                #[allow(deprecated)]
28695                ordinal => {
28696                    for _ in 0..num_handles {
28697                        decoder.drop_next_handle()?;
28698                    }
28699                    *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
28700                }
28701            }
28702            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28703                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28704            }
28705            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28706                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28707            }
28708            Ok(())
28709        }
28710    }
28711
28712    impl fidl::encoding::ValueTypeMarker for Ref {
28713        type Borrowed<'a> = &'a Self;
28714        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28715            value
28716        }
28717    }
28718
28719    unsafe impl fidl::encoding::TypeMarker for Ref {
28720        type Owned = Self;
28721
28722        #[inline(always)]
28723        fn inline_align(_context: fidl::encoding::Context) -> usize {
28724            8
28725        }
28726
28727        #[inline(always)]
28728        fn inline_size(_context: fidl::encoding::Context) -> usize {
28729            16
28730        }
28731    }
28732
28733    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ref, D> for &Ref {
28734        #[inline]
28735        unsafe fn encode(
28736            self,
28737            encoder: &mut fidl::encoding::Encoder<'_, D>,
28738            offset: usize,
28739            _depth: fidl::encoding::Depth,
28740        ) -> fidl::Result<()> {
28741            encoder.debug_check_bounds::<Ref>(offset);
28742            encoder.write_num::<u64>(self.ordinal(), offset);
28743            match self {
28744                Ref::Parent(ref val) => fidl::encoding::encode_in_envelope::<ParentRef, D>(
28745                    <ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28746                    encoder,
28747                    offset + 8,
28748                    _depth,
28749                ),
28750                Ref::Self_(ref val) => fidl::encoding::encode_in_envelope::<SelfRef, D>(
28751                    <SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28752                    encoder,
28753                    offset + 8,
28754                    _depth,
28755                ),
28756                Ref::Child(ref val) => fidl::encoding::encode_in_envelope::<ChildRef, D>(
28757                    <ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28758                    encoder,
28759                    offset + 8,
28760                    _depth,
28761                ),
28762                Ref::Collection(ref val) => fidl::encoding::encode_in_envelope::<CollectionRef, D>(
28763                    <CollectionRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28764                    encoder,
28765                    offset + 8,
28766                    _depth,
28767                ),
28768                Ref::Framework(ref val) => fidl::encoding::encode_in_envelope::<FrameworkRef, D>(
28769                    <FrameworkRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28770                    encoder,
28771                    offset + 8,
28772                    _depth,
28773                ),
28774                Ref::Capability(ref val) => fidl::encoding::encode_in_envelope::<CapabilityRef, D>(
28775                    <CapabilityRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28776                    encoder,
28777                    offset + 8,
28778                    _depth,
28779                ),
28780                Ref::Debug(ref val) => fidl::encoding::encode_in_envelope::<DebugRef, D>(
28781                    <DebugRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28782                    encoder,
28783                    offset + 8,
28784                    _depth,
28785                ),
28786                Ref::VoidType(ref val) => fidl::encoding::encode_in_envelope::<VoidRef, D>(
28787                    <VoidRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28788                    encoder,
28789                    offset + 8,
28790                    _depth,
28791                ),
28792                Ref::Environment(ref val) => {
28793                    fidl::encoding::encode_in_envelope::<EnvironmentRef, D>(
28794                        <EnvironmentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28795                        encoder,
28796                        offset + 8,
28797                        _depth,
28798                    )
28799                }
28800                Ref::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28801            }
28802        }
28803    }
28804
28805    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ref {
28806        #[inline(always)]
28807        fn new_empty() -> Self {
28808            Self::__SourceBreaking { unknown_ordinal: 0 }
28809        }
28810
28811        #[inline]
28812        unsafe fn decode(
28813            &mut self,
28814            decoder: &mut fidl::encoding::Decoder<'_, D>,
28815            offset: usize,
28816            mut depth: fidl::encoding::Depth,
28817        ) -> fidl::Result<()> {
28818            decoder.debug_check_bounds::<Self>(offset);
28819            #[allow(unused_variables)]
28820            let next_out_of_line = decoder.next_out_of_line();
28821            let handles_before = decoder.remaining_handles();
28822            let (ordinal, inlined, num_bytes, num_handles) =
28823                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28824
28825            let member_inline_size = match ordinal {
28826                1 => <ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28827                2 => <SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28828                3 => <ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28829                4 => <CollectionRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28830                5 => <FrameworkRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28831                6 => <CapabilityRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28832                7 => <DebugRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28833                8 => <VoidRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28834                9 => <EnvironmentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28835                0 => return Err(fidl::Error::UnknownUnionTag),
28836                _ => num_bytes as usize,
28837            };
28838
28839            if inlined != (member_inline_size <= 4) {
28840                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28841            }
28842            let _inner_offset;
28843            if inlined {
28844                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28845                _inner_offset = offset + 8;
28846            } else {
28847                depth.increment()?;
28848                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28849            }
28850            match ordinal {
28851                1 => {
28852                    #[allow(irrefutable_let_patterns)]
28853                    if let Ref::Parent(_) = self {
28854                        // Do nothing, read the value into the object
28855                    } else {
28856                        // Initialize `self` to the right variant
28857                        *self = Ref::Parent(fidl::new_empty!(ParentRef, D));
28858                    }
28859                    #[allow(irrefutable_let_patterns)]
28860                    if let Ref::Parent(ref mut val) = self {
28861                        fidl::decode!(ParentRef, D, val, decoder, _inner_offset, depth)?;
28862                    } else {
28863                        unreachable!()
28864                    }
28865                }
28866                2 => {
28867                    #[allow(irrefutable_let_patterns)]
28868                    if let Ref::Self_(_) = self {
28869                        // Do nothing, read the value into the object
28870                    } else {
28871                        // Initialize `self` to the right variant
28872                        *self = Ref::Self_(fidl::new_empty!(SelfRef, D));
28873                    }
28874                    #[allow(irrefutable_let_patterns)]
28875                    if let Ref::Self_(ref mut val) = self {
28876                        fidl::decode!(SelfRef, D, val, decoder, _inner_offset, depth)?;
28877                    } else {
28878                        unreachable!()
28879                    }
28880                }
28881                3 => {
28882                    #[allow(irrefutable_let_patterns)]
28883                    if let Ref::Child(_) = self {
28884                        // Do nothing, read the value into the object
28885                    } else {
28886                        // Initialize `self` to the right variant
28887                        *self = Ref::Child(fidl::new_empty!(ChildRef, D));
28888                    }
28889                    #[allow(irrefutable_let_patterns)]
28890                    if let Ref::Child(ref mut val) = self {
28891                        fidl::decode!(ChildRef, D, val, decoder, _inner_offset, depth)?;
28892                    } else {
28893                        unreachable!()
28894                    }
28895                }
28896                4 => {
28897                    #[allow(irrefutable_let_patterns)]
28898                    if let Ref::Collection(_) = self {
28899                        // Do nothing, read the value into the object
28900                    } else {
28901                        // Initialize `self` to the right variant
28902                        *self = Ref::Collection(fidl::new_empty!(CollectionRef, D));
28903                    }
28904                    #[allow(irrefutable_let_patterns)]
28905                    if let Ref::Collection(ref mut val) = self {
28906                        fidl::decode!(CollectionRef, D, val, decoder, _inner_offset, depth)?;
28907                    } else {
28908                        unreachable!()
28909                    }
28910                }
28911                5 => {
28912                    #[allow(irrefutable_let_patterns)]
28913                    if let Ref::Framework(_) = self {
28914                        // Do nothing, read the value into the object
28915                    } else {
28916                        // Initialize `self` to the right variant
28917                        *self = Ref::Framework(fidl::new_empty!(FrameworkRef, D));
28918                    }
28919                    #[allow(irrefutable_let_patterns)]
28920                    if let Ref::Framework(ref mut val) = self {
28921                        fidl::decode!(FrameworkRef, D, val, decoder, _inner_offset, depth)?;
28922                    } else {
28923                        unreachable!()
28924                    }
28925                }
28926                6 => {
28927                    #[allow(irrefutable_let_patterns)]
28928                    if let Ref::Capability(_) = self {
28929                        // Do nothing, read the value into the object
28930                    } else {
28931                        // Initialize `self` to the right variant
28932                        *self = Ref::Capability(fidl::new_empty!(CapabilityRef, D));
28933                    }
28934                    #[allow(irrefutable_let_patterns)]
28935                    if let Ref::Capability(ref mut val) = self {
28936                        fidl::decode!(CapabilityRef, D, val, decoder, _inner_offset, depth)?;
28937                    } else {
28938                        unreachable!()
28939                    }
28940                }
28941                7 => {
28942                    #[allow(irrefutable_let_patterns)]
28943                    if let Ref::Debug(_) = self {
28944                        // Do nothing, read the value into the object
28945                    } else {
28946                        // Initialize `self` to the right variant
28947                        *self = Ref::Debug(fidl::new_empty!(DebugRef, D));
28948                    }
28949                    #[allow(irrefutable_let_patterns)]
28950                    if let Ref::Debug(ref mut val) = self {
28951                        fidl::decode!(DebugRef, D, val, decoder, _inner_offset, depth)?;
28952                    } else {
28953                        unreachable!()
28954                    }
28955                }
28956                8 => {
28957                    #[allow(irrefutable_let_patterns)]
28958                    if let Ref::VoidType(_) = self {
28959                        // Do nothing, read the value into the object
28960                    } else {
28961                        // Initialize `self` to the right variant
28962                        *self = Ref::VoidType(fidl::new_empty!(VoidRef, D));
28963                    }
28964                    #[allow(irrefutable_let_patterns)]
28965                    if let Ref::VoidType(ref mut val) = self {
28966                        fidl::decode!(VoidRef, D, val, decoder, _inner_offset, depth)?;
28967                    } else {
28968                        unreachable!()
28969                    }
28970                }
28971                9 => {
28972                    #[allow(irrefutable_let_patterns)]
28973                    if let Ref::Environment(_) = self {
28974                        // Do nothing, read the value into the object
28975                    } else {
28976                        // Initialize `self` to the right variant
28977                        *self = Ref::Environment(fidl::new_empty!(EnvironmentRef, D));
28978                    }
28979                    #[allow(irrefutable_let_patterns)]
28980                    if let Ref::Environment(ref mut val) = self {
28981                        fidl::decode!(EnvironmentRef, D, val, decoder, _inner_offset, depth)?;
28982                    } else {
28983                        unreachable!()
28984                    }
28985                }
28986                #[allow(deprecated)]
28987                ordinal => {
28988                    for _ in 0..num_handles {
28989                        decoder.drop_next_handle()?;
28990                    }
28991                    *self = Ref::__SourceBreaking { unknown_ordinal: ordinal };
28992                }
28993            }
28994            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28995                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28996            }
28997            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28998                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28999            }
29000            Ok(())
29001        }
29002    }
29003
29004    impl fidl::encoding::ValueTypeMarker for Use {
29005        type Borrowed<'a> = &'a Self;
29006        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
29007            value
29008        }
29009    }
29010
29011    unsafe impl fidl::encoding::TypeMarker for Use {
29012        type Owned = Self;
29013
29014        #[inline(always)]
29015        fn inline_align(_context: fidl::encoding::Context) -> usize {
29016            8
29017        }
29018
29019        #[inline(always)]
29020        fn inline_size(_context: fidl::encoding::Context) -> usize {
29021            16
29022        }
29023    }
29024
29025    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Use, D> for &Use {
29026        #[inline]
29027        unsafe fn encode(
29028            self,
29029            encoder: &mut fidl::encoding::Encoder<'_, D>,
29030            offset: usize,
29031            _depth: fidl::encoding::Depth,
29032        ) -> fidl::Result<()> {
29033            encoder.debug_check_bounds::<Use>(offset);
29034            encoder.write_num::<u64>(self.ordinal(), offset);
29035            match self {
29036                Use::Service(ref val) => fidl::encoding::encode_in_envelope::<UseService, D>(
29037                    <UseService as fidl::encoding::ValueTypeMarker>::borrow(val),
29038                    encoder,
29039                    offset + 8,
29040                    _depth,
29041                ),
29042                Use::Protocol(ref val) => fidl::encoding::encode_in_envelope::<UseProtocol, D>(
29043                    <UseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
29044                    encoder,
29045                    offset + 8,
29046                    _depth,
29047                ),
29048                Use::Directory(ref val) => fidl::encoding::encode_in_envelope::<UseDirectory, D>(
29049                    <UseDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
29050                    encoder,
29051                    offset + 8,
29052                    _depth,
29053                ),
29054                Use::Storage(ref val) => fidl::encoding::encode_in_envelope::<UseStorage, D>(
29055                    <UseStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
29056                    encoder,
29057                    offset + 8,
29058                    _depth,
29059                ),
29060                Use::EventStream(ref val) => {
29061                    fidl::encoding::encode_in_envelope::<UseEventStream, D>(
29062                        <UseEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
29063                        encoder,
29064                        offset + 8,
29065                        _depth,
29066                    )
29067                }
29068                Use::Runner(ref val) => fidl::encoding::encode_in_envelope::<UseRunner, D>(
29069                    <UseRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
29070                    encoder,
29071                    offset + 8,
29072                    _depth,
29073                ),
29074                Use::Config(ref val) => fidl::encoding::encode_in_envelope::<UseConfiguration, D>(
29075                    <UseConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
29076                    encoder,
29077                    offset + 8,
29078                    _depth,
29079                ),
29080                Use::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<UseDictionary, D>(
29081                    <UseDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
29082                    encoder,
29083                    offset + 8,
29084                    _depth,
29085                ),
29086                Use::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
29087            }
29088        }
29089    }
29090
29091    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Use {
29092        #[inline(always)]
29093        fn new_empty() -> Self {
29094            Self::__SourceBreaking { unknown_ordinal: 0 }
29095        }
29096
29097        #[inline]
29098        unsafe fn decode(
29099            &mut self,
29100            decoder: &mut fidl::encoding::Decoder<'_, D>,
29101            offset: usize,
29102            mut depth: fidl::encoding::Depth,
29103        ) -> fidl::Result<()> {
29104            decoder.debug_check_bounds::<Self>(offset);
29105            #[allow(unused_variables)]
29106            let next_out_of_line = decoder.next_out_of_line();
29107            let handles_before = decoder.remaining_handles();
29108            let (ordinal, inlined, num_bytes, num_handles) =
29109                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
29110
29111            let member_inline_size = match ordinal {
29112                1 => <UseService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29113                2 => <UseProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29114                3 => <UseDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29115                4 => <UseStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29116                7 => <UseEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29117                8 => <UseRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29118                9 => <UseConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29119                10 => <UseDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
29120                0 => return Err(fidl::Error::UnknownUnionTag),
29121                _ => num_bytes as usize,
29122            };
29123
29124            if inlined != (member_inline_size <= 4) {
29125                return Err(fidl::Error::InvalidInlineBitInEnvelope);
29126            }
29127            let _inner_offset;
29128            if inlined {
29129                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
29130                _inner_offset = offset + 8;
29131            } else {
29132                depth.increment()?;
29133                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29134            }
29135            match ordinal {
29136                1 => {
29137                    #[allow(irrefutable_let_patterns)]
29138                    if let Use::Service(_) = self {
29139                        // Do nothing, read the value into the object
29140                    } else {
29141                        // Initialize `self` to the right variant
29142                        *self = Use::Service(fidl::new_empty!(UseService, D));
29143                    }
29144                    #[allow(irrefutable_let_patterns)]
29145                    if let Use::Service(ref mut val) = self {
29146                        fidl::decode!(UseService, D, val, decoder, _inner_offset, depth)?;
29147                    } else {
29148                        unreachable!()
29149                    }
29150                }
29151                2 => {
29152                    #[allow(irrefutable_let_patterns)]
29153                    if let Use::Protocol(_) = self {
29154                        // Do nothing, read the value into the object
29155                    } else {
29156                        // Initialize `self` to the right variant
29157                        *self = Use::Protocol(fidl::new_empty!(UseProtocol, D));
29158                    }
29159                    #[allow(irrefutable_let_patterns)]
29160                    if let Use::Protocol(ref mut val) = self {
29161                        fidl::decode!(UseProtocol, D, val, decoder, _inner_offset, depth)?;
29162                    } else {
29163                        unreachable!()
29164                    }
29165                }
29166                3 => {
29167                    #[allow(irrefutable_let_patterns)]
29168                    if let Use::Directory(_) = self {
29169                        // Do nothing, read the value into the object
29170                    } else {
29171                        // Initialize `self` to the right variant
29172                        *self = Use::Directory(fidl::new_empty!(UseDirectory, D));
29173                    }
29174                    #[allow(irrefutable_let_patterns)]
29175                    if let Use::Directory(ref mut val) = self {
29176                        fidl::decode!(UseDirectory, D, val, decoder, _inner_offset, depth)?;
29177                    } else {
29178                        unreachable!()
29179                    }
29180                }
29181                4 => {
29182                    #[allow(irrefutable_let_patterns)]
29183                    if let Use::Storage(_) = self {
29184                        // Do nothing, read the value into the object
29185                    } else {
29186                        // Initialize `self` to the right variant
29187                        *self = Use::Storage(fidl::new_empty!(UseStorage, D));
29188                    }
29189                    #[allow(irrefutable_let_patterns)]
29190                    if let Use::Storage(ref mut val) = self {
29191                        fidl::decode!(UseStorage, D, val, decoder, _inner_offset, depth)?;
29192                    } else {
29193                        unreachable!()
29194                    }
29195                }
29196                7 => {
29197                    #[allow(irrefutable_let_patterns)]
29198                    if let Use::EventStream(_) = self {
29199                        // Do nothing, read the value into the object
29200                    } else {
29201                        // Initialize `self` to the right variant
29202                        *self = Use::EventStream(fidl::new_empty!(UseEventStream, D));
29203                    }
29204                    #[allow(irrefutable_let_patterns)]
29205                    if let Use::EventStream(ref mut val) = self {
29206                        fidl::decode!(UseEventStream, D, val, decoder, _inner_offset, depth)?;
29207                    } else {
29208                        unreachable!()
29209                    }
29210                }
29211                8 => {
29212                    #[allow(irrefutable_let_patterns)]
29213                    if let Use::Runner(_) = self {
29214                        // Do nothing, read the value into the object
29215                    } else {
29216                        // Initialize `self` to the right variant
29217                        *self = Use::Runner(fidl::new_empty!(UseRunner, D));
29218                    }
29219                    #[allow(irrefutable_let_patterns)]
29220                    if let Use::Runner(ref mut val) = self {
29221                        fidl::decode!(UseRunner, D, val, decoder, _inner_offset, depth)?;
29222                    } else {
29223                        unreachable!()
29224                    }
29225                }
29226                9 => {
29227                    #[allow(irrefutable_let_patterns)]
29228                    if let Use::Config(_) = self {
29229                        // Do nothing, read the value into the object
29230                    } else {
29231                        // Initialize `self` to the right variant
29232                        *self = Use::Config(fidl::new_empty!(UseConfiguration, D));
29233                    }
29234                    #[allow(irrefutable_let_patterns)]
29235                    if let Use::Config(ref mut val) = self {
29236                        fidl::decode!(UseConfiguration, D, val, decoder, _inner_offset, depth)?;
29237                    } else {
29238                        unreachable!()
29239                    }
29240                }
29241                10 => {
29242                    #[allow(irrefutable_let_patterns)]
29243                    if let Use::Dictionary(_) = self {
29244                        // Do nothing, read the value into the object
29245                    } else {
29246                        // Initialize `self` to the right variant
29247                        *self = Use::Dictionary(fidl::new_empty!(UseDictionary, D));
29248                    }
29249                    #[allow(irrefutable_let_patterns)]
29250                    if let Use::Dictionary(ref mut val) = self {
29251                        fidl::decode!(UseDictionary, D, val, decoder, _inner_offset, depth)?;
29252                    } else {
29253                        unreachable!()
29254                    }
29255                }
29256                #[allow(deprecated)]
29257                ordinal => {
29258                    for _ in 0..num_handles {
29259                        decoder.drop_next_handle()?;
29260                    }
29261                    *self = Use::__SourceBreaking { unknown_ordinal: ordinal };
29262                }
29263            }
29264            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
29265                return Err(fidl::Error::InvalidNumBytesInEnvelope);
29266            }
29267            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29268                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29269            }
29270            Ok(())
29271        }
29272    }
29273}