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    #[doc(hidden)]
729    pub __source_breaking: fidl::marker::SourceBreaking,
730}
731
732impl fidl::Persistable for Component {}
733
734/// Declares a single config field (key + type)
735#[derive(Clone, Debug, Default, PartialEq)]
736pub struct ConfigField {
737    /// (Required) The identifier for this config field.
738    /// This key will be used to match overrides.
739    pub key: Option<String>,
740    /// (Required) The type of config values. Config values are verified
741    /// against this layout at build time and run time.
742    pub type_: Option<ConfigType>,
743    /// Allowed sources for runtime overrides of this field's value.
744    pub mutability: Option<ConfigMutability>,
745    #[doc(hidden)]
746    pub __source_breaking: fidl::marker::SourceBreaking,
747}
748
749impl fidl::Persistable for ConfigField {}
750
751/// A directive to override the value of a particular configuration field in the child.
752#[derive(Clone, Debug, Default, PartialEq)]
753pub struct ConfigOverride {
754    pub key: Option<String>,
755    pub value: Option<ConfigValue>,
756    #[doc(hidden)]
757    pub __source_breaking: fidl::marker::SourceBreaking,
758}
759
760impl fidl::Persistable for ConfigOverride {}
761
762/// The schema of a component's configuration interface.
763#[derive(Clone, Debug, Default, PartialEq)]
764pub struct ConfigSchema {
765    /// (Required) Ordered fields of the component's configuration interface.
766    pub fields: Option<Vec<ConfigField>>,
767    /// (Required) Checksum over the config declaration.
768    pub checksum: Option<ConfigChecksum>,
769    /// (Required) Strategy used to resolve config values.
770    pub value_source: Option<ConfigValueSource>,
771    #[doc(hidden)]
772    pub __source_breaking: fidl::marker::SourceBreaking,
773}
774
775impl fidl::Persistable for ConfigSchema {}
776
777#[derive(Clone, Debug, Default, PartialEq)]
778pub struct ConfigSourceCapabilities {
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for ConfigSourceCapabilities {}
784
785/// An individual configuration value. It is matched against a specific configuration field based
786/// on its offset within `ValuesData.values`.
787#[derive(Clone, Debug, Default, PartialEq)]
788pub struct ConfigValueSpec {
789    pub value: Option<ConfigValue>,
790    #[doc(hidden)]
791    pub __source_breaking: fidl::marker::SourceBreaking,
792}
793
794impl fidl::Persistable for ConfigValueSpec {}
795
796/// Contents of the configuration value file. Defines the base values for a component's config.
797#[derive(Clone, Debug, Default, PartialEq)]
798pub struct ConfigValuesData {
799    /// The concrete values for the component's configuration.
800    pub values: Option<Vec<ConfigValueSpec>>,
801    /// A SHA-256 checksum of the configuration schema. Must match the checksum in the component
802    /// manifest and config parser library used to resolve the final configuration.
803    pub checksum: Option<ConfigChecksum>,
804    #[doc(hidden)]
805    pub __source_breaking: fidl::marker::SourceBreaking,
806}
807
808impl fidl::Persistable for ConfigValuesData {}
809
810/// Declares a configuration capability.
811///
812/// To learn more about configuration capabilities, see:
813/// https://fuchsia.dev/fuchsia-src/glossary#configuration-capability
814/// or:
815/// https://fuchsia.dev/fuchsia-src/docs/concepts/components/v2/capabilities/configuration
816#[derive(Clone, Debug, Default, PartialEq)]
817pub struct Configuration {
818    /// (Required) The name of this configuration
819    pub name: Option<String>,
820    /// (Required) The value of this Configuration.
821    pub value: Option<ConfigValue>,
822    #[doc(hidden)]
823    pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for Configuration {}
827
828/// Registers a protocol in the environment as a debug capability. This makes
829/// it available to any component in the environment that uses it with
830/// `source == debug`.
831///
832/// To learn more about protocols, see:
833/// https://fuchsia.dev/fuchsia-src/glossary#protocol
834#[derive(Clone, Debug, Default, PartialEq)]
835pub struct DebugProtocolRegistration {
836    /// (Required) The provider of the capability relative to the component
837    /// itself. Must be `parent`, `self`, or `child`.
838    pub source: Option<Ref>,
839    /// (Required) Name identifying the protocol being offered.
840    pub source_name: Option<String>,
841    /// (Required) The name by which the capability is being offered.
842    pub target_name: Option<String>,
843    #[doc(hidden)]
844    pub __source_breaking: fidl::marker::SourceBreaking,
845}
846
847impl fidl::Persistable for DebugProtocolRegistration {}
848
849/// Declares a dictionary capability.
850#[derive(Clone, Debug, Default, PartialEq)]
851pub struct Dictionary {
852    /// (Required) The name of this dictionary.
853    ///
854    /// Must be unique among built-in capabilities.
855    pub name: Option<String>,
856    /// (Optional) Source of the contents used to initialize the dictionary.
857    /// Must be `parent`, `self`, or `child`.
858    pub source: Option<Ref>,
859    /// (Optional) Path in a dictionary provided by `ref` which contains the contents
860    /// that will be used to initialize the dictionary.
861    ///
862    /// This must be set iff `source` is set.
863    pub source_dictionary: Option<String>,
864    /// (Optional) Path in the component's outgoing directory to a
865    /// [fuchsia.component.sandbox/DictionaryRouter] that returns a
866    /// [fuchsia.component.sandbox/DirectoryRef] for this dictionary.
867    ///
868    /// If this is set, it means the dictionary is provided by the program directly, not component
869    /// manager. `source` and `source_dictionary` must be `null` if this is set.
870    pub source_path: Option<String>,
871    #[doc(hidden)]
872    pub __source_breaking: fidl::marker::SourceBreaking,
873}
874
875impl fidl::Persistable for Dictionary {}
876
877/// Declares a directory capability backed by this component.
878///
879/// To learn more about directories, see:
880/// https://fuchsia.dev/fuchsia-src/glossary#directory
881#[derive(Clone, Debug, Default, PartialEq)]
882pub struct Directory {
883    /// (Required) The name of this directory.
884    pub name: Option<String>,
885    /// (Optional) The path to the directory in the component's outgoing
886    /// directory.
887    ///
888    /// Not set for built-in capabilities.
889    pub source_path: Option<String>,
890    /// (Required) The maximum rights that can be set by a component using this
891    /// directory.
892    pub rights: Option<fidl_fuchsia_io__common::Operations>,
893    #[doc(hidden)]
894    pub __source_breaking: fidl::marker::SourceBreaking,
895}
896
897impl fidl::Persistable for Directory {}
898
899/// Declares an environment which configures a realm.
900#[derive(Clone, Debug, Default, PartialEq)]
901pub struct Environment {
902    /// (Required) The name of this environment.
903    pub name: Option<String>,
904    /// (Required) Specifies how the initial state of this environment is
905    /// constructed.
906    pub extends: Option<EnvironmentExtends>,
907    /// (Optional) List of runners available in this environment.
908    ///
909    /// This list determines the total set of runners that are available for any
910    /// component in the environment to use.
911    pub runners: Option<Vec<RunnerRegistration>>,
912    /// (Optional) List of component resolvers and the URL schemes they are
913    /// registered to resolve. These registrations determine how components are
914    /// resolved in the realm. If the component URL scheme does not match any of
915    /// these resolvers, URL resolution is delegated to the parent environment,
916    /// if this environment `extends` from `REALM`.
917    pub resolvers: Option<Vec<ResolverRegistration>>,
918    /// (Optional) Expose capabilities to debug section when component manager
919    /// allows it.
920    ///
921    /// These capabilities are accessible to any component in the environment
922    /// with a `use` declaration with `source == debug`.  Only capabilities
923    /// intended to support development should be declared here, and they are
924    /// only allowed if explicitly included in the component manager allowlist.
925    pub debug_capabilities: Option<Vec<DebugRegistration>>,
926    /// (Optional) The duration in milliseconds that the component will have to
927    /// stop before it is killed. Required if this environment `extends` from
928    /// `NONE`.
929    pub stop_timeout_ms: Option<u32>,
930    #[doc(hidden)]
931    pub __source_breaking: fidl::marker::SourceBreaking,
932}
933
934impl fidl::Persistable for Environment {}
935
936/// Declares an event_stream capability
937///
938/// This type cannot be used in `fuchsia.component.decl.Component`. It is only
939/// used for the framework's built-in capabilities declared in
940/// `internal.Config`.
941#[derive(Clone, Debug, Default, PartialEq)]
942pub struct EventStream {
943    /// (Required) The name of this event stream.
944    ///
945    /// Must be unique among built-in capabilities.
946    pub name: Option<String>,
947    #[doc(hidden)]
948    pub __source_breaking: fidl::marker::SourceBreaking,
949}
950
951impl fidl::Persistable for EventStream {}
952
953/// Indicates the event name to subscribe to with a given event mode.
954#[derive(Clone, Debug, Default, PartialEq)]
955pub struct EventSubscription {
956    /// (Required) The event names to subscribe to.
957    pub event_name: Option<String>,
958    #[doc(hidden)]
959    pub __source_breaking: fidl::marker::SourceBreaking,
960}
961
962impl fidl::Persistable for EventSubscription {}
963
964/// Declares a configuration capability exposed to a component's containing realm, such as
965/// a capability exposed by the component or one of its children at runtime.
966#[derive(Clone, Debug, Default, PartialEq)]
967pub struct ExposeConfiguration {
968    /// (Required) The provider of the capability relative to the component
969    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
970    /// target must expose, offer, or use the capability with `OPTIONAL` or
971    /// `TRANSITIONAL` availability.
972    pub source: Option<Ref>,
973    /// (Required) Name identifying the configuration, by which it was presented to
974    /// this component.
975    pub source_name: Option<String>,
976    /// (Required) The destination to which the capability is exposed.
977    pub target: Option<Ref>,
978    /// (Required) The name by which the capability is being exposed.
979    pub target_name: Option<String>,
980    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
981    /// See [`Availability`].
982    pub availability: Option<Availability>,
983    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
984    /// If this field is absent, `source_name` identifies a capability directly routed
985    /// by `source`. If set, `source_name` identifies a capability nested inside this
986    /// dictionary.
987    pub source_dictionary: Option<String>,
988    #[doc(hidden)]
989    pub __source_breaking: fidl::marker::SourceBreaking,
990}
991
992impl fidl::Persistable for ExposeConfiguration {}
993
994/// Declares a dictionary exposed to a component's containing realm, such as
995/// a dictionary exposed by the component or one of its children at runtime.
996///
997/// To learn more about dictionarys, see:
998/// https://fuchsia.dev/fuchsia-src/glossary#dictionary
999#[derive(Clone, Debug, Default, PartialEq)]
1000pub struct ExposeDictionary {
1001    /// (Required) The provider of the capability relative to the component
1002    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1003    /// target must expose, offer, or use the capability with `OPTIONAL` or
1004    /// `TRANSITIONAL` availability.
1005    pub source: Option<Ref>,
1006    /// (Required) Name identifying the dictionary, by which it was presented to
1007    /// this component.
1008    pub source_name: Option<String>,
1009    /// (Required) The destination to which the dictionary is exposed: either the
1010    /// component's realm or the framework.
1011    pub target: Option<Ref>,
1012    /// (Required) The name by which the capability is being exposed.
1013    pub target_name: Option<String>,
1014    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1015    /// See [`Availability`].
1016    pub availability: Option<Availability>,
1017    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1018    /// If this field is absent, `source_name` identifies a capability directly routed
1019    /// by `source`. If set, `source_name` identifies a capability nested inside a
1020    /// dictionary. The name of the top-level dictionary is given by the first path
1021    /// segment of `source_dictionary`, and `source` is expected to route a
1022    /// dictionary capability with this name. The rest of the path (possibly empty)
1023    /// represents the path to a dictionary nested in the top-level dictionary which
1024    /// is expected to contain `source_name`.
1025    pub source_dictionary: Option<String>,
1026    #[doc(hidden)]
1027    pub __source_breaking: fidl::marker::SourceBreaking,
1028}
1029
1030impl fidl::Persistable for ExposeDictionary {}
1031
1032/// Declares a directory exposed to a component's containing realm, such as a
1033/// directory exposed by the component or one of its children at runtime.
1034#[derive(Clone, Debug, Default, PartialEq)]
1035pub struct ExposeDirectory {
1036    /// (Required) The provider of the capability relative to the component
1037    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1038    /// target must expose, offer, or use the capability with `OPTIONAL` or
1039    /// `TRANSITIONAL` availability.
1040    pub source: Option<Ref>,
1041    /// (Required) Name identifying the directory, by which it was presented to
1042    /// this component.
1043    pub source_name: Option<String>,
1044    /// (Required) The destination to which the directory is exposed: either the
1045    /// component's realm or the framework.
1046    pub target: Option<Ref>,
1047    /// (Required) The name by which the capability is being exposed.
1048    pub target_name: Option<String>,
1049    /// (Optional) The maximum rights that can be set by a component using this
1050    /// directory. If unset, the rights are inherited from `source`.
1051    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1052    /// (Optional) The subdirectory of this directory to expose instead of the
1053    /// root.
1054    pub subdir: Option<String>,
1055    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1056    /// See [`Availability`].
1057    pub availability: Option<Availability>,
1058    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1059    /// If this field is absent, `source_name` identifies a capability directly routed
1060    /// by `source`. If set, `source_name` identifies a capability nested inside a
1061    /// dictionary. The name of the top-level dictionary is given by the first path
1062    /// segment of `source_dictionary`, and `source` is expected to route a
1063    /// dictionary capability with this name. The rest of the path (possibly empty)
1064    /// represents the path to a dictionary nested in the top-level dictionary which
1065    /// is expected to contain `source_name`.
1066    pub source_dictionary: Option<String>,
1067    #[doc(hidden)]
1068    pub __source_breaking: fidl::marker::SourceBreaking,
1069}
1070
1071impl fidl::Persistable for ExposeDirectory {}
1072
1073/// Declares a protocol exposed to a component's containing realm, such as
1074/// a protocol exposed by the component or one of its children at runtime.
1075///
1076/// To learn more about protocols, see:
1077/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1078#[derive(Clone, Debug, Default, PartialEq)]
1079pub struct ExposeProtocol {
1080    /// (Required) The provider of the capability relative to the component
1081    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1082    /// target must expose, offer, or use the capability with `OPTIONAL` or
1083    /// `TRANSITIONAL` availability.
1084    pub source: Option<Ref>,
1085    /// (Required) Name identifying the protocol, by which it was presented to
1086    /// this component.
1087    pub source_name: Option<String>,
1088    /// (Required) The destination to which the protocol is exposed: either the
1089    /// component's realm or the framework.
1090    pub target: Option<Ref>,
1091    /// (Required) The name by which the capability is being exposed.
1092    pub target_name: Option<String>,
1093    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1094    /// See [`Availability`].
1095    pub availability: Option<Availability>,
1096    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1097    /// If this field is absent, `source_name` identifies a capability directly routed
1098    /// by `source`. If set, `source_name` identifies a capability nested inside a
1099    /// dictionary. The name of the top-level dictionary is given by the first path
1100    /// segment of `source_dictionary`, and `source` is expected to route a
1101    /// dictionary capability with this name. The rest of the path (possibly empty)
1102    /// represents the path to a dictionary nested in the top-level dictionary which
1103    /// is expected to contain `source_name`.
1104    pub source_dictionary: Option<String>,
1105    #[doc(hidden)]
1106    pub __source_breaking: fidl::marker::SourceBreaking,
1107}
1108
1109impl fidl::Persistable for ExposeProtocol {}
1110
1111/// Declares a resolver exposed to a component's containing realm, such as a
1112/// resolver exposed by the component or one of its children at runtime.
1113#[derive(Clone, Debug, Default, PartialEq)]
1114pub struct ExposeResolver {
1115    /// (Required) The provider of the capability relative to the component
1116    /// itself. Must be `self` or `child`.
1117    pub source: Option<Ref>,
1118    /// (Required) The name of the resolver, by which it was presented to this
1119    /// component.
1120    pub source_name: Option<String>,
1121    /// (Required) The destination to which the resolver is exposed
1122    pub target: Option<Ref>,
1123    /// (Required) The name by which the capability is being exposed.
1124    pub target_name: Option<String>,
1125    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1126    /// If this field is absent, `source_name` identifies a capability directly routed
1127    /// by `source`. If set, `source_name` identifies a capability nested inside a
1128    /// dictionary. The name of the top-level dictionary is given by the first path
1129    /// segment of `source_dictionary`, and `source` is expected to route a
1130    /// dictionary capability with this name. The rest of the path (possibly empty)
1131    /// represents the path to a dictionary nested in the top-level dictionary which
1132    /// is expected to contain `source_name`.
1133    pub source_dictionary: Option<String>,
1134    #[doc(hidden)]
1135    pub __source_breaking: fidl::marker::SourceBreaking,
1136}
1137
1138impl fidl::Persistable for ExposeResolver {}
1139
1140/// Declares a runner exposed to a component's containing realm, such as a
1141/// runner exposed by the component or one of its children at runtime.
1142#[derive(Clone, Debug, Default, PartialEq)]
1143pub struct ExposeRunner {
1144    /// (Required) The provider of the capability relative to the component
1145    /// itself. Must be `self` or `child`.
1146    pub source: Option<Ref>,
1147    /// (Required) The name of the runner, by which it was presented to this
1148    /// component.
1149    pub source_name: Option<String>,
1150    /// (Required) The destination to which the runner is exposed: either the
1151    /// component's realm or the framework.
1152    pub target: Option<Ref>,
1153    /// (Required) The name by which the capability is being exposed.
1154    pub target_name: Option<String>,
1155    /// (Optional) Path in a dictionary offered by `ref` which contains `source_name`.
1156    /// If this field is absent, `source_name` identifies a capability directly routed
1157    /// by `source`. If set, `source_name` identifies a capability nested inside a
1158    /// dictionary. The name of the top-level dictionary is given by the first path
1159    /// segment of `source_dictionary`, and `source` is expected to route a
1160    /// dictionary capability with this name. The rest of the path (possibly empty)
1161    /// represents the path to a dictionary nested in the top-level dictionary which
1162    /// is expected to contain `source_name`.
1163    pub source_dictionary: Option<String>,
1164    #[doc(hidden)]
1165    pub __source_breaking: fidl::marker::SourceBreaking,
1166}
1167
1168impl fidl::Persistable for ExposeRunner {}
1169
1170/// Declares a service exposed to a component's containing realm, such as a
1171/// service exposed by the component or one of its children at runtime.
1172///
1173/// To learn more about services, see:
1174/// https://fuchsia.dev/fuchsia-src/glossary#service
1175#[derive(Clone, Debug, Default, PartialEq)]
1176pub struct ExposeService {
1177    /// (Required) The provider of the capability relative to the component
1178    /// itself. Must be `self` or `child`, or `void`. If set to `void`, then the
1179    /// target must expose, offer, or use the capability with `OPTIONAL` or
1180    /// `TRANSITIONAL` availability.
1181    pub source: Option<Ref>,
1182    /// (Required) Name identifying the service, by which it was presented to
1183    /// this component.
1184    pub source_name: Option<String>,
1185    /// (Required) The destination to which the service is exposed: either the
1186    /// component's realm or the framework.
1187    pub target: Option<Ref>,
1188    /// (Required) The name by which the capability is being exposed.
1189    pub target_name: Option<String>,
1190    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1191    /// See [`Availability`].
1192    pub availability: Option<Availability>,
1193    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1194    /// If this field is absent, `source_name` identifies a capability directly routed
1195    /// by `source`. If set, `source_name` identifies a capability nested inside this
1196    /// dictionary.
1197    pub source_dictionary: Option<String>,
1198    #[doc(hidden)]
1199    pub __source_breaking: fidl::marker::SourceBreaking,
1200}
1201
1202impl fidl::Persistable for ExposeService {}
1203
1204/// Declares a configuration capability offered by a component to one of its children,
1205/// which may have been offered by the component's containing realm, the
1206/// component itself, or one of its other children.
1207#[derive(Clone, Debug, Default, PartialEq)]
1208pub struct OfferConfiguration {
1209    /// (Required) The provider of the capability relative to the component
1210    /// itself. Must be `parent`, `self`, `child`, or `void`.
1211    /// If set to `void`, then the target must offer or use the capability with
1212    /// `OPTIONAL` or `TRANSITIONAL` availability.
1213    pub source: Option<Ref>,
1214    /// (Required) Name identifying the configuration being offered.
1215    pub source_name: Option<String>,
1216    /// (Required) Reference to the target. Must be `child`, or `collection`.
1217    pub target: Option<Ref>,
1218    /// (Required) The name by which the capability is being offered.
1219    pub target_name: Option<String>,
1220    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1221    /// If set to `required`, the target may use or offer the capability with
1222    /// either `required` or `optional` availability. If set to `optional`, the
1223    /// target must use or offer the capability with `optional` availability.
1224    /// The `same_as_target` value causes this offer's availability to match the
1225    /// availability set in the target.
1226    pub availability: Option<Availability>,
1227    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1228    /// If this field is absent, `source_name` identifies a capability directly routed
1229    /// by `source`. If set, `source_name` identifies a capability nested inside this
1230    /// dictionary.
1231    pub source_dictionary: Option<String>,
1232    #[doc(hidden)]
1233    pub __source_breaking: fidl::marker::SourceBreaking,
1234}
1235
1236impl fidl::Persistable for OfferConfiguration {}
1237
1238/// Declares a dictionary offered by a component to one of its children,
1239/// which may have been offered by the component's containing realm, the
1240/// component itself, or one of its other children.
1241///
1242/// To learn more about dictionaries, see:
1243/// https://fuchsia.dev/fuchsia-src/glossary#dictionary
1244#[derive(Clone, Debug, Default, PartialEq)]
1245pub struct OfferDictionary {
1246    /// (Required) The provider of the capability relative to the component
1247    /// itself. Must be `parent`, `self`, `child`, or `void`.
1248    /// If set to `void`, then the target must offer or use the capability with
1249    /// `OPTIONAL` or `TRANSITIONAL` availability.
1250    pub source: Option<Ref>,
1251    /// (Required) Name identifying the dictionary being offered.
1252    pub source_name: Option<String>,
1253    /// (Required) Reference to the target. Must be `child`, `collection`, or
1254    /// a dictionary `capability`.
1255    pub target: Option<Ref>,
1256    /// (Required) The name by which the capability is being offered.
1257    pub target_name: Option<String>,
1258    /// (Required) The dependency type this offer represents. A component which
1259    /// receives a weak offer must support the offered capability being
1260    /// unavailable at any point.
1261    pub dependency_type: Option<DependencyType>,
1262    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1263    /// If set to `required`, the target may use or offer the capability with
1264    /// either `required` or `optional` availability. If set to `optional`, the
1265    /// target must use or offer the capability with `optional` availability.
1266    /// The `same_as_target` value causes this offer's availability to match the
1267    /// availability set in the target.
1268    pub availability: Option<Availability>,
1269    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1270    /// If this field is absent, `source_name` identifies a capability directly routed
1271    /// by `source`. If set, `source_name` identifies a capability nested inside this
1272    /// dictionary.
1273    pub source_dictionary: Option<String>,
1274    #[doc(hidden)]
1275    pub __source_breaking: fidl::marker::SourceBreaking,
1276}
1277
1278impl fidl::Persistable for OfferDictionary {}
1279
1280/// Declares a directory offered by a component to one of its children, which
1281/// may have been offered by the component's containing realm, the component
1282/// itself, or one of its other children.
1283#[derive(Clone, Debug, Default, PartialEq)]
1284pub struct OfferDirectory {
1285    /// (Required) The provider of the capability relative to the component
1286    /// itself. Must be `parent`, `self`, `child`, or `void`.
1287    /// If set to `void`, then the target must offer or use the capability with
1288    /// `OPTIONAL` or `TRANSITIONAL` availability.
1289    pub source: Option<Ref>,
1290    /// (Required) Name identifying the directory being offered.
1291    pub source_name: Option<String>,
1292    /// (Required) Reference to the target. Must be `child`, `collection`, or
1293    /// a dictionary `capability`.
1294    pub target: Option<Ref>,
1295    /// (Required) The name by which the capability is being offered.
1296    pub target_name: Option<String>,
1297    /// (Optional) The maximum rights that can be set by a component using this
1298    /// directory. IF unset, the rights are inherited from `source`.
1299    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1300    /// (Optional) The subdirectory of this directory to offer instead of the
1301    /// root. Optional.
1302    pub subdir: Option<String>,
1303    /// (Required) The dependency type this offer represents. A component which
1304    /// receives a weak offer must support the offered capability being
1305    /// unavailable at any point.
1306    pub dependency_type: Option<DependencyType>,
1307    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1308    /// If set to `required`, the target may use or offer the capability with
1309    /// either `required` or `optional` availability. If set to `optional`, the
1310    /// target must use or offer the capability with `optional` availability.
1311    /// The `same_as_target` value causes this offer's availability to match the
1312    /// availability set in the target.
1313    pub availability: Option<Availability>,
1314    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1315    /// If this field is absent, `source_name` identifies a capability directly routed
1316    /// by `source`. If set, `source_name` identifies a capability nested inside this
1317    /// dictionary.
1318    pub source_dictionary: Option<String>,
1319    #[doc(hidden)]
1320    pub __source_breaking: fidl::marker::SourceBreaking,
1321}
1322
1323impl fidl::Persistable for OfferDirectory {}
1324
1325/// Declares an event stream offered by a component.
1326#[derive(Clone, Debug, Default, PartialEq)]
1327pub struct OfferEventStream {
1328    /// (Required) The provider of the capability relative to the component
1329    /// itself. Must be `parent`, `framework`, `child`, or `void`. If set to
1330    /// `void`, then the target must offer or use the capability with `OPTIONAL`
1331    /// or `TRANSITIONAL` availability.
1332    pub source: Option<Ref>,
1333    /// (Required) Name of the event being offered.
1334    pub source_name: Option<String>,
1335    /// (Optional) When an event is offered from framework, the scope is
1336    /// required and allows one to define the child (or array of children) which
1337    /// the event is about. When the event is offered from parent, the scope can
1338    /// be used to downscope the event to a certain child scope, otherwise the
1339    /// event will carry the scope coming from the parent.
1340    pub scope: Option<Vec<Ref>>,
1341    /// (Required) The destination to which the event stream is offered.
1342    pub target: Option<Ref>,
1343    /// (Required) Name under which the event stream is being offered.
1344    pub target_name: Option<String>,
1345    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1346    /// If set to `required`, the target may use or offer the capability with
1347    /// either `required` or `optional` availability. If set to `optional`, the
1348    /// target must use or offer the capability with `optional` availability.
1349    /// The `same_as_target` value causes this offer's availability to match the
1350    /// availability set in the target.
1351    pub availability: Option<Availability>,
1352    #[doc(hidden)]
1353    pub __source_breaking: fidl::marker::SourceBreaking,
1354}
1355
1356impl fidl::Persistable for OfferEventStream {}
1357
1358/// Declares a protocol offered by a component to one of its children,
1359/// which may have been offered by the component's containing realm, the
1360/// component itself, or one of its other children.
1361///
1362/// To learn more about protocols, see:
1363/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1364#[derive(Clone, Debug, Default, PartialEq)]
1365pub struct OfferProtocol {
1366    /// (Required) The provider of the capability relative to the component
1367    /// itself. Must be `parent`, `self`, `child`, or `void`.
1368    /// If set to `void`, then the target must offer or use the capability with
1369    /// `OPTIONAL` or `TRANSITIONAL` availability.
1370    pub source: Option<Ref>,
1371    /// (Required) Name identifying the protocol being offered.
1372    pub source_name: Option<String>,
1373    /// (Required) Reference to the target. Must be `child`, `collection`, or
1374    /// a dictionary `capability`.
1375    pub target: Option<Ref>,
1376    /// (Required) The name by which the capability is being offered.
1377    pub target_name: Option<String>,
1378    /// (Required) The dependency type this offer represents. A component which
1379    /// receives a weak offer must support the offered capability being
1380    /// unavailable at any point.
1381    pub dependency_type: Option<DependencyType>,
1382    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1383    /// If set to `required`, the target may use or offer the capability with
1384    /// either `required` or `optional` availability. If set to `optional`, the
1385    /// target must use or offer the capability with `optional` availability.
1386    /// The `same_as_target` value causes this offer's availability to match the
1387    /// availability set in the target.
1388    pub availability: Option<Availability>,
1389    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1390    /// If this field is absent, `source_name` identifies a capability directly routed
1391    /// by `source`. If set, `source_name` identifies a capability nested inside this
1392    /// dictionary.
1393    pub source_dictionary: Option<String>,
1394    #[doc(hidden)]
1395    pub __source_breaking: fidl::marker::SourceBreaking,
1396}
1397
1398impl fidl::Persistable for OfferProtocol {}
1399
1400/// Declares a resolver capability offered by a component to one of its children, which
1401/// may have been offered by the component's containing realm, the component itself,
1402/// or one of its other children.
1403#[derive(Clone, Debug, Default, PartialEq)]
1404pub struct OfferResolver {
1405    /// (Required) The provider of the capability relative to the component
1406    /// itself. Must be `parent`, `self`, `child`, or `void`.
1407    /// If set to `void`, then the target must offer or use the capability with
1408    /// `OPTIONAL` or `TRANSITIONAL` availability.
1409    pub source: Option<Ref>,
1410    /// (Required) Name of the resolver being offered.
1411    pub source_name: Option<String>,
1412    /// (Required) Reference to the target. Must be `child`, `collection`, or
1413    /// a dictionary `capability`.
1414    pub target: Option<Ref>,
1415    /// (Required) Name under which the capability is being offered.
1416    pub target_name: Option<String>,
1417    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1418    /// If this field is absent, `source_name` identifies a capability directly routed
1419    /// by `source`. If set, `source_name` identifies a capability nested inside this
1420    /// dictionary.
1421    pub source_dictionary: Option<String>,
1422    #[doc(hidden)]
1423    pub __source_breaking: fidl::marker::SourceBreaking,
1424}
1425
1426impl fidl::Persistable for OfferResolver {}
1427
1428/// Declares a runner offered by a component to one of its children, which may
1429/// have been offered by the component's containing realm, the component itself,
1430/// or one of its other children.
1431#[derive(Clone, Debug, Default, PartialEq)]
1432pub struct OfferRunner {
1433    /// (Required) The provider of the capability relative to the component
1434    /// itself. Must be `parent`, `self`, `child`, or `void`.
1435    /// If set to `void`, then the target must offer or use the capability with
1436    /// `OPTIONAL` or `TRANSITIONAL` availability.
1437    pub source: Option<Ref>,
1438    /// (Required) Name of the runner being offered.
1439    pub source_name: Option<String>,
1440    /// (Required) Reference to the target. Must be `child`, `collection`, or
1441    /// a dictionary `capability`.
1442    pub target: Option<Ref>,
1443    /// (Required) Name under which the capability is being offered.
1444    pub target_name: Option<String>,
1445    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1446    /// If this field is absent, `source_name` identifies a capability directly routed
1447    /// by `source`. If set, `source_name` identifies a capability nested inside this
1448    /// dictionary.
1449    pub source_dictionary: Option<String>,
1450    #[doc(hidden)]
1451    pub __source_breaking: fidl::marker::SourceBreaking,
1452}
1453
1454impl fidl::Persistable for OfferRunner {}
1455
1456/// Declares a service offered by a component to one of its children, which may
1457/// have been offered by the component's containing realm, the component itself,
1458/// or one of its other children.
1459///
1460/// To learn more about services, see:
1461/// https://fuchsia.dev/fuchsia-src/glossary#service
1462#[derive(Clone, Debug, Default, PartialEq)]
1463pub struct OfferService {
1464    /// (Required) The provider of the capability relative to the component
1465    /// itself. Must be `parent`, `self`, `child`, or `void`.
1466    /// If set to `void`, then the target must offer or use the capability with
1467    /// `OPTIONAL` or `TRANSITIONAL` availability.
1468    pub source: Option<Ref>,
1469    /// (Required) Name identifying the service being offered.
1470    pub source_name: Option<String>,
1471    /// (Required) Reference to the target. Must be `child`, `collection`, or
1472    /// a dictionary `capability`.
1473    pub target: Option<Ref>,
1474    /// (Required) The name under which the capability is being offered.
1475    pub target_name: Option<String>,
1476    /// (Optional) The list of allowlisted instances to be offered. Instances
1477    /// of the service not in this list will not be accessible by the target
1478    /// component. If this is not set that means all instances from the source
1479    /// service are offered.
1480    pub source_instance_filter: Option<Vec<String>>,
1481    /// (Optional) The list of allowlisted instances to be offered, with
1482    /// renames.
1483    ///
1484    /// If this is set and nonempty, the set of instances in the target service
1485    /// will be restricted to the instances in this list, renaming `source_name`
1486    /// to `target_name`.
1487    ///
1488    /// If it is set and nonempty, `source_instance_filter` will further
1489    /// restrict the set of instances to those whose `target_name` appears in
1490    /// that list. There is generally no reason to set both, but we support it
1491    /// for compatibility.
1492    pub renamed_instances: Option<Vec<NameMapping>>,
1493    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1494    /// If set to `required`, the target may use or offer the capability with
1495    /// either `required` or `optional` availability. If set to `optional`, the
1496    /// target must use or offer the capability with `optional` availability.
1497    /// The `same_as_target` value causes this offer's availability to match the
1498    /// availability set in the target.
1499    pub availability: Option<Availability>,
1500    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1501    /// If this field is absent, `source_name` identifies a capability directly routed
1502    /// by `source`. If set, `source_name` identifies a capability nested inside this
1503    /// dictionary.
1504    pub source_dictionary: Option<String>,
1505    /// (Optional, defaults to `STRONG`) The dependency type this offer represents.
1506    /// A component which receives a weak offer must support the offered capability being
1507    /// unavailable at any point.
1508    pub dependency_type: Option<DependencyType>,
1509    #[doc(hidden)]
1510    pub __source_breaking: fidl::marker::SourceBreaking,
1511}
1512
1513impl fidl::Persistable for OfferService {}
1514
1515/// Declares a storage capability offered by a component to one of its children,
1516/// such as meta storage offered by the component's containing realm or cache
1517/// storage offered by the component itself.
1518#[derive(Clone, Debug, Default, PartialEq)]
1519pub struct OfferStorage {
1520    /// (Required) The name of the storage capability being offered
1521    pub source_name: Option<String>,
1522    /// (Required) The provider of the capability relative to the component
1523    /// itself. Must be `parent`, `self`, `child`, or `void`.
1524    /// If set to `void`, then the target must offer or use the capability with
1525    /// `OPTIONAL` or `TRANSITIONAL` availability.
1526    pub source: Option<Ref>,
1527    /// (Required) Reference to the target. Must be `child`, `collection`, or
1528    /// a dictionary `capability`.
1529    pub target: Option<Ref>,
1530    /// (Required) The name the storage capability is being offered as
1531    pub target_name: Option<String>,
1532    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1533    /// If set to `required`, the target may use or offer the capability with
1534    /// either `required` or `optional` availability. If set to `optional`, the
1535    /// target must use or offer the capability with `optional` availability.
1536    /// The `same_as_target` value causes this offer's availability to match the
1537    /// availability set in the target.
1538    pub availability: Option<Availability>,
1539    #[doc(hidden)]
1540    pub __source_breaking: fidl::marker::SourceBreaking,
1541}
1542
1543impl fidl::Persistable for OfferStorage {}
1544
1545/// A program declaration.
1546///
1547/// This declaration is set by executable components to designate the runner to
1548/// use and pass runner-specific program information to it.
1549///
1550/// To learn more about runners, see:
1551/// https://fuchsia.dev/fuchsia-src/glossary#runner
1552#[derive(Clone, Debug, Default, PartialEq)]
1553pub struct Program {
1554    /// The name of the runner to use to run the component. Must match a `RunnerRegistration` in the
1555    /// component's environment. If this value is not supplied, the component must 'use' a runner.
1556    /// If this value is supplied, the component may 'use' a runner, but it must be identical
1557    /// (matching name, from environment).
1558    pub runner: Option<String>,
1559    /// (Required) Information about the program to run when the component is
1560    /// executed. The component manager provides the contents of this dictionary
1561    /// to the runner when executing this program.
1562    ///
1563    /// For instance, this might contain a path to the program's executable
1564    /// image, or program arguments.
1565    ///
1566    /// * The keys represent namespaced properties, delimited by ".".
1567    /// * Properties may be nested in values, but only in the case of an object
1568    /// vector.
1569    pub info: Option<fidl_fuchsia_data__common::Dictionary>,
1570    #[doc(hidden)]
1571    pub __source_breaking: fidl::marker::SourceBreaking,
1572}
1573
1574impl fidl::Persistable for Program {}
1575
1576/// Declares a protocol capability backed by this component.
1577///
1578/// To learn more about protocols, see:
1579/// https://fuchsia.dev/fuchsia-src/glossary#protocol
1580#[derive(Clone, Debug, Default, PartialEq)]
1581pub struct Protocol {
1582    /// (Required) The name of this protocol.
1583    pub name: Option<String>,
1584    /// (Optional) The path to the protocol in the component's outgoing
1585    /// directory.
1586    ///
1587    /// Not set for built-in capabilities.
1588    pub source_path: Option<String>,
1589    /// (Optional, defaults to `EAGER`) specifies when the framework will open
1590    /// the protocol from this component's outgoing directory when someone
1591    /// requests the capability. See details on `DeliveryType`.
1592    pub delivery: Option<DeliveryType>,
1593    #[doc(hidden)]
1594    pub __source_breaking: fidl::marker::SourceBreaking,
1595}
1596
1597impl fidl::Persistable for Protocol {}
1598
1599/// Declares a resolver which is responsible for resolving component URLs to
1600/// actual components. See `fuchsia.component.resolution.Resolver` for the
1601/// protocol resolvers are expected to implement.
1602#[derive(Clone, Debug, Default, PartialEq)]
1603pub struct Resolver {
1604    /// (Required) The name of this resolver.
1605    ///
1606    /// Must be unique among resolvers declared in the same `ComponentDecl`.
1607    pub name: Option<String>,
1608    /// (Optional) The path to the resolver protocol in the component's outgoing
1609    /// directory
1610    ///
1611    /// Not set for built-in capabilities.
1612    pub source_path: Option<String>,
1613    #[doc(hidden)]
1614    pub __source_breaking: fidl::marker::SourceBreaking,
1615}
1616
1617impl fidl::Persistable for Resolver {}
1618
1619/// A mapping of URL scheme to resolver name.
1620#[derive(Clone, Debug, Default, PartialEq)]
1621pub struct ResolverRegistration {
1622    /// (Required) The name of the resolver.
1623    pub resolver: Option<String>,
1624    /// (Required) The provider of the capability relative to the component
1625    /// itself. Must be `parent`, `self`, or `child`.
1626    pub source: Option<Ref>,
1627    /// (Required) The URL scheme the resolver is registered to handle. Only one
1628    /// resolver may be registered to a particular URL scheme. The URL scheme
1629    /// must start with a lowercase ASCII letter (a-z), and may contain
1630    /// lowercase ASCII letters, digits, `+`, `-`, and `.`.
1631    pub scheme: Option<String>,
1632    #[doc(hidden)]
1633    pub __source_breaking: fidl::marker::SourceBreaking,
1634}
1635
1636impl fidl::Persistable for ResolverRegistration {}
1637
1638/// Declares a runner capability backed by a service.
1639#[derive(Clone, Debug, Default, PartialEq)]
1640pub struct Runner {
1641    /// (Required) The name of this runner.
1642    ///
1643    /// Must unique among runners declared in the same `ComponentDecl`.
1644    pub name: Option<String>,
1645    /// (Optional) The path to the runner protocol in the component's outgoing
1646    /// directory.
1647    ///
1648    /// Not set for built-in capabilities.
1649    pub source_path: Option<String>,
1650    #[doc(hidden)]
1651    pub __source_breaking: fidl::marker::SourceBreaking,
1652}
1653
1654impl fidl::Persistable for Runner {}
1655
1656/// A repository of the runners available in an environment.
1657#[derive(Clone, Debug, Default, PartialEq)]
1658pub struct RunnerRegistration {
1659    /// (Required) The name of the runner capability as it's exposed to,
1660    /// offered, or defined by this component.
1661    pub source_name: Option<String>,
1662    /// (Required) The provider of the capability relative to the component
1663    /// itself. Must be `parent`, `self`, or `child`.
1664    pub source: Option<Ref>,
1665    /// (Required) The name by which the runner is made available in this
1666    /// environment.
1667    pub target_name: Option<String>,
1668    #[doc(hidden)]
1669    pub __source_breaking: fidl::marker::SourceBreaking,
1670}
1671
1672impl fidl::Persistable for RunnerRegistration {}
1673
1674/// Declares a service capability backed by this component.
1675///
1676/// To learn more about services, see:
1677/// https://fuchsia.dev/fuchsia-src/glossary#service
1678#[derive(Clone, Debug, Default, PartialEq)]
1679pub struct Service {
1680    /// (Required) The name of this service.
1681    pub name: Option<String>,
1682    /// (Optional) The path to the service in the component's outgoing
1683    /// directory.
1684    ///
1685    /// Not set for built-in capabilities.
1686    pub source_path: Option<String>,
1687    #[doc(hidden)]
1688    pub __source_breaking: fidl::marker::SourceBreaking,
1689}
1690
1691impl fidl::Persistable for Service {}
1692
1693/// Declares a storage capability backed by a directory from which data, cache,
1694/// or meta storage can be offered.
1695#[derive(Clone, Debug, Default, PartialEq)]
1696pub struct Storage {
1697    /// (Required) The name of this storage
1698    pub name: Option<String>,
1699    /// (Required) The provider of the backing directory capability relative to
1700    /// the component itself. Must be `parent`, `self`, or `child`.
1701    pub source: Option<Ref>,
1702    /// (Required) The name of the directory capability from `source` that backs
1703    /// the storage.
1704    pub backing_dir: Option<String>,
1705    /// (Optional) The subdirectory of the source directory that will back the
1706    /// storage
1707    pub subdir: Option<String>,
1708    /// (Required) This enum determines how to key a component's isolated
1709    /// storage directory. Each option corresponds to a different key'ing
1710    /// strategy.
1711    pub storage_id: Option<StorageId>,
1712    #[doc(hidden)]
1713    pub __source_breaking: fidl::marker::SourceBreaking,
1714}
1715
1716impl fidl::Persistable for Storage {}
1717
1718#[derive(Clone, Debug, Default, PartialEq)]
1719pub struct UseConfiguration {
1720    /// (Required) The provider of the configuration relative to the component
1721    /// itself. Must be `parent`, `self`, `child`.
1722    pub source: Option<Ref>,
1723    /// (Required) Name identifying the configuration, by which it was presented to this
1724    /// component.
1725    pub source_name: Option<String>,
1726    /// (Required) The name that the component sees for this configuration.
1727    /// This must match a key in the 'config' schema for this component. The
1728    /// matching config field's type must match this configuration type.
1729    pub target_name: Option<String>,
1730    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1731    /// If set to `required`, the component is likely to malfunction if this
1732    /// capability is not provided. If set to `optional`, the component can
1733    /// handle the capability's absence.
1734    pub availability: Option<Availability>,
1735    /// (Required) The type of this config value. If `target_name` matches a
1736    /// key in the `config` schema, then this type must match that type.
1737    pub type_: Option<ConfigType>,
1738    /// (Optional): If this is set, this is the value that will be provided via routing
1739    /// if the capability is successfully routed from void.
1740    pub default: Option<ConfigValue>,
1741    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1742    /// If this field is absent, `source_name` identifies a capability directly routed
1743    /// by `source`. If set, `source_name` identifies a capability nested inside this
1744    /// dictionary.
1745    pub source_dictionary: Option<String>,
1746    #[doc(hidden)]
1747    pub __source_breaking: fidl::marker::SourceBreaking,
1748}
1749
1750impl fidl::Persistable for UseConfiguration {}
1751
1752#[derive(Clone, Debug, Default, PartialEq)]
1753pub struct UseDictionary {
1754    /// (Required) The provider of the dictionary relative to the component
1755    /// itself.
1756    pub source: Option<Ref>,
1757    /// (Required) Name identifying the directory, by which it was presented to
1758    /// this component.
1759    pub source_name: Option<String>,
1760    /// (Required) The path where the capability should be installed in the
1761    /// component's namespace.
1762    ///
1763    /// Must be an absolute path starting with /.
1764    pub target_path: Option<String>,
1765    /// (Required) The dependency type this use represents.
1766    ///
1767    /// A component which offers a capability to a child from itself and uses a
1768    /// capability from the same child, must mark the dependency as `weak`.  A
1769    /// `weak` dependency implies that the capability may become unavailable at
1770    /// any point. Taking a strong dependency on a child's capability will
1771    /// cause this the child to shut down before its parent. When using a weak
1772    /// dependency, the parent shuts down before the child.
1773    pub dependency_type: Option<DependencyType>,
1774    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1775    /// If set to `required`, the component is likely to malfunction if this
1776    /// capability is not provided. If set to `optional`, the component can
1777    /// handle the capability's absence.
1778    pub availability: Option<Availability>,
1779    /// (Optional) Path in a dictionary provided by `source` which contains
1780    /// `source_name`. If this field is absent, `source_name` identifies a
1781    /// capability directly routed by `source`. If set, `source_name` identifies
1782    /// a capability nested inside this dictionary.
1783    pub source_dictionary: Option<String>,
1784    #[doc(hidden)]
1785    pub __source_breaking: fidl::marker::SourceBreaking,
1786}
1787
1788impl fidl::Persistable for UseDictionary {}
1789
1790/// Declares a directory used by a component, which was offered to it.
1791#[derive(Clone, Debug, Default, PartialEq)]
1792pub struct UseDirectory {
1793    /// (Required) The provider of the directory relative to the component
1794    /// itself. Must be `parent`, `framework`,  or `child`.
1795    pub source: Option<Ref>,
1796    /// (Required) Name identifying the directory, by which it was presented to
1797    /// this component.
1798    pub source_name: Option<String>,
1799    /// (Required) The path where the capability should be installed in the
1800    /// component's namespace.
1801    ///
1802    /// Must be an absolute path starting with /.
1803    pub target_path: Option<String>,
1804    /// (Required) The rights required by the component to use this directory.
1805    pub rights: Option<fidl_fuchsia_io__common::Operations>,
1806    /// (Optional) The subdirectory of this directory to use instead of the
1807    /// root.
1808    pub subdir: Option<String>,
1809    /// (Required) The dependency type this use represents.
1810    ///
1811    /// A component which offers a capability to a child from itself and uses a
1812    /// capability from the same child, must mark the dependency as `weak`.  A
1813    /// `weak` dependency implies that the capability may become unavailable at
1814    /// any point. Taking a strong dependency on a child's capability will
1815    /// cause this the child to shut down before its parent. When using a weak
1816    /// dependency, the parent shuts down before the child.
1817    pub dependency_type: Option<DependencyType>,
1818    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1819    /// If set to `required`, the component is likely to malfunction if this
1820    /// capability is not provided. If set to `optional`, the component can
1821    /// handle the capability's absence.
1822    pub availability: Option<Availability>,
1823    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1824    /// If this field is absent, `source_name` identifies a capability directly routed
1825    /// by `source`. If set, `source_name` identifies a capability nested inside this
1826    /// dictionary.
1827    pub source_dictionary: Option<String>,
1828    #[doc(hidden)]
1829    pub __source_breaking: fidl::marker::SourceBreaking,
1830}
1831
1832impl fidl::Persistable for UseDirectory {}
1833
1834/// Declares an EventStream used by a component.
1835#[derive(Clone, Debug, Default, PartialEq)]
1836pub struct UseEventStream {
1837    /// (Required) The names of the event streams.
1838    pub source_name: Option<String>,
1839    /// (Required) The provider of the event. Must be `parent`, `framework`, or `child`.
1840    pub source: Option<Ref>,
1841    /// (Optional) When an event is used from framework, the scope is required
1842    /// to specify the child (or array of children) which the event will be
1843    /// about. When the event is used from parent, the scope can be used to
1844    /// downscope the event to a certain child scope, otherwise the event will
1845    /// carry the scope coming from the parent.
1846    pub scope: Option<Vec<Ref>>,
1847    /// (Required) The path where the capability should be installed in the
1848    /// component's namespace. Must be an absolute path starting with /.
1849    pub target_path: Option<String>,
1850    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1851    /// If set to `required`, the component is likely to malfunction if this
1852    /// capability is not provided. If set to `optional`, the component can
1853    /// handle the capability's absence.
1854    pub availability: Option<Availability>,
1855    /// (Optional) Filter for the event stream. The structure of the filter
1856    /// depends on the event stream type. Only supported for the
1857    /// `CapabilityRequested` event type.
1858    pub filter: Option<fidl_fuchsia_data__common::Dictionary>,
1859    #[doc(hidden)]
1860    pub __source_breaking: fidl::marker::SourceBreaking,
1861}
1862
1863impl fidl::Persistable for UseEventStream {}
1864
1865/// Declares a protocol used by a component, which was offered to it.
1866///
1867/// A protocol is a service with a single instance, provided by a single FIDL
1868/// protocol.
1869#[derive(Clone, Debug, Default, PartialEq)]
1870pub struct UseProtocol {
1871    /// (Required) The provider of the protocol relative to the component
1872    /// itself. Must be `parent`, `framework`, `debug`, `capability` or `child`.
1873    pub source: Option<Ref>,
1874    /// (Required) Name identifying the protocol, by which it was presented to this
1875    /// component.
1876    pub source_name: Option<String>,
1877    /// (Required) The path where the capability should be installed in the component's
1878    /// namespace.
1879    ///
1880    /// Must be an absolute path starting with /.
1881    pub target_path: Option<String>,
1882    /// (Required) The dependency type this use represents.
1883    ///
1884    /// A component which offers a capability to a child from itself and uses a
1885    /// capability from the same child, must mark the dependency as `weak`.  A
1886    /// `weak` dependency implies that the capability may become unavailable at
1887    /// any point. Taking a strong dependency on a child's capability will
1888    /// cause this the child to shut down before its parent. When using a weak
1889    /// dependency, the parent shuts down before the child.
1890    pub dependency_type: Option<DependencyType>,
1891    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1892    /// If set to `required`, the component is likely to malfunction if this
1893    /// capability is not provided. If set to `optional`, the component can
1894    /// handle the capability's absence.
1895    pub availability: Option<Availability>,
1896    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1897    /// If this field is absent, `source_name` identifies a capability directly routed
1898    /// by `source`. If set, `source_name` identifies a capability nested inside this
1899    /// dictionary.
1900    pub source_dictionary: Option<String>,
1901    /// (Optional) A processargs ordinal (zircon/processargs.h) by which a channel to this protocol
1902    /// will be delivered to the component's processargs.
1903    ///
1904    /// Must be a valid processargs ordinal defined in `zircon/processargs.h`.
1905    ///
1906    /// If this is set, we still require `target_path` to also be set, although we could relax this
1907    /// restriction in the future.
1908    pub numbered_handle: Option<u8>,
1909    #[doc(hidden)]
1910    pub __source_breaking: fidl::marker::SourceBreaking,
1911}
1912
1913impl fidl::Persistable for UseProtocol {}
1914
1915/// Declares runner used by a component.
1916#[derive(Clone, Debug, Default, PartialEq)]
1917pub struct UseRunner {
1918    /// (Required) The provider of the runner relative to the component.
1919    /// Must be `parent`, `child`, `framework`, or `environment`.
1920    pub source: Option<Ref>,
1921    /// (Required) Name identifying the runner, by which it was presented to this
1922    /// component.
1923    pub source_name: Option<String>,
1924    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1925    /// If this field is absent, `source_name` identifies a capability directly routed
1926    /// by `source`. If set, `source_name` identifies a capability nested inside this
1927    /// dictionary.
1928    pub source_dictionary: Option<String>,
1929    #[doc(hidden)]
1930    pub __source_breaking: fidl::marker::SourceBreaking,
1931}
1932
1933impl fidl::Persistable for UseRunner {}
1934
1935/// Declares a service used by a component, which was offered to it.
1936///
1937/// To learn more about services, see:
1938/// https://fuchsia.dev/fuchsia-src/glossary#service
1939#[derive(Clone, Debug, Default, PartialEq)]
1940pub struct UseService {
1941    /// (Required) The provider of the protocol relative to the component
1942    /// itself. Must be `parent`, `framework`, `self`, or `child`.
1943    pub source: Option<Ref>,
1944    /// (Required) Name identifying the service, by which it was presented to
1945    /// this component.
1946    pub source_name: Option<String>,
1947    /// (Required) The path where the capability should be installed in the
1948    /// component's namespace.
1949    ///
1950    /// Must be an absolute path starting with /.
1951    pub target_path: Option<String>,
1952    /// (Required) The dependency type this use represents.
1953    ///
1954    /// A component which offers a capability to a child from itself and uses a
1955    /// capability from the same child, must mark the dependency as `weak`.  A
1956    /// `weak` dependency implies that the capability may become unavailable at
1957    /// any point. Taking a strong dependency on a child's capability will
1958    /// cause the child to shut down before its parent. When using a weak
1959    /// dependency, the parent shuts down before the child.
1960    pub dependency_type: Option<DependencyType>,
1961    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1962    /// If set to `required`, the component is likely to malfunction if this
1963    /// capability is not provided. If set to `optional`, the component can
1964    /// handle the capability's absence.
1965    pub availability: Option<Availability>,
1966    /// (Optional) Path in a dictionary provided by `source` which contains `source_name`.
1967    /// If this field is absent, `source_name` identifies a capability directly routed
1968    /// by `source`. If set, `source_name` identifies a capability nested inside this
1969    /// dictionary.
1970    pub source_dictionary: Option<String>,
1971    #[doc(hidden)]
1972    pub __source_breaking: fidl::marker::SourceBreaking,
1973}
1974
1975impl fidl::Persistable for UseService {}
1976
1977/// Declares storage used by a component, which was offered to it.
1978#[derive(Clone, Debug, Default, PartialEq)]
1979pub struct UseStorage {
1980    /// (Required) Name identifying the storage, by which it was presented to
1981    /// this component.
1982    pub source_name: Option<String>,
1983    /// (Required) The path where the capability should be installed in the
1984    /// component's namespace.
1985    ///
1986    /// Must be an absolute path starting with /.
1987    pub target_path: Option<String>,
1988    /// (Optional, defaults to `REQUIRED`) The availability of this capability.
1989    /// If set to `required`, the component is likely to malfunction if this
1990    /// capability is not provided. If set to `optional`, the component can
1991    /// handle the capability's absence.
1992    pub availability: Option<Availability>,
1993    #[doc(hidden)]
1994    pub __source_breaking: fidl::marker::SourceBreaking,
1995}
1996
1997impl fidl::Persistable for UseStorage {}
1998
1999/// Declares a capability defined by this component.
2000#[derive(Clone, Debug)]
2001pub enum Capability {
2002    Service(Service),
2003    Protocol(Protocol),
2004    Directory(Directory),
2005    Storage(Storage),
2006    Runner(Runner),
2007    Resolver(Resolver),
2008    EventStream(EventStream),
2009    Dictionary(Dictionary),
2010    Config(Configuration),
2011    #[doc(hidden)]
2012    __SourceBreaking {
2013        unknown_ordinal: u64,
2014    },
2015}
2016
2017/// Pattern that matches an unknown `Capability` member.
2018#[macro_export]
2019macro_rules! CapabilityUnknown {
2020    () => {
2021        _
2022    };
2023}
2024
2025// Custom PartialEq so that unknown variants are not equal to themselves.
2026impl PartialEq for Capability {
2027    fn eq(&self, other: &Self) -> bool {
2028        match (self, other) {
2029            (Self::Service(x), Self::Service(y)) => *x == *y,
2030            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2031            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2032            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2033            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2034            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2035            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2036            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2037            (Self::Config(x), Self::Config(y)) => *x == *y,
2038            _ => false,
2039        }
2040    }
2041}
2042
2043impl Capability {
2044    #[inline]
2045    pub fn ordinal(&self) -> u64 {
2046        match *self {
2047            Self::Service(_) => 1,
2048            Self::Protocol(_) => 2,
2049            Self::Directory(_) => 3,
2050            Self::Storage(_) => 4,
2051            Self::Runner(_) => 5,
2052            Self::Resolver(_) => 6,
2053            Self::EventStream(_) => 8,
2054            Self::Dictionary(_) => 9,
2055            Self::Config(_) => 10,
2056            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2057        }
2058    }
2059
2060    #[inline]
2061    pub fn unknown_variant_for_testing() -> Self {
2062        Self::__SourceBreaking { unknown_ordinal: 0 }
2063    }
2064
2065    #[inline]
2066    pub fn is_unknown(&self) -> bool {
2067        match self {
2068            Self::__SourceBreaking { .. } => true,
2069            _ => false,
2070        }
2071    }
2072}
2073
2074impl fidl::Persistable for Capability {}
2075
2076/// The checksum produced for a configuration interface.
2077/// Two configuration interfaces are the same if their checksums are the same.
2078#[derive(Clone, Debug)]
2079pub enum ConfigChecksum {
2080    /// A SHA-256 hash produced over a component's config interface.
2081    Sha256([u8; 32]),
2082    #[doc(hidden)]
2083    __SourceBreaking { unknown_ordinal: u64 },
2084}
2085
2086/// Pattern that matches an unknown `ConfigChecksum` member.
2087#[macro_export]
2088macro_rules! ConfigChecksumUnknown {
2089    () => {
2090        _
2091    };
2092}
2093
2094// Custom PartialEq so that unknown variants are not equal to themselves.
2095impl PartialEq for ConfigChecksum {
2096    fn eq(&self, other: &Self) -> bool {
2097        match (self, other) {
2098            (Self::Sha256(x), Self::Sha256(y)) => *x == *y,
2099            _ => false,
2100        }
2101    }
2102}
2103
2104impl ConfigChecksum {
2105    #[inline]
2106    pub fn ordinal(&self) -> u64 {
2107        match *self {
2108            Self::Sha256(_) => 1,
2109            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2110        }
2111    }
2112
2113    #[inline]
2114    pub fn unknown_variant_for_testing() -> Self {
2115        Self::__SourceBreaking { unknown_ordinal: 0 }
2116    }
2117
2118    #[inline]
2119    pub fn is_unknown(&self) -> bool {
2120        match self {
2121            Self::__SourceBreaking { .. } => true,
2122            _ => false,
2123        }
2124    }
2125}
2126
2127impl fidl::Persistable for ConfigChecksum {}
2128
2129/// A single configuration value.
2130#[derive(Clone, Debug)]
2131pub enum ConfigSingleValue {
2132    Bool(bool),
2133    Uint8(u8),
2134    Uint16(u16),
2135    Uint32(u32),
2136    Uint64(u64),
2137    Int8(i8),
2138    Int16(i16),
2139    Int32(i32),
2140    Int64(i64),
2141    String(String),
2142    #[doc(hidden)]
2143    __SourceBreaking {
2144        unknown_ordinal: u64,
2145    },
2146}
2147
2148/// Pattern that matches an unknown `ConfigSingleValue` member.
2149#[macro_export]
2150macro_rules! ConfigSingleValueUnknown {
2151    () => {
2152        _
2153    };
2154}
2155
2156// Custom PartialEq so that unknown variants are not equal to themselves.
2157impl PartialEq for ConfigSingleValue {
2158    fn eq(&self, other: &Self) -> bool {
2159        match (self, other) {
2160            (Self::Bool(x), Self::Bool(y)) => *x == *y,
2161            (Self::Uint8(x), Self::Uint8(y)) => *x == *y,
2162            (Self::Uint16(x), Self::Uint16(y)) => *x == *y,
2163            (Self::Uint32(x), Self::Uint32(y)) => *x == *y,
2164            (Self::Uint64(x), Self::Uint64(y)) => *x == *y,
2165            (Self::Int8(x), Self::Int8(y)) => *x == *y,
2166            (Self::Int16(x), Self::Int16(y)) => *x == *y,
2167            (Self::Int32(x), Self::Int32(y)) => *x == *y,
2168            (Self::Int64(x), Self::Int64(y)) => *x == *y,
2169            (Self::String(x), Self::String(y)) => *x == *y,
2170            _ => false,
2171        }
2172    }
2173}
2174
2175impl ConfigSingleValue {
2176    #[inline]
2177    pub fn ordinal(&self) -> u64 {
2178        match *self {
2179            Self::Bool(_) => 1,
2180            Self::Uint8(_) => 2,
2181            Self::Uint16(_) => 3,
2182            Self::Uint32(_) => 4,
2183            Self::Uint64(_) => 5,
2184            Self::Int8(_) => 6,
2185            Self::Int16(_) => 7,
2186            Self::Int32(_) => 8,
2187            Self::Int64(_) => 9,
2188            Self::String(_) => 10,
2189            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2190        }
2191    }
2192
2193    #[inline]
2194    pub fn unknown_variant_for_testing() -> Self {
2195        Self::__SourceBreaking { unknown_ordinal: 0 }
2196    }
2197
2198    #[inline]
2199    pub fn is_unknown(&self) -> bool {
2200        match self {
2201            Self::__SourceBreaking { .. } => true,
2202            _ => false,
2203        }
2204    }
2205}
2206
2207impl fidl::Persistable for ConfigSingleValue {}
2208
2209/// A configuration value which can be provided to a component.
2210///
2211/// Used both for storing configuration at-rest and in runtime configuration APIs.
2212#[derive(Clone, Debug)]
2213pub enum ConfigValue {
2214    Single(ConfigSingleValue),
2215    Vector(ConfigVectorValue),
2216    #[doc(hidden)]
2217    __SourceBreaking {
2218        unknown_ordinal: u64,
2219    },
2220}
2221
2222/// Pattern that matches an unknown `ConfigValue` member.
2223#[macro_export]
2224macro_rules! ConfigValueUnknown {
2225    () => {
2226        _
2227    };
2228}
2229
2230// Custom PartialEq so that unknown variants are not equal to themselves.
2231impl PartialEq for ConfigValue {
2232    fn eq(&self, other: &Self) -> bool {
2233        match (self, other) {
2234            (Self::Single(x), Self::Single(y)) => *x == *y,
2235            (Self::Vector(x), Self::Vector(y)) => *x == *y,
2236            _ => false,
2237        }
2238    }
2239}
2240
2241impl ConfigValue {
2242    #[inline]
2243    pub fn ordinal(&self) -> u64 {
2244        match *self {
2245            Self::Single(_) => 1,
2246            Self::Vector(_) => 2,
2247            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2248        }
2249    }
2250
2251    #[inline]
2252    pub fn unknown_variant_for_testing() -> Self {
2253        Self::__SourceBreaking { unknown_ordinal: 0 }
2254    }
2255
2256    #[inline]
2257    pub fn is_unknown(&self) -> bool {
2258        match self {
2259            Self::__SourceBreaking { .. } => true,
2260            _ => false,
2261        }
2262    }
2263}
2264
2265impl fidl::Persistable for ConfigValue {}
2266
2267/// Strategies available for resolving configuration values.
2268#[derive(Clone, Debug)]
2269pub enum ConfigValueSource {
2270    /// (Required) The path within the component's package at which to find config value files.
2271    PackagePath(String),
2272    /// If this is set, then all of the config values are found through CML files.
2273    Capabilities(ConfigSourceCapabilities),
2274    #[doc(hidden)]
2275    __SourceBreaking { unknown_ordinal: u64 },
2276}
2277
2278/// Pattern that matches an unknown `ConfigValueSource` member.
2279#[macro_export]
2280macro_rules! ConfigValueSourceUnknown {
2281    () => {
2282        _
2283    };
2284}
2285
2286// Custom PartialEq so that unknown variants are not equal to themselves.
2287impl PartialEq for ConfigValueSource {
2288    fn eq(&self, other: &Self) -> bool {
2289        match (self, other) {
2290            (Self::PackagePath(x), Self::PackagePath(y)) => *x == *y,
2291            (Self::Capabilities(x), Self::Capabilities(y)) => *x == *y,
2292            _ => false,
2293        }
2294    }
2295}
2296
2297impl ConfigValueSource {
2298    #[inline]
2299    pub fn ordinal(&self) -> u64 {
2300        match *self {
2301            Self::PackagePath(_) => 1,
2302            Self::Capabilities(_) => 2,
2303            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2304        }
2305    }
2306
2307    #[inline]
2308    pub fn unknown_variant_for_testing() -> Self {
2309        Self::__SourceBreaking { unknown_ordinal: 0 }
2310    }
2311
2312    #[inline]
2313    pub fn is_unknown(&self) -> bool {
2314        match self {
2315            Self::__SourceBreaking { .. } => true,
2316            _ => false,
2317        }
2318    }
2319}
2320
2321impl fidl::Persistable for ConfigValueSource {}
2322
2323/// A vector configuration value.
2324#[derive(Clone, Debug)]
2325pub enum ConfigVectorValue {
2326    BoolVector(Vec<bool>),
2327    Uint8Vector(Vec<u8>),
2328    Uint16Vector(Vec<u16>),
2329    Uint32Vector(Vec<u32>),
2330    Uint64Vector(Vec<u64>),
2331    Int8Vector(Vec<i8>),
2332    Int16Vector(Vec<i16>),
2333    Int32Vector(Vec<i32>),
2334    Int64Vector(Vec<i64>),
2335    StringVector(Vec<String>),
2336    #[doc(hidden)]
2337    __SourceBreaking {
2338        unknown_ordinal: u64,
2339    },
2340}
2341
2342/// Pattern that matches an unknown `ConfigVectorValue` member.
2343#[macro_export]
2344macro_rules! ConfigVectorValueUnknown {
2345    () => {
2346        _
2347    };
2348}
2349
2350// Custom PartialEq so that unknown variants are not equal to themselves.
2351impl PartialEq for ConfigVectorValue {
2352    fn eq(&self, other: &Self) -> bool {
2353        match (self, other) {
2354            (Self::BoolVector(x), Self::BoolVector(y)) => *x == *y,
2355            (Self::Uint8Vector(x), Self::Uint8Vector(y)) => *x == *y,
2356            (Self::Uint16Vector(x), Self::Uint16Vector(y)) => *x == *y,
2357            (Self::Uint32Vector(x), Self::Uint32Vector(y)) => *x == *y,
2358            (Self::Uint64Vector(x), Self::Uint64Vector(y)) => *x == *y,
2359            (Self::Int8Vector(x), Self::Int8Vector(y)) => *x == *y,
2360            (Self::Int16Vector(x), Self::Int16Vector(y)) => *x == *y,
2361            (Self::Int32Vector(x), Self::Int32Vector(y)) => *x == *y,
2362            (Self::Int64Vector(x), Self::Int64Vector(y)) => *x == *y,
2363            (Self::StringVector(x), Self::StringVector(y)) => *x == *y,
2364            _ => false,
2365        }
2366    }
2367}
2368
2369impl ConfigVectorValue {
2370    #[inline]
2371    pub fn ordinal(&self) -> u64 {
2372        match *self {
2373            Self::BoolVector(_) => 1,
2374            Self::Uint8Vector(_) => 2,
2375            Self::Uint16Vector(_) => 3,
2376            Self::Uint32Vector(_) => 4,
2377            Self::Uint64Vector(_) => 5,
2378            Self::Int8Vector(_) => 6,
2379            Self::Int16Vector(_) => 7,
2380            Self::Int32Vector(_) => 8,
2381            Self::Int64Vector(_) => 9,
2382            Self::StringVector(_) => 10,
2383            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2384        }
2385    }
2386
2387    #[inline]
2388    pub fn unknown_variant_for_testing() -> Self {
2389        Self::__SourceBreaking { unknown_ordinal: 0 }
2390    }
2391
2392    #[inline]
2393    pub fn is_unknown(&self) -> bool {
2394        match self {
2395            Self::__SourceBreaking { .. } => true,
2396            _ => false,
2397        }
2398    }
2399}
2400
2401impl fidl::Persistable for ConfigVectorValue {}
2402
2403/// Declares a capability registered in the debug section of an environment.
2404#[derive(Clone, Debug)]
2405pub enum DebugRegistration {
2406    Protocol(DebugProtocolRegistration),
2407    #[doc(hidden)]
2408    __SourceBreaking {
2409        unknown_ordinal: u64,
2410    },
2411}
2412
2413/// Pattern that matches an unknown `DebugRegistration` member.
2414#[macro_export]
2415macro_rules! DebugRegistrationUnknown {
2416    () => {
2417        _
2418    };
2419}
2420
2421// Custom PartialEq so that unknown variants are not equal to themselves.
2422impl PartialEq for DebugRegistration {
2423    fn eq(&self, other: &Self) -> bool {
2424        match (self, other) {
2425            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2426            _ => false,
2427        }
2428    }
2429}
2430
2431impl DebugRegistration {
2432    #[inline]
2433    pub fn ordinal(&self) -> u64 {
2434        match *self {
2435            Self::Protocol(_) => 1,
2436            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2437        }
2438    }
2439
2440    #[inline]
2441    pub fn unknown_variant_for_testing() -> Self {
2442        Self::__SourceBreaking { unknown_ordinal: 0 }
2443    }
2444
2445    #[inline]
2446    pub fn is_unknown(&self) -> bool {
2447        match self {
2448            Self::__SourceBreaking { .. } => true,
2449            _ => false,
2450        }
2451    }
2452}
2453
2454impl fidl::Persistable for DebugRegistration {}
2455
2456/// Declares a capability exposed to either a component's containing realm or to
2457/// the framework. For example, a legacy service exposed by the component at
2458/// runtime.
2459#[derive(Clone, Debug)]
2460pub enum Expose {
2461    Service(ExposeService),
2462    Protocol(ExposeProtocol),
2463    Directory(ExposeDirectory),
2464    Runner(ExposeRunner),
2465    Resolver(ExposeResolver),
2466    Dictionary(ExposeDictionary),
2467    Config(ExposeConfiguration),
2468    #[doc(hidden)]
2469    __SourceBreaking {
2470        unknown_ordinal: u64,
2471    },
2472}
2473
2474/// Pattern that matches an unknown `Expose` member.
2475#[macro_export]
2476macro_rules! ExposeUnknown {
2477    () => {
2478        _
2479    };
2480}
2481
2482// Custom PartialEq so that unknown variants are not equal to themselves.
2483impl PartialEq for Expose {
2484    fn eq(&self, other: &Self) -> bool {
2485        match (self, other) {
2486            (Self::Service(x), Self::Service(y)) => *x == *y,
2487            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2488            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2489            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2490            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2491            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2492            (Self::Config(x), Self::Config(y)) => *x == *y,
2493            _ => false,
2494        }
2495    }
2496}
2497
2498impl Expose {
2499    #[inline]
2500    pub fn ordinal(&self) -> u64 {
2501        match *self {
2502            Self::Service(_) => 1,
2503            Self::Protocol(_) => 2,
2504            Self::Directory(_) => 3,
2505            Self::Runner(_) => 4,
2506            Self::Resolver(_) => 5,
2507            Self::Dictionary(_) => 7,
2508            Self::Config(_) => 8,
2509            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2510        }
2511    }
2512
2513    #[inline]
2514    pub fn unknown_variant_for_testing() -> Self {
2515        Self::__SourceBreaking { unknown_ordinal: 0 }
2516    }
2517
2518    #[inline]
2519    pub fn is_unknown(&self) -> bool {
2520        match self {
2521            Self::__SourceBreaking { .. } => true,
2522            _ => false,
2523        }
2524    }
2525}
2526
2527impl fidl::Persistable for Expose {}
2528
2529#[derive(Clone, Debug)]
2530pub enum LayoutConstraint {
2531    MaxSize(u32),
2532    #[doc(hidden)]
2533    __SourceBreaking {
2534        unknown_ordinal: u64,
2535    },
2536}
2537
2538/// Pattern that matches an unknown `LayoutConstraint` member.
2539#[macro_export]
2540macro_rules! LayoutConstraintUnknown {
2541    () => {
2542        _
2543    };
2544}
2545
2546// Custom PartialEq so that unknown variants are not equal to themselves.
2547impl PartialEq for LayoutConstraint {
2548    fn eq(&self, other: &Self) -> bool {
2549        match (self, other) {
2550            (Self::MaxSize(x), Self::MaxSize(y)) => *x == *y,
2551            _ => false,
2552        }
2553    }
2554}
2555
2556impl LayoutConstraint {
2557    #[inline]
2558    pub fn ordinal(&self) -> u64 {
2559        match *self {
2560            Self::MaxSize(_) => 1,
2561            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2562        }
2563    }
2564
2565    #[inline]
2566    pub fn unknown_variant_for_testing() -> Self {
2567        Self::__SourceBreaking { unknown_ordinal: 0 }
2568    }
2569
2570    #[inline]
2571    pub fn is_unknown(&self) -> bool {
2572        match self {
2573            Self::__SourceBreaking { .. } => true,
2574            _ => false,
2575        }
2576    }
2577}
2578
2579impl fidl::Persistable for LayoutConstraint {}
2580
2581#[derive(Clone, Debug)]
2582pub enum LayoutParameter {
2583    NestedType(ConfigType),
2584    #[doc(hidden)]
2585    __SourceBreaking {
2586        unknown_ordinal: u64,
2587    },
2588}
2589
2590/// Pattern that matches an unknown `LayoutParameter` member.
2591#[macro_export]
2592macro_rules! LayoutParameterUnknown {
2593    () => {
2594        _
2595    };
2596}
2597
2598// Custom PartialEq so that unknown variants are not equal to themselves.
2599impl PartialEq for LayoutParameter {
2600    fn eq(&self, other: &Self) -> bool {
2601        match (self, other) {
2602            (Self::NestedType(x), Self::NestedType(y)) => *x == *y,
2603            _ => false,
2604        }
2605    }
2606}
2607
2608impl LayoutParameter {
2609    #[inline]
2610    pub fn ordinal(&self) -> u64 {
2611        match *self {
2612            Self::NestedType(_) => 1,
2613            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2614        }
2615    }
2616
2617    #[inline]
2618    pub fn unknown_variant_for_testing() -> Self {
2619        Self::__SourceBreaking { unknown_ordinal: 0 }
2620    }
2621
2622    #[inline]
2623    pub fn is_unknown(&self) -> bool {
2624        match self {
2625            Self::__SourceBreaking { .. } => true,
2626            _ => false,
2627        }
2628    }
2629}
2630
2631impl fidl::Persistable for LayoutParameter {}
2632
2633/// Declares a capability offered by a component to one of its children, which
2634/// may have been offered by the component's containing realm, the component
2635/// itself, or one of its other children.
2636#[derive(Clone, Debug)]
2637pub enum Offer {
2638    Service(OfferService),
2639    Protocol(OfferProtocol),
2640    Directory(OfferDirectory),
2641    Storage(OfferStorage),
2642    Runner(OfferRunner),
2643    Resolver(OfferResolver),
2644    EventStream(OfferEventStream),
2645    Dictionary(OfferDictionary),
2646    Config(OfferConfiguration),
2647    #[doc(hidden)]
2648    __SourceBreaking {
2649        unknown_ordinal: u64,
2650    },
2651}
2652
2653/// Pattern that matches an unknown `Offer` member.
2654#[macro_export]
2655macro_rules! OfferUnknown {
2656    () => {
2657        _
2658    };
2659}
2660
2661// Custom PartialEq so that unknown variants are not equal to themselves.
2662impl PartialEq for Offer {
2663    fn eq(&self, other: &Self) -> bool {
2664        match (self, other) {
2665            (Self::Service(x), Self::Service(y)) => *x == *y,
2666            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2667            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2668            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2669            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2670            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
2671            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2672            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2673            (Self::Config(x), Self::Config(y)) => *x == *y,
2674            _ => false,
2675        }
2676    }
2677}
2678
2679impl Offer {
2680    #[inline]
2681    pub fn ordinal(&self) -> u64 {
2682        match *self {
2683            Self::Service(_) => 1,
2684            Self::Protocol(_) => 2,
2685            Self::Directory(_) => 3,
2686            Self::Storage(_) => 4,
2687            Self::Runner(_) => 5,
2688            Self::Resolver(_) => 6,
2689            Self::EventStream(_) => 8,
2690            Self::Dictionary(_) => 9,
2691            Self::Config(_) => 10,
2692            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2693        }
2694    }
2695
2696    #[inline]
2697    pub fn unknown_variant_for_testing() -> Self {
2698        Self::__SourceBreaking { unknown_ordinal: 0 }
2699    }
2700
2701    #[inline]
2702    pub fn is_unknown(&self) -> bool {
2703        match self {
2704            Self::__SourceBreaking { .. } => true,
2705            _ => false,
2706        }
2707    }
2708}
2709
2710impl fidl::Persistable for Offer {}
2711
2712/// A reference to a capability source or destination relative to this
2713/// component.
2714#[derive(Clone, Debug)]
2715pub enum Ref {
2716    Parent(ParentRef),
2717    Self_(SelfRef),
2718    Child(ChildRef),
2719    Collection(CollectionRef),
2720    Framework(FrameworkRef),
2721    Capability(CapabilityRef),
2722    Debug(DebugRef),
2723    VoidType(VoidRef),
2724    Environment(EnvironmentRef),
2725    #[doc(hidden)]
2726    __SourceBreaking {
2727        unknown_ordinal: u64,
2728    },
2729}
2730
2731/// Pattern that matches an unknown `Ref` member.
2732#[macro_export]
2733macro_rules! RefUnknown {
2734    () => {
2735        _
2736    };
2737}
2738
2739// Custom PartialEq so that unknown variants are not equal to themselves.
2740impl PartialEq for Ref {
2741    fn eq(&self, other: &Self) -> bool {
2742        match (self, other) {
2743            (Self::Parent(x), Self::Parent(y)) => *x == *y,
2744            (Self::Self_(x), Self::Self_(y)) => *x == *y,
2745            (Self::Child(x), Self::Child(y)) => *x == *y,
2746            (Self::Collection(x), Self::Collection(y)) => *x == *y,
2747            (Self::Framework(x), Self::Framework(y)) => *x == *y,
2748            (Self::Capability(x), Self::Capability(y)) => *x == *y,
2749            (Self::Debug(x), Self::Debug(y)) => *x == *y,
2750            (Self::VoidType(x), Self::VoidType(y)) => *x == *y,
2751            (Self::Environment(x), Self::Environment(y)) => *x == *y,
2752            _ => false,
2753        }
2754    }
2755}
2756
2757impl Ref {
2758    #[inline]
2759    pub fn ordinal(&self) -> u64 {
2760        match *self {
2761            Self::Parent(_) => 1,
2762            Self::Self_(_) => 2,
2763            Self::Child(_) => 3,
2764            Self::Collection(_) => 4,
2765            Self::Framework(_) => 5,
2766            Self::Capability(_) => 6,
2767            Self::Debug(_) => 7,
2768            Self::VoidType(_) => 8,
2769            Self::Environment(_) => 9,
2770            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2771        }
2772    }
2773
2774    #[inline]
2775    pub fn unknown_variant_for_testing() -> Self {
2776        Self::__SourceBreaking { unknown_ordinal: 0 }
2777    }
2778
2779    #[inline]
2780    pub fn is_unknown(&self) -> bool {
2781        match self {
2782            Self::__SourceBreaking { .. } => true,
2783            _ => false,
2784        }
2785    }
2786}
2787
2788impl fidl::Persistable for Ref {}
2789
2790/// Declares a capability used by a component, which was offered to it.
2791#[derive(Clone, Debug)]
2792pub enum Use {
2793    Service(UseService),
2794    Protocol(UseProtocol),
2795    Directory(UseDirectory),
2796    Storage(UseStorage),
2797    EventStream(UseEventStream),
2798    Runner(UseRunner),
2799    Config(UseConfiguration),
2800    Dictionary(UseDictionary),
2801    #[doc(hidden)]
2802    __SourceBreaking {
2803        unknown_ordinal: u64,
2804    },
2805}
2806
2807/// Pattern that matches an unknown `Use` member.
2808#[macro_export]
2809macro_rules! UseUnknown {
2810    () => {
2811        _
2812    };
2813}
2814
2815// Custom PartialEq so that unknown variants are not equal to themselves.
2816impl PartialEq for Use {
2817    fn eq(&self, other: &Self) -> bool {
2818        match (self, other) {
2819            (Self::Service(x), Self::Service(y)) => *x == *y,
2820            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
2821            (Self::Directory(x), Self::Directory(y)) => *x == *y,
2822            (Self::Storage(x), Self::Storage(y)) => *x == *y,
2823            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
2824            (Self::Runner(x), Self::Runner(y)) => *x == *y,
2825            (Self::Config(x), Self::Config(y)) => *x == *y,
2826            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
2827            _ => false,
2828        }
2829    }
2830}
2831
2832impl Use {
2833    #[inline]
2834    pub fn ordinal(&self) -> u64 {
2835        match *self {
2836            Self::Service(_) => 1,
2837            Self::Protocol(_) => 2,
2838            Self::Directory(_) => 3,
2839            Self::Storage(_) => 4,
2840            Self::EventStream(_) => 7,
2841            Self::Runner(_) => 8,
2842            Self::Config(_) => 9,
2843            Self::Dictionary(_) => 10,
2844            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2845        }
2846    }
2847
2848    #[inline]
2849    pub fn unknown_variant_for_testing() -> Self {
2850        Self::__SourceBreaking { unknown_ordinal: 0 }
2851    }
2852
2853    #[inline]
2854    pub fn is_unknown(&self) -> bool {
2855        match self {
2856            Self::__SourceBreaking { .. } => true,
2857            _ => false,
2858        }
2859    }
2860}
2861
2862impl fidl::Persistable for Use {}
2863
2864mod internal {
2865    use super::*;
2866    unsafe impl fidl::encoding::TypeMarker for ConfigMutability {
2867        type Owned = Self;
2868
2869        #[inline(always)]
2870        fn inline_align(_context: fidl::encoding::Context) -> usize {
2871            4
2872        }
2873
2874        #[inline(always)]
2875        fn inline_size(_context: fidl::encoding::Context) -> usize {
2876            4
2877        }
2878    }
2879
2880    impl fidl::encoding::ValueTypeMarker for ConfigMutability {
2881        type Borrowed<'a> = Self;
2882        #[inline(always)]
2883        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2884            *value
2885        }
2886    }
2887
2888    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2889        for ConfigMutability
2890    {
2891        #[inline]
2892        unsafe fn encode(
2893            self,
2894            encoder: &mut fidl::encoding::Encoder<'_, D>,
2895            offset: usize,
2896            _depth: fidl::encoding::Depth,
2897        ) -> fidl::Result<()> {
2898            encoder.debug_check_bounds::<Self>(offset);
2899            encoder.write_num(self.bits(), offset);
2900            Ok(())
2901        }
2902    }
2903
2904    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigMutability {
2905        #[inline(always)]
2906        fn new_empty() -> Self {
2907            Self::empty()
2908        }
2909
2910        #[inline]
2911        unsafe fn decode(
2912            &mut self,
2913            decoder: &mut fidl::encoding::Decoder<'_, D>,
2914            offset: usize,
2915            _depth: fidl::encoding::Depth,
2916        ) -> fidl::Result<()> {
2917            decoder.debug_check_bounds::<Self>(offset);
2918            let prim = decoder.read_num::<u32>(offset);
2919            *self = Self::from_bits_allow_unknown(prim);
2920            Ok(())
2921        }
2922    }
2923    unsafe impl fidl::encoding::TypeMarker for AllowedOffers {
2924        type Owned = Self;
2925
2926        #[inline(always)]
2927        fn inline_align(_context: fidl::encoding::Context) -> usize {
2928            std::mem::align_of::<u32>()
2929        }
2930
2931        #[inline(always)]
2932        fn inline_size(_context: fidl::encoding::Context) -> usize {
2933            std::mem::size_of::<u32>()
2934        }
2935
2936        #[inline(always)]
2937        fn encode_is_copy() -> bool {
2938            true
2939        }
2940
2941        #[inline(always)]
2942        fn decode_is_copy() -> bool {
2943            false
2944        }
2945    }
2946
2947    impl fidl::encoding::ValueTypeMarker for AllowedOffers {
2948        type Borrowed<'a> = Self;
2949        #[inline(always)]
2950        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2951            *value
2952        }
2953    }
2954
2955    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AllowedOffers {
2956        #[inline]
2957        unsafe fn encode(
2958            self,
2959            encoder: &mut fidl::encoding::Encoder<'_, D>,
2960            offset: usize,
2961            _depth: fidl::encoding::Depth,
2962        ) -> fidl::Result<()> {
2963            encoder.debug_check_bounds::<Self>(offset);
2964            encoder.write_num(self.into_primitive(), offset);
2965            Ok(())
2966        }
2967    }
2968
2969    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowedOffers {
2970        #[inline(always)]
2971        fn new_empty() -> Self {
2972            Self::StaticOnly
2973        }
2974
2975        #[inline]
2976        unsafe fn decode(
2977            &mut self,
2978            decoder: &mut fidl::encoding::Decoder<'_, D>,
2979            offset: usize,
2980            _depth: fidl::encoding::Depth,
2981        ) -> fidl::Result<()> {
2982            decoder.debug_check_bounds::<Self>(offset);
2983            let prim = decoder.read_num::<u32>(offset);
2984
2985            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2986            Ok(())
2987        }
2988    }
2989    unsafe impl fidl::encoding::TypeMarker for Availability {
2990        type Owned = Self;
2991
2992        #[inline(always)]
2993        fn inline_align(_context: fidl::encoding::Context) -> usize {
2994            std::mem::align_of::<u32>()
2995        }
2996
2997        #[inline(always)]
2998        fn inline_size(_context: fidl::encoding::Context) -> usize {
2999            std::mem::size_of::<u32>()
3000        }
3001
3002        #[inline(always)]
3003        fn encode_is_copy() -> bool {
3004            true
3005        }
3006
3007        #[inline(always)]
3008        fn decode_is_copy() -> bool {
3009            false
3010        }
3011    }
3012
3013    impl fidl::encoding::ValueTypeMarker for Availability {
3014        type Borrowed<'a> = Self;
3015        #[inline(always)]
3016        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3017            *value
3018        }
3019    }
3020
3021    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Availability {
3022        #[inline]
3023        unsafe fn encode(
3024            self,
3025            encoder: &mut fidl::encoding::Encoder<'_, D>,
3026            offset: usize,
3027            _depth: fidl::encoding::Depth,
3028        ) -> fidl::Result<()> {
3029            encoder.debug_check_bounds::<Self>(offset);
3030            encoder.write_num(self.into_primitive(), offset);
3031            Ok(())
3032        }
3033    }
3034
3035    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Availability {
3036        #[inline(always)]
3037        fn new_empty() -> Self {
3038            Self::Required
3039        }
3040
3041        #[inline]
3042        unsafe fn decode(
3043            &mut self,
3044            decoder: &mut fidl::encoding::Decoder<'_, D>,
3045            offset: usize,
3046            _depth: fidl::encoding::Depth,
3047        ) -> fidl::Result<()> {
3048            decoder.debug_check_bounds::<Self>(offset);
3049            let prim = decoder.read_num::<u32>(offset);
3050
3051            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3052            Ok(())
3053        }
3054    }
3055    unsafe impl fidl::encoding::TypeMarker for ConfigTypeLayout {
3056        type Owned = Self;
3057
3058        #[inline(always)]
3059        fn inline_align(_context: fidl::encoding::Context) -> usize {
3060            std::mem::align_of::<u32>()
3061        }
3062
3063        #[inline(always)]
3064        fn inline_size(_context: fidl::encoding::Context) -> usize {
3065            std::mem::size_of::<u32>()
3066        }
3067
3068        #[inline(always)]
3069        fn encode_is_copy() -> bool {
3070            false
3071        }
3072
3073        #[inline(always)]
3074        fn decode_is_copy() -> bool {
3075            false
3076        }
3077    }
3078
3079    impl fidl::encoding::ValueTypeMarker for ConfigTypeLayout {
3080        type Borrowed<'a> = Self;
3081        #[inline(always)]
3082        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3083            *value
3084        }
3085    }
3086
3087    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3088        for ConfigTypeLayout
3089    {
3090        #[inline]
3091        unsafe fn encode(
3092            self,
3093            encoder: &mut fidl::encoding::Encoder<'_, D>,
3094            offset: usize,
3095            _depth: fidl::encoding::Depth,
3096        ) -> fidl::Result<()> {
3097            encoder.debug_check_bounds::<Self>(offset);
3098            encoder.write_num(self.into_primitive(), offset);
3099            Ok(())
3100        }
3101    }
3102
3103    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigTypeLayout {
3104        #[inline(always)]
3105        fn new_empty() -> Self {
3106            Self::unknown()
3107        }
3108
3109        #[inline]
3110        unsafe fn decode(
3111            &mut self,
3112            decoder: &mut fidl::encoding::Decoder<'_, D>,
3113            offset: usize,
3114            _depth: fidl::encoding::Depth,
3115        ) -> fidl::Result<()> {
3116            decoder.debug_check_bounds::<Self>(offset);
3117            let prim = decoder.read_num::<u32>(offset);
3118
3119            *self = Self::from_primitive_allow_unknown(prim);
3120            Ok(())
3121        }
3122    }
3123    unsafe impl fidl::encoding::TypeMarker for DeliveryType {
3124        type Owned = Self;
3125
3126        #[inline(always)]
3127        fn inline_align(_context: fidl::encoding::Context) -> usize {
3128            std::mem::align_of::<u32>()
3129        }
3130
3131        #[inline(always)]
3132        fn inline_size(_context: fidl::encoding::Context) -> usize {
3133            std::mem::size_of::<u32>()
3134        }
3135
3136        #[inline(always)]
3137        fn encode_is_copy() -> bool {
3138            false
3139        }
3140
3141        #[inline(always)]
3142        fn decode_is_copy() -> bool {
3143            false
3144        }
3145    }
3146
3147    impl fidl::encoding::ValueTypeMarker for DeliveryType {
3148        type Borrowed<'a> = Self;
3149        #[inline(always)]
3150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3151            *value
3152        }
3153    }
3154
3155    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeliveryType {
3156        #[inline]
3157        unsafe fn encode(
3158            self,
3159            encoder: &mut fidl::encoding::Encoder<'_, D>,
3160            offset: usize,
3161            _depth: fidl::encoding::Depth,
3162        ) -> fidl::Result<()> {
3163            encoder.debug_check_bounds::<Self>(offset);
3164            encoder.write_num(self.into_primitive(), offset);
3165            Ok(())
3166        }
3167    }
3168
3169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeliveryType {
3170        #[inline(always)]
3171        fn new_empty() -> Self {
3172            Self::unknown()
3173        }
3174
3175        #[inline]
3176        unsafe fn decode(
3177            &mut self,
3178            decoder: &mut fidl::encoding::Decoder<'_, D>,
3179            offset: usize,
3180            _depth: fidl::encoding::Depth,
3181        ) -> fidl::Result<()> {
3182            decoder.debug_check_bounds::<Self>(offset);
3183            let prim = decoder.read_num::<u32>(offset);
3184
3185            *self = Self::from_primitive_allow_unknown(prim);
3186            Ok(())
3187        }
3188    }
3189    unsafe impl fidl::encoding::TypeMarker for DependencyType {
3190        type Owned = Self;
3191
3192        #[inline(always)]
3193        fn inline_align(_context: fidl::encoding::Context) -> usize {
3194            std::mem::align_of::<u32>()
3195        }
3196
3197        #[inline(always)]
3198        fn inline_size(_context: fidl::encoding::Context) -> usize {
3199            std::mem::size_of::<u32>()
3200        }
3201
3202        #[inline(always)]
3203        fn encode_is_copy() -> bool {
3204            true
3205        }
3206
3207        #[inline(always)]
3208        fn decode_is_copy() -> bool {
3209            false
3210        }
3211    }
3212
3213    impl fidl::encoding::ValueTypeMarker for DependencyType {
3214        type Borrowed<'a> = Self;
3215        #[inline(always)]
3216        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3217            *value
3218        }
3219    }
3220
3221    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DependencyType {
3222        #[inline]
3223        unsafe fn encode(
3224            self,
3225            encoder: &mut fidl::encoding::Encoder<'_, D>,
3226            offset: usize,
3227            _depth: fidl::encoding::Depth,
3228        ) -> fidl::Result<()> {
3229            encoder.debug_check_bounds::<Self>(offset);
3230            encoder.write_num(self.into_primitive(), offset);
3231            Ok(())
3232        }
3233    }
3234
3235    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DependencyType {
3236        #[inline(always)]
3237        fn new_empty() -> Self {
3238            Self::Strong
3239        }
3240
3241        #[inline]
3242        unsafe fn decode(
3243            &mut self,
3244            decoder: &mut fidl::encoding::Decoder<'_, D>,
3245            offset: usize,
3246            _depth: fidl::encoding::Depth,
3247        ) -> fidl::Result<()> {
3248            decoder.debug_check_bounds::<Self>(offset);
3249            let prim = decoder.read_num::<u32>(offset);
3250
3251            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3252            Ok(())
3253        }
3254    }
3255    unsafe impl fidl::encoding::TypeMarker for Durability {
3256        type Owned = Self;
3257
3258        #[inline(always)]
3259        fn inline_align(_context: fidl::encoding::Context) -> usize {
3260            std::mem::align_of::<u32>()
3261        }
3262
3263        #[inline(always)]
3264        fn inline_size(_context: fidl::encoding::Context) -> usize {
3265            std::mem::size_of::<u32>()
3266        }
3267
3268        #[inline(always)]
3269        fn encode_is_copy() -> bool {
3270            true
3271        }
3272
3273        #[inline(always)]
3274        fn decode_is_copy() -> bool {
3275            false
3276        }
3277    }
3278
3279    impl fidl::encoding::ValueTypeMarker for Durability {
3280        type Borrowed<'a> = Self;
3281        #[inline(always)]
3282        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3283            *value
3284        }
3285    }
3286
3287    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Durability {
3288        #[inline]
3289        unsafe fn encode(
3290            self,
3291            encoder: &mut fidl::encoding::Encoder<'_, D>,
3292            offset: usize,
3293            _depth: fidl::encoding::Depth,
3294        ) -> fidl::Result<()> {
3295            encoder.debug_check_bounds::<Self>(offset);
3296            encoder.write_num(self.into_primitive(), offset);
3297            Ok(())
3298        }
3299    }
3300
3301    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Durability {
3302        #[inline(always)]
3303        fn new_empty() -> Self {
3304            Self::Transient
3305        }
3306
3307        #[inline]
3308        unsafe fn decode(
3309            &mut self,
3310            decoder: &mut fidl::encoding::Decoder<'_, D>,
3311            offset: usize,
3312            _depth: fidl::encoding::Depth,
3313        ) -> fidl::Result<()> {
3314            decoder.debug_check_bounds::<Self>(offset);
3315            let prim = decoder.read_num::<u32>(offset);
3316
3317            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3318            Ok(())
3319        }
3320    }
3321    unsafe impl fidl::encoding::TypeMarker for EnvironmentExtends {
3322        type Owned = Self;
3323
3324        #[inline(always)]
3325        fn inline_align(_context: fidl::encoding::Context) -> usize {
3326            std::mem::align_of::<u32>()
3327        }
3328
3329        #[inline(always)]
3330        fn inline_size(_context: fidl::encoding::Context) -> usize {
3331            std::mem::size_of::<u32>()
3332        }
3333
3334        #[inline(always)]
3335        fn encode_is_copy() -> bool {
3336            true
3337        }
3338
3339        #[inline(always)]
3340        fn decode_is_copy() -> bool {
3341            false
3342        }
3343    }
3344
3345    impl fidl::encoding::ValueTypeMarker for EnvironmentExtends {
3346        type Borrowed<'a> = Self;
3347        #[inline(always)]
3348        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3349            *value
3350        }
3351    }
3352
3353    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3354        for EnvironmentExtends
3355    {
3356        #[inline]
3357        unsafe fn encode(
3358            self,
3359            encoder: &mut fidl::encoding::Encoder<'_, D>,
3360            offset: usize,
3361            _depth: fidl::encoding::Depth,
3362        ) -> fidl::Result<()> {
3363            encoder.debug_check_bounds::<Self>(offset);
3364            encoder.write_num(self.into_primitive(), offset);
3365            Ok(())
3366        }
3367    }
3368
3369    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentExtends {
3370        #[inline(always)]
3371        fn new_empty() -> Self {
3372            Self::None
3373        }
3374
3375        #[inline]
3376        unsafe fn decode(
3377            &mut self,
3378            decoder: &mut fidl::encoding::Decoder<'_, D>,
3379            offset: usize,
3380            _depth: fidl::encoding::Depth,
3381        ) -> fidl::Result<()> {
3382            decoder.debug_check_bounds::<Self>(offset);
3383            let prim = decoder.read_num::<u32>(offset);
3384
3385            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3386            Ok(())
3387        }
3388    }
3389    unsafe impl fidl::encoding::TypeMarker for OnTerminate {
3390        type Owned = Self;
3391
3392        #[inline(always)]
3393        fn inline_align(_context: fidl::encoding::Context) -> usize {
3394            std::mem::align_of::<u32>()
3395        }
3396
3397        #[inline(always)]
3398        fn inline_size(_context: fidl::encoding::Context) -> usize {
3399            std::mem::size_of::<u32>()
3400        }
3401
3402        #[inline(always)]
3403        fn encode_is_copy() -> bool {
3404            true
3405        }
3406
3407        #[inline(always)]
3408        fn decode_is_copy() -> bool {
3409            false
3410        }
3411    }
3412
3413    impl fidl::encoding::ValueTypeMarker for OnTerminate {
3414        type Borrowed<'a> = Self;
3415        #[inline(always)]
3416        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3417            *value
3418        }
3419    }
3420
3421    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for OnTerminate {
3422        #[inline]
3423        unsafe fn encode(
3424            self,
3425            encoder: &mut fidl::encoding::Encoder<'_, D>,
3426            offset: usize,
3427            _depth: fidl::encoding::Depth,
3428        ) -> fidl::Result<()> {
3429            encoder.debug_check_bounds::<Self>(offset);
3430            encoder.write_num(self.into_primitive(), offset);
3431            Ok(())
3432        }
3433    }
3434
3435    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnTerminate {
3436        #[inline(always)]
3437        fn new_empty() -> Self {
3438            Self::None
3439        }
3440
3441        #[inline]
3442        unsafe fn decode(
3443            &mut self,
3444            decoder: &mut fidl::encoding::Decoder<'_, D>,
3445            offset: usize,
3446            _depth: fidl::encoding::Depth,
3447        ) -> fidl::Result<()> {
3448            decoder.debug_check_bounds::<Self>(offset);
3449            let prim = decoder.read_num::<u32>(offset);
3450
3451            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3452            Ok(())
3453        }
3454    }
3455    unsafe impl fidl::encoding::TypeMarker for StartupMode {
3456        type Owned = Self;
3457
3458        #[inline(always)]
3459        fn inline_align(_context: fidl::encoding::Context) -> usize {
3460            std::mem::align_of::<u32>()
3461        }
3462
3463        #[inline(always)]
3464        fn inline_size(_context: fidl::encoding::Context) -> usize {
3465            std::mem::size_of::<u32>()
3466        }
3467
3468        #[inline(always)]
3469        fn encode_is_copy() -> bool {
3470            true
3471        }
3472
3473        #[inline(always)]
3474        fn decode_is_copy() -> bool {
3475            false
3476        }
3477    }
3478
3479    impl fidl::encoding::ValueTypeMarker for StartupMode {
3480        type Borrowed<'a> = Self;
3481        #[inline(always)]
3482        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3483            *value
3484        }
3485    }
3486
3487    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartupMode {
3488        #[inline]
3489        unsafe fn encode(
3490            self,
3491            encoder: &mut fidl::encoding::Encoder<'_, D>,
3492            offset: usize,
3493            _depth: fidl::encoding::Depth,
3494        ) -> fidl::Result<()> {
3495            encoder.debug_check_bounds::<Self>(offset);
3496            encoder.write_num(self.into_primitive(), offset);
3497            Ok(())
3498        }
3499    }
3500
3501    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartupMode {
3502        #[inline(always)]
3503        fn new_empty() -> Self {
3504            Self::Lazy
3505        }
3506
3507        #[inline]
3508        unsafe fn decode(
3509            &mut self,
3510            decoder: &mut fidl::encoding::Decoder<'_, D>,
3511            offset: usize,
3512            _depth: fidl::encoding::Depth,
3513        ) -> fidl::Result<()> {
3514            decoder.debug_check_bounds::<Self>(offset);
3515            let prim = decoder.read_num::<u32>(offset);
3516
3517            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3518            Ok(())
3519        }
3520    }
3521    unsafe impl fidl::encoding::TypeMarker for StorageId {
3522        type Owned = Self;
3523
3524        #[inline(always)]
3525        fn inline_align(_context: fidl::encoding::Context) -> usize {
3526            std::mem::align_of::<u32>()
3527        }
3528
3529        #[inline(always)]
3530        fn inline_size(_context: fidl::encoding::Context) -> usize {
3531            std::mem::size_of::<u32>()
3532        }
3533
3534        #[inline(always)]
3535        fn encode_is_copy() -> bool {
3536            true
3537        }
3538
3539        #[inline(always)]
3540        fn decode_is_copy() -> bool {
3541            false
3542        }
3543    }
3544
3545    impl fidl::encoding::ValueTypeMarker for StorageId {
3546        type Borrowed<'a> = Self;
3547        #[inline(always)]
3548        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3549            *value
3550        }
3551    }
3552
3553    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StorageId {
3554        #[inline]
3555        unsafe fn encode(
3556            self,
3557            encoder: &mut fidl::encoding::Encoder<'_, D>,
3558            offset: usize,
3559            _depth: fidl::encoding::Depth,
3560        ) -> fidl::Result<()> {
3561            encoder.debug_check_bounds::<Self>(offset);
3562            encoder.write_num(self.into_primitive(), offset);
3563            Ok(())
3564        }
3565    }
3566
3567    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StorageId {
3568        #[inline(always)]
3569        fn new_empty() -> Self {
3570            Self::StaticInstanceId
3571        }
3572
3573        #[inline]
3574        unsafe fn decode(
3575            &mut self,
3576            decoder: &mut fidl::encoding::Decoder<'_, D>,
3577            offset: usize,
3578            _depth: fidl::encoding::Depth,
3579        ) -> fidl::Result<()> {
3580            decoder.debug_check_bounds::<Self>(offset);
3581            let prim = decoder.read_num::<u32>(offset);
3582
3583            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3584            Ok(())
3585        }
3586    }
3587
3588    impl fidl::encoding::ValueTypeMarker for CapabilityRef {
3589        type Borrowed<'a> = &'a Self;
3590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3591            value
3592        }
3593    }
3594
3595    unsafe impl fidl::encoding::TypeMarker for CapabilityRef {
3596        type Owned = Self;
3597
3598        #[inline(always)]
3599        fn inline_align(_context: fidl::encoding::Context) -> usize {
3600            8
3601        }
3602
3603        #[inline(always)]
3604        fn inline_size(_context: fidl::encoding::Context) -> usize {
3605            16
3606        }
3607    }
3608
3609    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapabilityRef, D>
3610        for &CapabilityRef
3611    {
3612        #[inline]
3613        unsafe fn encode(
3614            self,
3615            encoder: &mut fidl::encoding::Encoder<'_, D>,
3616            offset: usize,
3617            _depth: fidl::encoding::Depth,
3618        ) -> fidl::Result<()> {
3619            encoder.debug_check_bounds::<CapabilityRef>(offset);
3620            // Delegate to tuple encoding.
3621            fidl::encoding::Encode::<CapabilityRef, D>::encode(
3622                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
3623                    &self.name,
3624                ),),
3625                encoder,
3626                offset,
3627                _depth,
3628            )
3629        }
3630    }
3631    unsafe impl<
3632        D: fidl::encoding::ResourceDialect,
3633        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
3634    > fidl::encoding::Encode<CapabilityRef, D> for (T0,)
3635    {
3636        #[inline]
3637        unsafe fn encode(
3638            self,
3639            encoder: &mut fidl::encoding::Encoder<'_, D>,
3640            offset: usize,
3641            depth: fidl::encoding::Depth,
3642        ) -> fidl::Result<()> {
3643            encoder.debug_check_bounds::<CapabilityRef>(offset);
3644            // Zero out padding regions. There's no need to apply masks
3645            // because the unmasked parts will be overwritten by fields.
3646            // Write the fields.
3647            self.0.encode(encoder, offset + 0, depth)?;
3648            Ok(())
3649        }
3650    }
3651
3652    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapabilityRef {
3653        #[inline(always)]
3654        fn new_empty() -> Self {
3655            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D) }
3656        }
3657
3658        #[inline]
3659        unsafe fn decode(
3660            &mut self,
3661            decoder: &mut fidl::encoding::Decoder<'_, D>,
3662            offset: usize,
3663            _depth: fidl::encoding::Depth,
3664        ) -> fidl::Result<()> {
3665            decoder.debug_check_bounds::<Self>(offset);
3666            // Verify that padding bytes are zero.
3667            fidl::decode!(
3668                fidl::encoding::BoundedString<100>,
3669                D,
3670                &mut self.name,
3671                decoder,
3672                offset + 0,
3673                _depth
3674            )?;
3675            Ok(())
3676        }
3677    }
3678
3679    impl fidl::encoding::ValueTypeMarker for ChildRef {
3680        type Borrowed<'a> = &'a Self;
3681        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3682            value
3683        }
3684    }
3685
3686    unsafe impl fidl::encoding::TypeMarker for ChildRef {
3687        type Owned = Self;
3688
3689        #[inline(always)]
3690        fn inline_align(_context: fidl::encoding::Context) -> usize {
3691            8
3692        }
3693
3694        #[inline(always)]
3695        fn inline_size(_context: fidl::encoding::Context) -> usize {
3696            32
3697        }
3698    }
3699
3700    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildRef, D> for &ChildRef {
3701        #[inline]
3702        unsafe fn encode(
3703            self,
3704            encoder: &mut fidl::encoding::Encoder<'_, D>,
3705            offset: usize,
3706            _depth: fidl::encoding::Depth,
3707        ) -> fidl::Result<()> {
3708            encoder.debug_check_bounds::<ChildRef>(offset);
3709            // Delegate to tuple encoding.
3710            fidl::encoding::Encode::<ChildRef, D>::encode(
3711                (
3712                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
3713                    <fidl::encoding::Optional<fidl::encoding::BoundedString<100>> as fidl::encoding::ValueTypeMarker>::borrow(&self.collection),
3714                ),
3715                encoder, offset, _depth
3716            )
3717        }
3718    }
3719    unsafe impl<
3720        D: fidl::encoding::ResourceDialect,
3721        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
3722        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<100>>, D>,
3723    > fidl::encoding::Encode<ChildRef, D> for (T0, T1)
3724    {
3725        #[inline]
3726        unsafe fn encode(
3727            self,
3728            encoder: &mut fidl::encoding::Encoder<'_, D>,
3729            offset: usize,
3730            depth: fidl::encoding::Depth,
3731        ) -> fidl::Result<()> {
3732            encoder.debug_check_bounds::<ChildRef>(offset);
3733            // Zero out padding regions. There's no need to apply masks
3734            // because the unmasked parts will be overwritten by fields.
3735            // Write the fields.
3736            self.0.encode(encoder, offset + 0, depth)?;
3737            self.1.encode(encoder, offset + 16, depth)?;
3738            Ok(())
3739        }
3740    }
3741
3742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildRef {
3743        #[inline(always)]
3744        fn new_empty() -> Self {
3745            Self {
3746                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
3747                collection: fidl::new_empty!(
3748                    fidl::encoding::Optional<fidl::encoding::BoundedString<100>>,
3749                    D
3750                ),
3751            }
3752        }
3753
3754        #[inline]
3755        unsafe fn decode(
3756            &mut self,
3757            decoder: &mut fidl::encoding::Decoder<'_, D>,
3758            offset: usize,
3759            _depth: fidl::encoding::Depth,
3760        ) -> fidl::Result<()> {
3761            decoder.debug_check_bounds::<Self>(offset);
3762            // Verify that padding bytes are zero.
3763            fidl::decode!(
3764                fidl::encoding::BoundedString<1024>,
3765                D,
3766                &mut self.name,
3767                decoder,
3768                offset + 0,
3769                _depth
3770            )?;
3771            fidl::decode!(
3772                fidl::encoding::Optional<fidl::encoding::BoundedString<100>>,
3773                D,
3774                &mut self.collection,
3775                decoder,
3776                offset + 16,
3777                _depth
3778            )?;
3779            Ok(())
3780        }
3781    }
3782
3783    impl fidl::encoding::ValueTypeMarker for CollectionRef {
3784        type Borrowed<'a> = &'a Self;
3785        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3786            value
3787        }
3788    }
3789
3790    unsafe impl fidl::encoding::TypeMarker for CollectionRef {
3791        type Owned = Self;
3792
3793        #[inline(always)]
3794        fn inline_align(_context: fidl::encoding::Context) -> usize {
3795            8
3796        }
3797
3798        #[inline(always)]
3799        fn inline_size(_context: fidl::encoding::Context) -> usize {
3800            16
3801        }
3802    }
3803
3804    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CollectionRef, D>
3805        for &CollectionRef
3806    {
3807        #[inline]
3808        unsafe fn encode(
3809            self,
3810            encoder: &mut fidl::encoding::Encoder<'_, D>,
3811            offset: usize,
3812            _depth: fidl::encoding::Depth,
3813        ) -> fidl::Result<()> {
3814            encoder.debug_check_bounds::<CollectionRef>(offset);
3815            // Delegate to tuple encoding.
3816            fidl::encoding::Encode::<CollectionRef, D>::encode(
3817                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
3818                    &self.name,
3819                ),),
3820                encoder,
3821                offset,
3822                _depth,
3823            )
3824        }
3825    }
3826    unsafe impl<
3827        D: fidl::encoding::ResourceDialect,
3828        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
3829    > fidl::encoding::Encode<CollectionRef, D> for (T0,)
3830    {
3831        #[inline]
3832        unsafe fn encode(
3833            self,
3834            encoder: &mut fidl::encoding::Encoder<'_, D>,
3835            offset: usize,
3836            depth: fidl::encoding::Depth,
3837        ) -> fidl::Result<()> {
3838            encoder.debug_check_bounds::<CollectionRef>(offset);
3839            // Zero out padding regions. There's no need to apply masks
3840            // because the unmasked parts will be overwritten by fields.
3841            // Write the fields.
3842            self.0.encode(encoder, offset + 0, depth)?;
3843            Ok(())
3844        }
3845    }
3846
3847    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CollectionRef {
3848        #[inline(always)]
3849        fn new_empty() -> Self {
3850            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D) }
3851        }
3852
3853        #[inline]
3854        unsafe fn decode(
3855            &mut self,
3856            decoder: &mut fidl::encoding::Decoder<'_, D>,
3857            offset: usize,
3858            _depth: fidl::encoding::Depth,
3859        ) -> fidl::Result<()> {
3860            decoder.debug_check_bounds::<Self>(offset);
3861            // Verify that padding bytes are zero.
3862            fidl::decode!(
3863                fidl::encoding::BoundedString<100>,
3864                D,
3865                &mut self.name,
3866                decoder,
3867                offset + 0,
3868                _depth
3869            )?;
3870            Ok(())
3871        }
3872    }
3873
3874    impl fidl::encoding::ValueTypeMarker for ConfigType {
3875        type Borrowed<'a> = &'a Self;
3876        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3877            value
3878        }
3879    }
3880
3881    unsafe impl fidl::encoding::TypeMarker for ConfigType {
3882        type Owned = Self;
3883
3884        #[inline(always)]
3885        fn inline_align(_context: fidl::encoding::Context) -> usize {
3886            8
3887        }
3888
3889        #[inline(always)]
3890        fn inline_size(_context: fidl::encoding::Context) -> usize {
3891            40
3892        }
3893    }
3894
3895    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigType, D>
3896        for &ConfigType
3897    {
3898        #[inline]
3899        unsafe fn encode(
3900            self,
3901            encoder: &mut fidl::encoding::Encoder<'_, D>,
3902            offset: usize,
3903            _depth: fidl::encoding::Depth,
3904        ) -> fidl::Result<()> {
3905            encoder.debug_check_bounds::<ConfigType>(offset);
3906            // Delegate to tuple encoding.
3907            fidl::encoding::Encode::<ConfigType, D>::encode(
3908                (
3909                    <ConfigTypeLayout as fidl::encoding::ValueTypeMarker>::borrow(&self.layout),
3910                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>> as fidl::encoding::ValueTypeMarker>::borrow(&self.parameters),
3911                    <fidl::encoding::UnboundedVector<LayoutConstraint> as fidl::encoding::ValueTypeMarker>::borrow(&self.constraints),
3912                ),
3913                encoder, offset, _depth
3914            )
3915        }
3916    }
3917    unsafe impl<
3918        D: fidl::encoding::ResourceDialect,
3919        T0: fidl::encoding::Encode<ConfigTypeLayout, D>,
3920        T1: fidl::encoding::Encode<
3921                fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3922                D,
3923            >,
3924        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<LayoutConstraint>, D>,
3925    > fidl::encoding::Encode<ConfigType, D> for (T0, T1, T2)
3926    {
3927        #[inline]
3928        unsafe fn encode(
3929            self,
3930            encoder: &mut fidl::encoding::Encoder<'_, D>,
3931            offset: usize,
3932            depth: fidl::encoding::Depth,
3933        ) -> fidl::Result<()> {
3934            encoder.debug_check_bounds::<ConfigType>(offset);
3935            // Zero out padding regions. There's no need to apply masks
3936            // because the unmasked parts will be overwritten by fields.
3937            unsafe {
3938                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3939                (ptr as *mut u64).write_unaligned(0);
3940            }
3941            // Write the fields.
3942            self.0.encode(encoder, offset + 0, depth)?;
3943            self.1.encode(encoder, offset + 8, depth)?;
3944            self.2.encode(encoder, offset + 24, depth)?;
3945            Ok(())
3946        }
3947    }
3948
3949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigType {
3950        #[inline(always)]
3951        fn new_empty() -> Self {
3952            Self {
3953                layout: fidl::new_empty!(ConfigTypeLayout, D),
3954                parameters: fidl::new_empty!(
3955                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3956                    D
3957                ),
3958                constraints: fidl::new_empty!(fidl::encoding::UnboundedVector<LayoutConstraint>, D),
3959            }
3960        }
3961
3962        #[inline]
3963        unsafe fn decode(
3964            &mut self,
3965            decoder: &mut fidl::encoding::Decoder<'_, D>,
3966            offset: usize,
3967            _depth: fidl::encoding::Depth,
3968        ) -> fidl::Result<()> {
3969            decoder.debug_check_bounds::<Self>(offset);
3970            // Verify that padding bytes are zero.
3971            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3972            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3973            let mask = 0xffffffff00000000u64;
3974            let maskedval = padval & mask;
3975            if maskedval != 0 {
3976                return Err(fidl::Error::NonZeroPadding {
3977                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3978                });
3979            }
3980            fidl::decode!(ConfigTypeLayout, D, &mut self.layout, decoder, offset + 0, _depth)?;
3981            fidl::decode!(
3982                fidl::encoding::Optional<fidl::encoding::UnboundedVector<LayoutParameter>>,
3983                D,
3984                &mut self.parameters,
3985                decoder,
3986                offset + 8,
3987                _depth
3988            )?;
3989            fidl::decode!(
3990                fidl::encoding::UnboundedVector<LayoutConstraint>,
3991                D,
3992                &mut self.constraints,
3993                decoder,
3994                offset + 24,
3995                _depth
3996            )?;
3997            Ok(())
3998        }
3999    }
4000
4001    impl fidl::encoding::ValueTypeMarker for DebugRef {
4002        type Borrowed<'a> = &'a Self;
4003        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4004            value
4005        }
4006    }
4007
4008    unsafe impl fidl::encoding::TypeMarker for DebugRef {
4009        type Owned = Self;
4010
4011        #[inline(always)]
4012        fn inline_align(_context: fidl::encoding::Context) -> usize {
4013            1
4014        }
4015
4016        #[inline(always)]
4017        fn inline_size(_context: fidl::encoding::Context) -> usize {
4018            1
4019        }
4020    }
4021
4022    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugRef, D> for &DebugRef {
4023        #[inline]
4024        unsafe fn encode(
4025            self,
4026            encoder: &mut fidl::encoding::Encoder<'_, D>,
4027            offset: usize,
4028            _depth: fidl::encoding::Depth,
4029        ) -> fidl::Result<()> {
4030            encoder.debug_check_bounds::<DebugRef>(offset);
4031            encoder.write_num(0u8, offset);
4032            Ok(())
4033        }
4034    }
4035
4036    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugRef {
4037        #[inline(always)]
4038        fn new_empty() -> Self {
4039            Self
4040        }
4041
4042        #[inline]
4043        unsafe fn decode(
4044            &mut self,
4045            decoder: &mut fidl::encoding::Decoder<'_, D>,
4046            offset: usize,
4047            _depth: fidl::encoding::Depth,
4048        ) -> fidl::Result<()> {
4049            decoder.debug_check_bounds::<Self>(offset);
4050            match decoder.read_num::<u8>(offset) {
4051                0 => Ok(()),
4052                _ => Err(fidl::Error::Invalid),
4053            }
4054        }
4055    }
4056
4057    impl fidl::encoding::ValueTypeMarker for EnvironmentRef {
4058        type Borrowed<'a> = &'a Self;
4059        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4060            value
4061        }
4062    }
4063
4064    unsafe impl fidl::encoding::TypeMarker for EnvironmentRef {
4065        type Owned = Self;
4066
4067        #[inline(always)]
4068        fn inline_align(_context: fidl::encoding::Context) -> usize {
4069            1
4070        }
4071
4072        #[inline(always)]
4073        fn inline_size(_context: fidl::encoding::Context) -> usize {
4074            1
4075        }
4076    }
4077
4078    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentRef, D>
4079        for &EnvironmentRef
4080    {
4081        #[inline]
4082        unsafe fn encode(
4083            self,
4084            encoder: &mut fidl::encoding::Encoder<'_, D>,
4085            offset: usize,
4086            _depth: fidl::encoding::Depth,
4087        ) -> fidl::Result<()> {
4088            encoder.debug_check_bounds::<EnvironmentRef>(offset);
4089            encoder.write_num(0u8, offset);
4090            Ok(())
4091        }
4092    }
4093
4094    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentRef {
4095        #[inline(always)]
4096        fn new_empty() -> Self {
4097            Self
4098        }
4099
4100        #[inline]
4101        unsafe fn decode(
4102            &mut self,
4103            decoder: &mut fidl::encoding::Decoder<'_, D>,
4104            offset: usize,
4105            _depth: fidl::encoding::Depth,
4106        ) -> fidl::Result<()> {
4107            decoder.debug_check_bounds::<Self>(offset);
4108            match decoder.read_num::<u8>(offset) {
4109                0 => Ok(()),
4110                _ => Err(fidl::Error::Invalid),
4111            }
4112        }
4113    }
4114
4115    impl fidl::encoding::ValueTypeMarker for FrameworkRef {
4116        type Borrowed<'a> = &'a Self;
4117        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4118            value
4119        }
4120    }
4121
4122    unsafe impl fidl::encoding::TypeMarker for FrameworkRef {
4123        type Owned = Self;
4124
4125        #[inline(always)]
4126        fn inline_align(_context: fidl::encoding::Context) -> usize {
4127            1
4128        }
4129
4130        #[inline(always)]
4131        fn inline_size(_context: fidl::encoding::Context) -> usize {
4132            1
4133        }
4134    }
4135
4136    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameworkRef, D>
4137        for &FrameworkRef
4138    {
4139        #[inline]
4140        unsafe fn encode(
4141            self,
4142            encoder: &mut fidl::encoding::Encoder<'_, D>,
4143            offset: usize,
4144            _depth: fidl::encoding::Depth,
4145        ) -> fidl::Result<()> {
4146            encoder.debug_check_bounds::<FrameworkRef>(offset);
4147            encoder.write_num(0u8, offset);
4148            Ok(())
4149        }
4150    }
4151
4152    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameworkRef {
4153        #[inline(always)]
4154        fn new_empty() -> Self {
4155            Self
4156        }
4157
4158        #[inline]
4159        unsafe fn decode(
4160            &mut self,
4161            decoder: &mut fidl::encoding::Decoder<'_, D>,
4162            offset: usize,
4163            _depth: fidl::encoding::Depth,
4164        ) -> fidl::Result<()> {
4165            decoder.debug_check_bounds::<Self>(offset);
4166            match decoder.read_num::<u8>(offset) {
4167                0 => Ok(()),
4168                _ => Err(fidl::Error::Invalid),
4169            }
4170        }
4171    }
4172
4173    impl fidl::encoding::ValueTypeMarker for NameMapping {
4174        type Borrowed<'a> = &'a Self;
4175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4176            value
4177        }
4178    }
4179
4180    unsafe impl fidl::encoding::TypeMarker for NameMapping {
4181        type Owned = Self;
4182
4183        #[inline(always)]
4184        fn inline_align(_context: fidl::encoding::Context) -> usize {
4185            8
4186        }
4187
4188        #[inline(always)]
4189        fn inline_size(_context: fidl::encoding::Context) -> usize {
4190            32
4191        }
4192    }
4193
4194    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NameMapping, D>
4195        for &NameMapping
4196    {
4197        #[inline]
4198        unsafe fn encode(
4199            self,
4200            encoder: &mut fidl::encoding::Encoder<'_, D>,
4201            offset: usize,
4202            _depth: fidl::encoding::Depth,
4203        ) -> fidl::Result<()> {
4204            encoder.debug_check_bounds::<NameMapping>(offset);
4205            // Delegate to tuple encoding.
4206            fidl::encoding::Encode::<NameMapping, D>::encode(
4207                (
4208                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
4209                        &self.source_name,
4210                    ),
4211                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
4212                        &self.target_name,
4213                    ),
4214                ),
4215                encoder,
4216                offset,
4217                _depth,
4218            )
4219        }
4220    }
4221    unsafe impl<
4222        D: fidl::encoding::ResourceDialect,
4223        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
4224        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
4225    > fidl::encoding::Encode<NameMapping, D> for (T0, T1)
4226    {
4227        #[inline]
4228        unsafe fn encode(
4229            self,
4230            encoder: &mut fidl::encoding::Encoder<'_, D>,
4231            offset: usize,
4232            depth: fidl::encoding::Depth,
4233        ) -> fidl::Result<()> {
4234            encoder.debug_check_bounds::<NameMapping>(offset);
4235            // Zero out padding regions. There's no need to apply masks
4236            // because the unmasked parts will be overwritten by fields.
4237            // Write the fields.
4238            self.0.encode(encoder, offset + 0, depth)?;
4239            self.1.encode(encoder, offset + 16, depth)?;
4240            Ok(())
4241        }
4242    }
4243
4244    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NameMapping {
4245        #[inline(always)]
4246        fn new_empty() -> Self {
4247            Self {
4248                source_name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
4249                target_name: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
4250            }
4251        }
4252
4253        #[inline]
4254        unsafe fn decode(
4255            &mut self,
4256            decoder: &mut fidl::encoding::Decoder<'_, D>,
4257            offset: usize,
4258            _depth: fidl::encoding::Depth,
4259        ) -> fidl::Result<()> {
4260            decoder.debug_check_bounds::<Self>(offset);
4261            // Verify that padding bytes are zero.
4262            fidl::decode!(
4263                fidl::encoding::BoundedString<100>,
4264                D,
4265                &mut self.source_name,
4266                decoder,
4267                offset + 0,
4268                _depth
4269            )?;
4270            fidl::decode!(
4271                fidl::encoding::BoundedString<100>,
4272                D,
4273                &mut self.target_name,
4274                decoder,
4275                offset + 16,
4276                _depth
4277            )?;
4278            Ok(())
4279        }
4280    }
4281
4282    impl fidl::encoding::ValueTypeMarker for ParentRef {
4283        type Borrowed<'a> = &'a Self;
4284        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4285            value
4286        }
4287    }
4288
4289    unsafe impl fidl::encoding::TypeMarker for ParentRef {
4290        type Owned = Self;
4291
4292        #[inline(always)]
4293        fn inline_align(_context: fidl::encoding::Context) -> usize {
4294            1
4295        }
4296
4297        #[inline(always)]
4298        fn inline_size(_context: fidl::encoding::Context) -> usize {
4299            1
4300        }
4301    }
4302
4303    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentRef, D>
4304        for &ParentRef
4305    {
4306        #[inline]
4307        unsafe fn encode(
4308            self,
4309            encoder: &mut fidl::encoding::Encoder<'_, D>,
4310            offset: usize,
4311            _depth: fidl::encoding::Depth,
4312        ) -> fidl::Result<()> {
4313            encoder.debug_check_bounds::<ParentRef>(offset);
4314            encoder.write_num(0u8, offset);
4315            Ok(())
4316        }
4317    }
4318
4319    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentRef {
4320        #[inline(always)]
4321        fn new_empty() -> Self {
4322            Self
4323        }
4324
4325        #[inline]
4326        unsafe fn decode(
4327            &mut self,
4328            decoder: &mut fidl::encoding::Decoder<'_, D>,
4329            offset: usize,
4330            _depth: fidl::encoding::Depth,
4331        ) -> fidl::Result<()> {
4332            decoder.debug_check_bounds::<Self>(offset);
4333            match decoder.read_num::<u8>(offset) {
4334                0 => Ok(()),
4335                _ => Err(fidl::Error::Invalid),
4336            }
4337        }
4338    }
4339
4340    impl fidl::encoding::ValueTypeMarker for ResolvedConfig {
4341        type Borrowed<'a> = &'a Self;
4342        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4343            value
4344        }
4345    }
4346
4347    unsafe impl fidl::encoding::TypeMarker for ResolvedConfig {
4348        type Owned = Self;
4349
4350        #[inline(always)]
4351        fn inline_align(_context: fidl::encoding::Context) -> usize {
4352            8
4353        }
4354
4355        #[inline(always)]
4356        fn inline_size(_context: fidl::encoding::Context) -> usize {
4357            32
4358        }
4359    }
4360
4361    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolvedConfig, D>
4362        for &ResolvedConfig
4363    {
4364        #[inline]
4365        unsafe fn encode(
4366            self,
4367            encoder: &mut fidl::encoding::Encoder<'_, D>,
4368            offset: usize,
4369            _depth: fidl::encoding::Depth,
4370        ) -> fidl::Result<()> {
4371            encoder.debug_check_bounds::<ResolvedConfig>(offset);
4372            // Delegate to tuple encoding.
4373            fidl::encoding::Encode::<ResolvedConfig, D>::encode(
4374                (
4375                    <fidl::encoding::UnboundedVector<ResolvedConfigField> as fidl::encoding::ValueTypeMarker>::borrow(&self.fields),
4376                    <ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow(&self.checksum),
4377                ),
4378                encoder, offset, _depth
4379            )
4380        }
4381    }
4382    unsafe impl<
4383        D: fidl::encoding::ResourceDialect,
4384        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<ResolvedConfigField>, D>,
4385        T1: fidl::encoding::Encode<ConfigChecksum, D>,
4386    > fidl::encoding::Encode<ResolvedConfig, D> for (T0, T1)
4387    {
4388        #[inline]
4389        unsafe fn encode(
4390            self,
4391            encoder: &mut fidl::encoding::Encoder<'_, D>,
4392            offset: usize,
4393            depth: fidl::encoding::Depth,
4394        ) -> fidl::Result<()> {
4395            encoder.debug_check_bounds::<ResolvedConfig>(offset);
4396            // Zero out padding regions. There's no need to apply masks
4397            // because the unmasked parts will be overwritten by fields.
4398            // Write the fields.
4399            self.0.encode(encoder, offset + 0, depth)?;
4400            self.1.encode(encoder, offset + 16, depth)?;
4401            Ok(())
4402        }
4403    }
4404
4405    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolvedConfig {
4406        #[inline(always)]
4407        fn new_empty() -> Self {
4408            Self {
4409                fields: fidl::new_empty!(fidl::encoding::UnboundedVector<ResolvedConfigField>, D),
4410                checksum: fidl::new_empty!(ConfigChecksum, D),
4411            }
4412        }
4413
4414        #[inline]
4415        unsafe fn decode(
4416            &mut self,
4417            decoder: &mut fidl::encoding::Decoder<'_, D>,
4418            offset: usize,
4419            _depth: fidl::encoding::Depth,
4420        ) -> fidl::Result<()> {
4421            decoder.debug_check_bounds::<Self>(offset);
4422            // Verify that padding bytes are zero.
4423            fidl::decode!(
4424                fidl::encoding::UnboundedVector<ResolvedConfigField>,
4425                D,
4426                &mut self.fields,
4427                decoder,
4428                offset + 0,
4429                _depth
4430            )?;
4431            fidl::decode!(ConfigChecksum, D, &mut self.checksum, decoder, offset + 16, _depth)?;
4432            Ok(())
4433        }
4434    }
4435
4436    impl fidl::encoding::ValueTypeMarker for ResolvedConfigField {
4437        type Borrowed<'a> = &'a Self;
4438        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4439            value
4440        }
4441    }
4442
4443    unsafe impl fidl::encoding::TypeMarker for ResolvedConfigField {
4444        type Owned = Self;
4445
4446        #[inline(always)]
4447        fn inline_align(_context: fidl::encoding::Context) -> usize {
4448            8
4449        }
4450
4451        #[inline(always)]
4452        fn inline_size(_context: fidl::encoding::Context) -> usize {
4453            32
4454        }
4455    }
4456
4457    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolvedConfigField, D>
4458        for &ResolvedConfigField
4459    {
4460        #[inline]
4461        unsafe fn encode(
4462            self,
4463            encoder: &mut fidl::encoding::Encoder<'_, D>,
4464            offset: usize,
4465            _depth: fidl::encoding::Depth,
4466        ) -> fidl::Result<()> {
4467            encoder.debug_check_bounds::<ResolvedConfigField>(offset);
4468            // Delegate to tuple encoding.
4469            fidl::encoding::Encode::<ResolvedConfigField, D>::encode(
4470                (
4471                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
4472                        &self.key,
4473                    ),
4474                    <ConfigValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
4475                ),
4476                encoder,
4477                offset,
4478                _depth,
4479            )
4480        }
4481    }
4482    unsafe impl<
4483        D: fidl::encoding::ResourceDialect,
4484        T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
4485        T1: fidl::encoding::Encode<ConfigValue, D>,
4486    > fidl::encoding::Encode<ResolvedConfigField, D> for (T0, T1)
4487    {
4488        #[inline]
4489        unsafe fn encode(
4490            self,
4491            encoder: &mut fidl::encoding::Encoder<'_, D>,
4492            offset: usize,
4493            depth: fidl::encoding::Depth,
4494        ) -> fidl::Result<()> {
4495            encoder.debug_check_bounds::<ResolvedConfigField>(offset);
4496            // Zero out padding regions. There's no need to apply masks
4497            // because the unmasked parts will be overwritten by fields.
4498            // Write the fields.
4499            self.0.encode(encoder, offset + 0, depth)?;
4500            self.1.encode(encoder, offset + 16, depth)?;
4501            Ok(())
4502        }
4503    }
4504
4505    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResolvedConfigField {
4506        #[inline(always)]
4507        fn new_empty() -> Self {
4508            Self {
4509                key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
4510                value: fidl::new_empty!(ConfigValue, D),
4511            }
4512        }
4513
4514        #[inline]
4515        unsafe fn decode(
4516            &mut self,
4517            decoder: &mut fidl::encoding::Decoder<'_, D>,
4518            offset: usize,
4519            _depth: fidl::encoding::Depth,
4520        ) -> fidl::Result<()> {
4521            decoder.debug_check_bounds::<Self>(offset);
4522            // Verify that padding bytes are zero.
4523            fidl::decode!(
4524                fidl::encoding::UnboundedString,
4525                D,
4526                &mut self.key,
4527                decoder,
4528                offset + 0,
4529                _depth
4530            )?;
4531            fidl::decode!(ConfigValue, D, &mut self.value, decoder, offset + 16, _depth)?;
4532            Ok(())
4533        }
4534    }
4535
4536    impl fidl::encoding::ValueTypeMarker for SelfRef {
4537        type Borrowed<'a> = &'a Self;
4538        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4539            value
4540        }
4541    }
4542
4543    unsafe impl fidl::encoding::TypeMarker for SelfRef {
4544        type Owned = Self;
4545
4546        #[inline(always)]
4547        fn inline_align(_context: fidl::encoding::Context) -> usize {
4548            1
4549        }
4550
4551        #[inline(always)]
4552        fn inline_size(_context: fidl::encoding::Context) -> usize {
4553            1
4554        }
4555    }
4556
4557    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SelfRef, D> for &SelfRef {
4558        #[inline]
4559        unsafe fn encode(
4560            self,
4561            encoder: &mut fidl::encoding::Encoder<'_, D>,
4562            offset: usize,
4563            _depth: fidl::encoding::Depth,
4564        ) -> fidl::Result<()> {
4565            encoder.debug_check_bounds::<SelfRef>(offset);
4566            encoder.write_num(0u8, offset);
4567            Ok(())
4568        }
4569    }
4570
4571    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SelfRef {
4572        #[inline(always)]
4573        fn new_empty() -> Self {
4574            Self
4575        }
4576
4577        #[inline]
4578        unsafe fn decode(
4579            &mut self,
4580            decoder: &mut fidl::encoding::Decoder<'_, D>,
4581            offset: usize,
4582            _depth: fidl::encoding::Depth,
4583        ) -> fidl::Result<()> {
4584            decoder.debug_check_bounds::<Self>(offset);
4585            match decoder.read_num::<u8>(offset) {
4586                0 => Ok(()),
4587                _ => Err(fidl::Error::Invalid),
4588            }
4589        }
4590    }
4591
4592    impl fidl::encoding::ValueTypeMarker for VoidRef {
4593        type Borrowed<'a> = &'a Self;
4594        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4595            value
4596        }
4597    }
4598
4599    unsafe impl fidl::encoding::TypeMarker for VoidRef {
4600        type Owned = Self;
4601
4602        #[inline(always)]
4603        fn inline_align(_context: fidl::encoding::Context) -> usize {
4604            1
4605        }
4606
4607        #[inline(always)]
4608        fn inline_size(_context: fidl::encoding::Context) -> usize {
4609            1
4610        }
4611    }
4612
4613    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VoidRef, D> for &VoidRef {
4614        #[inline]
4615        unsafe fn encode(
4616            self,
4617            encoder: &mut fidl::encoding::Encoder<'_, D>,
4618            offset: usize,
4619            _depth: fidl::encoding::Depth,
4620        ) -> fidl::Result<()> {
4621            encoder.debug_check_bounds::<VoidRef>(offset);
4622            encoder.write_num(0u8, offset);
4623            Ok(())
4624        }
4625    }
4626
4627    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VoidRef {
4628        #[inline(always)]
4629        fn new_empty() -> Self {
4630            Self
4631        }
4632
4633        #[inline]
4634        unsafe fn decode(
4635            &mut self,
4636            decoder: &mut fidl::encoding::Decoder<'_, D>,
4637            offset: usize,
4638            _depth: fidl::encoding::Depth,
4639        ) -> fidl::Result<()> {
4640            decoder.debug_check_bounds::<Self>(offset);
4641            match decoder.read_num::<u8>(offset) {
4642                0 => Ok(()),
4643                _ => Err(fidl::Error::Invalid),
4644            }
4645        }
4646    }
4647
4648    impl Child {
4649        #[inline(always)]
4650        fn max_ordinal_present(&self) -> u64 {
4651            if let Some(_) = self.config_overrides {
4652                return 6;
4653            }
4654            if let Some(_) = self.on_terminate {
4655                return 5;
4656            }
4657            if let Some(_) = self.environment {
4658                return 4;
4659            }
4660            if let Some(_) = self.startup {
4661                return 3;
4662            }
4663            if let Some(_) = self.url {
4664                return 2;
4665            }
4666            if let Some(_) = self.name {
4667                return 1;
4668            }
4669            0
4670        }
4671    }
4672
4673    impl fidl::encoding::ValueTypeMarker for Child {
4674        type Borrowed<'a> = &'a Self;
4675        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4676            value
4677        }
4678    }
4679
4680    unsafe impl fidl::encoding::TypeMarker for Child {
4681        type Owned = Self;
4682
4683        #[inline(always)]
4684        fn inline_align(_context: fidl::encoding::Context) -> usize {
4685            8
4686        }
4687
4688        #[inline(always)]
4689        fn inline_size(_context: fidl::encoding::Context) -> usize {
4690            16
4691        }
4692    }
4693
4694    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Child, D> for &Child {
4695        unsafe fn encode(
4696            self,
4697            encoder: &mut fidl::encoding::Encoder<'_, D>,
4698            offset: usize,
4699            mut depth: fidl::encoding::Depth,
4700        ) -> fidl::Result<()> {
4701            encoder.debug_check_bounds::<Child>(offset);
4702            // Vector header
4703            let max_ordinal: u64 = self.max_ordinal_present();
4704            encoder.write_num(max_ordinal, offset);
4705            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4706            // Calling encoder.out_of_line_offset(0) is not allowed.
4707            if max_ordinal == 0 {
4708                return Ok(());
4709            }
4710            depth.increment()?;
4711            let envelope_size = 8;
4712            let bytes_len = max_ordinal as usize * envelope_size;
4713            #[allow(unused_variables)]
4714            let offset = encoder.out_of_line_offset(bytes_len);
4715            let mut _prev_end_offset: usize = 0;
4716            if 1 > max_ordinal {
4717                return Ok(());
4718            }
4719
4720            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4721            // are envelope_size bytes.
4722            let cur_offset: usize = (1 - 1) * envelope_size;
4723
4724            // Zero reserved fields.
4725            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4726
4727            // Safety:
4728            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4729            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4730            //   envelope_size bytes, there is always sufficient room.
4731            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4732            self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4733            encoder, offset + cur_offset, depth
4734        )?;
4735
4736            _prev_end_offset = cur_offset + envelope_size;
4737            if 2 > max_ordinal {
4738                return Ok(());
4739            }
4740
4741            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4742            // are envelope_size bytes.
4743            let cur_offset: usize = (2 - 1) * envelope_size;
4744
4745            // Zero reserved fields.
4746            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4747
4748            // Safety:
4749            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4750            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4751            //   envelope_size bytes, there is always sufficient room.
4752            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4753            self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4754            encoder, offset + cur_offset, depth
4755        )?;
4756
4757            _prev_end_offset = cur_offset + envelope_size;
4758            if 3 > max_ordinal {
4759                return Ok(());
4760            }
4761
4762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4763            // are envelope_size bytes.
4764            let cur_offset: usize = (3 - 1) * envelope_size;
4765
4766            // Zero reserved fields.
4767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4768
4769            // Safety:
4770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4772            //   envelope_size bytes, there is always sufficient room.
4773            fidl::encoding::encode_in_envelope_optional::<StartupMode, D>(
4774                self.startup.as_ref().map(<StartupMode as fidl::encoding::ValueTypeMarker>::borrow),
4775                encoder,
4776                offset + cur_offset,
4777                depth,
4778            )?;
4779
4780            _prev_end_offset = cur_offset + envelope_size;
4781            if 4 > max_ordinal {
4782                return Ok(());
4783            }
4784
4785            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4786            // are envelope_size bytes.
4787            let cur_offset: usize = (4 - 1) * envelope_size;
4788
4789            // Zero reserved fields.
4790            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4791
4792            // Safety:
4793            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4794            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4795            //   envelope_size bytes, there is always sufficient room.
4796            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
4797                self.environment.as_ref().map(
4798                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
4799                ),
4800                encoder,
4801                offset + cur_offset,
4802                depth,
4803            )?;
4804
4805            _prev_end_offset = cur_offset + envelope_size;
4806            if 5 > max_ordinal {
4807                return Ok(());
4808            }
4809
4810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4811            // are envelope_size bytes.
4812            let cur_offset: usize = (5 - 1) * envelope_size;
4813
4814            // Zero reserved fields.
4815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4816
4817            // Safety:
4818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4820            //   envelope_size bytes, there is always sufficient room.
4821            fidl::encoding::encode_in_envelope_optional::<OnTerminate, D>(
4822                self.on_terminate
4823                    .as_ref()
4824                    .map(<OnTerminate as fidl::encoding::ValueTypeMarker>::borrow),
4825                encoder,
4826                offset + cur_offset,
4827                depth,
4828            )?;
4829
4830            _prev_end_offset = cur_offset + envelope_size;
4831            if 6 > max_ordinal {
4832                return Ok(());
4833            }
4834
4835            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4836            // are envelope_size bytes.
4837            let cur_offset: usize = (6 - 1) * envelope_size;
4838
4839            // Zero reserved fields.
4840            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4841
4842            // Safety:
4843            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4844            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4845            //   envelope_size bytes, there is always sufficient room.
4846            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigOverride>, D>(
4847            self.config_overrides.as_ref().map(<fidl::encoding::UnboundedVector<ConfigOverride> as fidl::encoding::ValueTypeMarker>::borrow),
4848            encoder, offset + cur_offset, depth
4849        )?;
4850
4851            _prev_end_offset = cur_offset + envelope_size;
4852
4853            Ok(())
4854        }
4855    }
4856
4857    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Child {
4858        #[inline(always)]
4859        fn new_empty() -> Self {
4860            Self::default()
4861        }
4862
4863        unsafe fn decode(
4864            &mut self,
4865            decoder: &mut fidl::encoding::Decoder<'_, D>,
4866            offset: usize,
4867            mut depth: fidl::encoding::Depth,
4868        ) -> fidl::Result<()> {
4869            decoder.debug_check_bounds::<Self>(offset);
4870            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4871                None => return Err(fidl::Error::NotNullable),
4872                Some(len) => len,
4873            };
4874            // Calling decoder.out_of_line_offset(0) is not allowed.
4875            if len == 0 {
4876                return Ok(());
4877            };
4878            depth.increment()?;
4879            let envelope_size = 8;
4880            let bytes_len = len * envelope_size;
4881            let offset = decoder.out_of_line_offset(bytes_len)?;
4882            // Decode the envelope for each type.
4883            let mut _next_ordinal_to_read = 0;
4884            let mut next_offset = offset;
4885            let end_offset = offset + bytes_len;
4886            _next_ordinal_to_read += 1;
4887            if next_offset >= end_offset {
4888                return Ok(());
4889            }
4890
4891            // Decode unknown envelopes for gaps in ordinals.
4892            while _next_ordinal_to_read < 1 {
4893                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4894                _next_ordinal_to_read += 1;
4895                next_offset += envelope_size;
4896            }
4897
4898            let next_out_of_line = decoder.next_out_of_line();
4899            let handles_before = decoder.remaining_handles();
4900            if let Some((inlined, num_bytes, num_handles)) =
4901                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4902            {
4903                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4904                if inlined != (member_inline_size <= 4) {
4905                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4906                }
4907                let inner_offset;
4908                let mut inner_depth = depth.clone();
4909                if inlined {
4910                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4911                    inner_offset = next_offset;
4912                } else {
4913                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4914                    inner_depth.increment()?;
4915                }
4916                let val_ref = self.name.get_or_insert_with(|| {
4917                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4918                });
4919                fidl::decode!(
4920                    fidl::encoding::BoundedString<1024>,
4921                    D,
4922                    val_ref,
4923                    decoder,
4924                    inner_offset,
4925                    inner_depth
4926                )?;
4927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4928                {
4929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4930                }
4931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4933                }
4934            }
4935
4936            next_offset += envelope_size;
4937            _next_ordinal_to_read += 1;
4938            if next_offset >= end_offset {
4939                return Ok(());
4940            }
4941
4942            // Decode unknown envelopes for gaps in ordinals.
4943            while _next_ordinal_to_read < 2 {
4944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4945                _next_ordinal_to_read += 1;
4946                next_offset += envelope_size;
4947            }
4948
4949            let next_out_of_line = decoder.next_out_of_line();
4950            let handles_before = decoder.remaining_handles();
4951            if let Some((inlined, num_bytes, num_handles)) =
4952                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4953            {
4954                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4955                if inlined != (member_inline_size <= 4) {
4956                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4957                }
4958                let inner_offset;
4959                let mut inner_depth = depth.clone();
4960                if inlined {
4961                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4962                    inner_offset = next_offset;
4963                } else {
4964                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4965                    inner_depth.increment()?;
4966                }
4967                let val_ref = self.url.get_or_insert_with(|| {
4968                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4969                });
4970                fidl::decode!(
4971                    fidl::encoding::BoundedString<4096>,
4972                    D,
4973                    val_ref,
4974                    decoder,
4975                    inner_offset,
4976                    inner_depth
4977                )?;
4978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4979                {
4980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4981                }
4982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4984                }
4985            }
4986
4987            next_offset += envelope_size;
4988            _next_ordinal_to_read += 1;
4989            if next_offset >= end_offset {
4990                return Ok(());
4991            }
4992
4993            // Decode unknown envelopes for gaps in ordinals.
4994            while _next_ordinal_to_read < 3 {
4995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4996                _next_ordinal_to_read += 1;
4997                next_offset += envelope_size;
4998            }
4999
5000            let next_out_of_line = decoder.next_out_of_line();
5001            let handles_before = decoder.remaining_handles();
5002            if let Some((inlined, num_bytes, num_handles)) =
5003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5004            {
5005                let member_inline_size =
5006                    <StartupMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5007                if inlined != (member_inline_size <= 4) {
5008                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5009                }
5010                let inner_offset;
5011                let mut inner_depth = depth.clone();
5012                if inlined {
5013                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5014                    inner_offset = next_offset;
5015                } else {
5016                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5017                    inner_depth.increment()?;
5018                }
5019                let val_ref = self.startup.get_or_insert_with(|| fidl::new_empty!(StartupMode, D));
5020                fidl::decode!(StartupMode, D, val_ref, decoder, inner_offset, inner_depth)?;
5021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5022                {
5023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5024                }
5025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5027                }
5028            }
5029
5030            next_offset += envelope_size;
5031            _next_ordinal_to_read += 1;
5032            if next_offset >= end_offset {
5033                return Ok(());
5034            }
5035
5036            // Decode unknown envelopes for gaps in ordinals.
5037            while _next_ordinal_to_read < 4 {
5038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5039                _next_ordinal_to_read += 1;
5040                next_offset += envelope_size;
5041            }
5042
5043            let next_out_of_line = decoder.next_out_of_line();
5044            let handles_before = decoder.remaining_handles();
5045            if let Some((inlined, num_bytes, num_handles)) =
5046                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5047            {
5048                let member_inline_size =
5049                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5050                        decoder.context,
5051                    );
5052                if inlined != (member_inline_size <= 4) {
5053                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5054                }
5055                let inner_offset;
5056                let mut inner_depth = depth.clone();
5057                if inlined {
5058                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5059                    inner_offset = next_offset;
5060                } else {
5061                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5062                    inner_depth.increment()?;
5063                }
5064                let val_ref = self
5065                    .environment
5066                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5067                fidl::decode!(
5068                    fidl::encoding::BoundedString<100>,
5069                    D,
5070                    val_ref,
5071                    decoder,
5072                    inner_offset,
5073                    inner_depth
5074                )?;
5075                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5076                {
5077                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5078                }
5079                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5080                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5081                }
5082            }
5083
5084            next_offset += envelope_size;
5085            _next_ordinal_to_read += 1;
5086            if next_offset >= end_offset {
5087                return Ok(());
5088            }
5089
5090            // Decode unknown envelopes for gaps in ordinals.
5091            while _next_ordinal_to_read < 5 {
5092                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5093                _next_ordinal_to_read += 1;
5094                next_offset += envelope_size;
5095            }
5096
5097            let next_out_of_line = decoder.next_out_of_line();
5098            let handles_before = decoder.remaining_handles();
5099            if let Some((inlined, num_bytes, num_handles)) =
5100                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5101            {
5102                let member_inline_size =
5103                    <OnTerminate as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5104                if inlined != (member_inline_size <= 4) {
5105                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5106                }
5107                let inner_offset;
5108                let mut inner_depth = depth.clone();
5109                if inlined {
5110                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5111                    inner_offset = next_offset;
5112                } else {
5113                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5114                    inner_depth.increment()?;
5115                }
5116                let val_ref =
5117                    self.on_terminate.get_or_insert_with(|| fidl::new_empty!(OnTerminate, D));
5118                fidl::decode!(OnTerminate, D, val_ref, decoder, inner_offset, inner_depth)?;
5119                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5120                {
5121                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5122                }
5123                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5124                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5125                }
5126            }
5127
5128            next_offset += envelope_size;
5129            _next_ordinal_to_read += 1;
5130            if next_offset >= end_offset {
5131                return Ok(());
5132            }
5133
5134            // Decode unknown envelopes for gaps in ordinals.
5135            while _next_ordinal_to_read < 6 {
5136                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5137                _next_ordinal_to_read += 1;
5138                next_offset += envelope_size;
5139            }
5140
5141            let next_out_of_line = decoder.next_out_of_line();
5142            let handles_before = decoder.remaining_handles();
5143            if let Some((inlined, num_bytes, num_handles)) =
5144                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5145            {
5146                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigOverride> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5147                if inlined != (member_inline_size <= 4) {
5148                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5149                }
5150                let inner_offset;
5151                let mut inner_depth = depth.clone();
5152                if inlined {
5153                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5154                    inner_offset = next_offset;
5155                } else {
5156                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5157                    inner_depth.increment()?;
5158                }
5159                let val_ref = self.config_overrides.get_or_insert_with(|| {
5160                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigOverride>, D)
5161                });
5162                fidl::decode!(
5163                    fidl::encoding::UnboundedVector<ConfigOverride>,
5164                    D,
5165                    val_ref,
5166                    decoder,
5167                    inner_offset,
5168                    inner_depth
5169                )?;
5170                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5171                {
5172                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5173                }
5174                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5175                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5176                }
5177            }
5178
5179            next_offset += envelope_size;
5180
5181            // Decode the remaining unknown envelopes.
5182            while next_offset < end_offset {
5183                _next_ordinal_to_read += 1;
5184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5185                next_offset += envelope_size;
5186            }
5187
5188            Ok(())
5189        }
5190    }
5191
5192    impl Collection {
5193        #[inline(always)]
5194        fn max_ordinal_present(&self) -> u64 {
5195            if let Some(_) = self.persistent_storage {
5196                return 6;
5197            }
5198            if let Some(_) = self.allow_long_names {
5199                return 5;
5200            }
5201            if let Some(_) = self.allowed_offers {
5202                return 4;
5203            }
5204            if let Some(_) = self.environment {
5205                return 3;
5206            }
5207            if let Some(_) = self.durability {
5208                return 2;
5209            }
5210            if let Some(_) = self.name {
5211                return 1;
5212            }
5213            0
5214        }
5215    }
5216
5217    impl fidl::encoding::ValueTypeMarker for Collection {
5218        type Borrowed<'a> = &'a Self;
5219        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5220            value
5221        }
5222    }
5223
5224    unsafe impl fidl::encoding::TypeMarker for Collection {
5225        type Owned = Self;
5226
5227        #[inline(always)]
5228        fn inline_align(_context: fidl::encoding::Context) -> usize {
5229            8
5230        }
5231
5232        #[inline(always)]
5233        fn inline_size(_context: fidl::encoding::Context) -> usize {
5234            16
5235        }
5236    }
5237
5238    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Collection, D>
5239        for &Collection
5240    {
5241        unsafe fn encode(
5242            self,
5243            encoder: &mut fidl::encoding::Encoder<'_, D>,
5244            offset: usize,
5245            mut depth: fidl::encoding::Depth,
5246        ) -> fidl::Result<()> {
5247            encoder.debug_check_bounds::<Collection>(offset);
5248            // Vector header
5249            let max_ordinal: u64 = self.max_ordinal_present();
5250            encoder.write_num(max_ordinal, offset);
5251            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5252            // Calling encoder.out_of_line_offset(0) is not allowed.
5253            if max_ordinal == 0 {
5254                return Ok(());
5255            }
5256            depth.increment()?;
5257            let envelope_size = 8;
5258            let bytes_len = max_ordinal as usize * envelope_size;
5259            #[allow(unused_variables)]
5260            let offset = encoder.out_of_line_offset(bytes_len);
5261            let mut _prev_end_offset: usize = 0;
5262            if 1 > max_ordinal {
5263                return Ok(());
5264            }
5265
5266            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5267            // are envelope_size bytes.
5268            let cur_offset: usize = (1 - 1) * envelope_size;
5269
5270            // Zero reserved fields.
5271            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5272
5273            // Safety:
5274            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5275            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5276            //   envelope_size bytes, there is always sufficient room.
5277            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5278                self.name.as_ref().map(
5279                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5280                ),
5281                encoder,
5282                offset + cur_offset,
5283                depth,
5284            )?;
5285
5286            _prev_end_offset = cur_offset + envelope_size;
5287            if 2 > max_ordinal {
5288                return Ok(());
5289            }
5290
5291            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5292            // are envelope_size bytes.
5293            let cur_offset: usize = (2 - 1) * envelope_size;
5294
5295            // Zero reserved fields.
5296            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5297
5298            // Safety:
5299            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5300            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5301            //   envelope_size bytes, there is always sufficient room.
5302            fidl::encoding::encode_in_envelope_optional::<Durability, D>(
5303                self.durability
5304                    .as_ref()
5305                    .map(<Durability as fidl::encoding::ValueTypeMarker>::borrow),
5306                encoder,
5307                offset + cur_offset,
5308                depth,
5309            )?;
5310
5311            _prev_end_offset = cur_offset + envelope_size;
5312            if 3 > max_ordinal {
5313                return Ok(());
5314            }
5315
5316            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5317            // are envelope_size bytes.
5318            let cur_offset: usize = (3 - 1) * envelope_size;
5319
5320            // Zero reserved fields.
5321            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5322
5323            // Safety:
5324            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5325            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5326            //   envelope_size bytes, there is always sufficient room.
5327            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5328                self.environment.as_ref().map(
5329                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5330                ),
5331                encoder,
5332                offset + cur_offset,
5333                depth,
5334            )?;
5335
5336            _prev_end_offset = cur_offset + envelope_size;
5337            if 4 > max_ordinal {
5338                return Ok(());
5339            }
5340
5341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5342            // are envelope_size bytes.
5343            let cur_offset: usize = (4 - 1) * envelope_size;
5344
5345            // Zero reserved fields.
5346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5347
5348            // Safety:
5349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5351            //   envelope_size bytes, there is always sufficient room.
5352            fidl::encoding::encode_in_envelope_optional::<AllowedOffers, D>(
5353                self.allowed_offers
5354                    .as_ref()
5355                    .map(<AllowedOffers as fidl::encoding::ValueTypeMarker>::borrow),
5356                encoder,
5357                offset + cur_offset,
5358                depth,
5359            )?;
5360
5361            _prev_end_offset = cur_offset + envelope_size;
5362            if 5 > max_ordinal {
5363                return Ok(());
5364            }
5365
5366            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5367            // are envelope_size bytes.
5368            let cur_offset: usize = (5 - 1) * envelope_size;
5369
5370            // Zero reserved fields.
5371            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5372
5373            // Safety:
5374            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5375            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5376            //   envelope_size bytes, there is always sufficient room.
5377            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5378                self.allow_long_names
5379                    .as_ref()
5380                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5381                encoder,
5382                offset + cur_offset,
5383                depth,
5384            )?;
5385
5386            _prev_end_offset = cur_offset + envelope_size;
5387            if 6 > max_ordinal {
5388                return Ok(());
5389            }
5390
5391            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5392            // are envelope_size bytes.
5393            let cur_offset: usize = (6 - 1) * envelope_size;
5394
5395            // Zero reserved fields.
5396            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5397
5398            // Safety:
5399            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5400            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5401            //   envelope_size bytes, there is always sufficient room.
5402            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5403                self.persistent_storage
5404                    .as_ref()
5405                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5406                encoder,
5407                offset + cur_offset,
5408                depth,
5409            )?;
5410
5411            _prev_end_offset = cur_offset + envelope_size;
5412
5413            Ok(())
5414        }
5415    }
5416
5417    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Collection {
5418        #[inline(always)]
5419        fn new_empty() -> Self {
5420            Self::default()
5421        }
5422
5423        unsafe fn decode(
5424            &mut self,
5425            decoder: &mut fidl::encoding::Decoder<'_, D>,
5426            offset: usize,
5427            mut depth: fidl::encoding::Depth,
5428        ) -> fidl::Result<()> {
5429            decoder.debug_check_bounds::<Self>(offset);
5430            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5431                None => return Err(fidl::Error::NotNullable),
5432                Some(len) => len,
5433            };
5434            // Calling decoder.out_of_line_offset(0) is not allowed.
5435            if len == 0 {
5436                return Ok(());
5437            };
5438            depth.increment()?;
5439            let envelope_size = 8;
5440            let bytes_len = len * envelope_size;
5441            let offset = decoder.out_of_line_offset(bytes_len)?;
5442            // Decode the envelope for each type.
5443            let mut _next_ordinal_to_read = 0;
5444            let mut next_offset = offset;
5445            let end_offset = offset + bytes_len;
5446            _next_ordinal_to_read += 1;
5447            if next_offset >= end_offset {
5448                return Ok(());
5449            }
5450
5451            // Decode unknown envelopes for gaps in ordinals.
5452            while _next_ordinal_to_read < 1 {
5453                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5454                _next_ordinal_to_read += 1;
5455                next_offset += envelope_size;
5456            }
5457
5458            let next_out_of_line = decoder.next_out_of_line();
5459            let handles_before = decoder.remaining_handles();
5460            if let Some((inlined, num_bytes, num_handles)) =
5461                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5462            {
5463                let member_inline_size =
5464                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5465                        decoder.context,
5466                    );
5467                if inlined != (member_inline_size <= 4) {
5468                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5469                }
5470                let inner_offset;
5471                let mut inner_depth = depth.clone();
5472                if inlined {
5473                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5474                    inner_offset = next_offset;
5475                } else {
5476                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5477                    inner_depth.increment()?;
5478                }
5479                let val_ref = self
5480                    .name
5481                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5482                fidl::decode!(
5483                    fidl::encoding::BoundedString<100>,
5484                    D,
5485                    val_ref,
5486                    decoder,
5487                    inner_offset,
5488                    inner_depth
5489                )?;
5490                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5491                {
5492                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5493                }
5494                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5495                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5496                }
5497            }
5498
5499            next_offset += envelope_size;
5500            _next_ordinal_to_read += 1;
5501            if next_offset >= end_offset {
5502                return Ok(());
5503            }
5504
5505            // Decode unknown envelopes for gaps in ordinals.
5506            while _next_ordinal_to_read < 2 {
5507                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5508                _next_ordinal_to_read += 1;
5509                next_offset += envelope_size;
5510            }
5511
5512            let next_out_of_line = decoder.next_out_of_line();
5513            let handles_before = decoder.remaining_handles();
5514            if let Some((inlined, num_bytes, num_handles)) =
5515                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5516            {
5517                let member_inline_size =
5518                    <Durability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5519                if inlined != (member_inline_size <= 4) {
5520                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5521                }
5522                let inner_offset;
5523                let mut inner_depth = depth.clone();
5524                if inlined {
5525                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5526                    inner_offset = next_offset;
5527                } else {
5528                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5529                    inner_depth.increment()?;
5530                }
5531                let val_ref =
5532                    self.durability.get_or_insert_with(|| fidl::new_empty!(Durability, D));
5533                fidl::decode!(Durability, D, val_ref, decoder, inner_offset, inner_depth)?;
5534                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5535                {
5536                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5537                }
5538                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5539                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5540                }
5541            }
5542
5543            next_offset += envelope_size;
5544            _next_ordinal_to_read += 1;
5545            if next_offset >= end_offset {
5546                return Ok(());
5547            }
5548
5549            // Decode unknown envelopes for gaps in ordinals.
5550            while _next_ordinal_to_read < 3 {
5551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5552                _next_ordinal_to_read += 1;
5553                next_offset += envelope_size;
5554            }
5555
5556            let next_out_of_line = decoder.next_out_of_line();
5557            let handles_before = decoder.remaining_handles();
5558            if let Some((inlined, num_bytes, num_handles)) =
5559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5560            {
5561                let member_inline_size =
5562                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5563                        decoder.context,
5564                    );
5565                if inlined != (member_inline_size <= 4) {
5566                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5567                }
5568                let inner_offset;
5569                let mut inner_depth = depth.clone();
5570                if inlined {
5571                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5572                    inner_offset = next_offset;
5573                } else {
5574                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5575                    inner_depth.increment()?;
5576                }
5577                let val_ref = self
5578                    .environment
5579                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5580                fidl::decode!(
5581                    fidl::encoding::BoundedString<100>,
5582                    D,
5583                    val_ref,
5584                    decoder,
5585                    inner_offset,
5586                    inner_depth
5587                )?;
5588                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5589                {
5590                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5591                }
5592                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5593                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5594                }
5595            }
5596
5597            next_offset += envelope_size;
5598            _next_ordinal_to_read += 1;
5599            if next_offset >= end_offset {
5600                return Ok(());
5601            }
5602
5603            // Decode unknown envelopes for gaps in ordinals.
5604            while _next_ordinal_to_read < 4 {
5605                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5606                _next_ordinal_to_read += 1;
5607                next_offset += envelope_size;
5608            }
5609
5610            let next_out_of_line = decoder.next_out_of_line();
5611            let handles_before = decoder.remaining_handles();
5612            if let Some((inlined, num_bytes, num_handles)) =
5613                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5614            {
5615                let member_inline_size =
5616                    <AllowedOffers as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5617                if inlined != (member_inline_size <= 4) {
5618                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5619                }
5620                let inner_offset;
5621                let mut inner_depth = depth.clone();
5622                if inlined {
5623                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5624                    inner_offset = next_offset;
5625                } else {
5626                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5627                    inner_depth.increment()?;
5628                }
5629                let val_ref =
5630                    self.allowed_offers.get_or_insert_with(|| fidl::new_empty!(AllowedOffers, D));
5631                fidl::decode!(AllowedOffers, D, val_ref, decoder, inner_offset, inner_depth)?;
5632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5633                {
5634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5635                }
5636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5638                }
5639            }
5640
5641            next_offset += envelope_size;
5642            _next_ordinal_to_read += 1;
5643            if next_offset >= end_offset {
5644                return Ok(());
5645            }
5646
5647            // Decode unknown envelopes for gaps in ordinals.
5648            while _next_ordinal_to_read < 5 {
5649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5650                _next_ordinal_to_read += 1;
5651                next_offset += envelope_size;
5652            }
5653
5654            let next_out_of_line = decoder.next_out_of_line();
5655            let handles_before = decoder.remaining_handles();
5656            if let Some((inlined, num_bytes, num_handles)) =
5657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5658            {
5659                let member_inline_size =
5660                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5661                if inlined != (member_inline_size <= 4) {
5662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5663                }
5664                let inner_offset;
5665                let mut inner_depth = depth.clone();
5666                if inlined {
5667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5668                    inner_offset = next_offset;
5669                } else {
5670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5671                    inner_depth.increment()?;
5672                }
5673                let val_ref =
5674                    self.allow_long_names.get_or_insert_with(|| fidl::new_empty!(bool, D));
5675                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5677                {
5678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5679                }
5680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5682                }
5683            }
5684
5685            next_offset += envelope_size;
5686            _next_ordinal_to_read += 1;
5687            if next_offset >= end_offset {
5688                return Ok(());
5689            }
5690
5691            // Decode unknown envelopes for gaps in ordinals.
5692            while _next_ordinal_to_read < 6 {
5693                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5694                _next_ordinal_to_read += 1;
5695                next_offset += envelope_size;
5696            }
5697
5698            let next_out_of_line = decoder.next_out_of_line();
5699            let handles_before = decoder.remaining_handles();
5700            if let Some((inlined, num_bytes, num_handles)) =
5701                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5702            {
5703                let member_inline_size =
5704                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5705                if inlined != (member_inline_size <= 4) {
5706                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5707                }
5708                let inner_offset;
5709                let mut inner_depth = depth.clone();
5710                if inlined {
5711                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5712                    inner_offset = next_offset;
5713                } else {
5714                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5715                    inner_depth.increment()?;
5716                }
5717                let val_ref =
5718                    self.persistent_storage.get_or_insert_with(|| fidl::new_empty!(bool, D));
5719                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5720                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5721                {
5722                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5723                }
5724                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5725                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5726                }
5727            }
5728
5729            next_offset += envelope_size;
5730
5731            // Decode the remaining unknown envelopes.
5732            while next_offset < end_offset {
5733                _next_ordinal_to_read += 1;
5734                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5735                next_offset += envelope_size;
5736            }
5737
5738            Ok(())
5739        }
5740    }
5741
5742    impl Component {
5743        #[inline(always)]
5744        fn max_ordinal_present(&self) -> u64 {
5745            if let Some(_) = self.config {
5746                return 10;
5747            }
5748            if let Some(_) = self.facets {
5749                return 9;
5750            }
5751            if let Some(_) = self.environments {
5752                return 8;
5753            }
5754            if let Some(_) = self.collections {
5755                return 7;
5756            }
5757            if let Some(_) = self.children {
5758                return 6;
5759            }
5760            if let Some(_) = self.capabilities {
5761                return 5;
5762            }
5763            if let Some(_) = self.offers {
5764                return 4;
5765            }
5766            if let Some(_) = self.exposes {
5767                return 3;
5768            }
5769            if let Some(_) = self.uses {
5770                return 2;
5771            }
5772            if let Some(_) = self.program {
5773                return 1;
5774            }
5775            0
5776        }
5777    }
5778
5779    impl fidl::encoding::ValueTypeMarker for Component {
5780        type Borrowed<'a> = &'a Self;
5781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5782            value
5783        }
5784    }
5785
5786    unsafe impl fidl::encoding::TypeMarker for Component {
5787        type Owned = Self;
5788
5789        #[inline(always)]
5790        fn inline_align(_context: fidl::encoding::Context) -> usize {
5791            8
5792        }
5793
5794        #[inline(always)]
5795        fn inline_size(_context: fidl::encoding::Context) -> usize {
5796            16
5797        }
5798    }
5799
5800    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Component, D>
5801        for &Component
5802    {
5803        unsafe fn encode(
5804            self,
5805            encoder: &mut fidl::encoding::Encoder<'_, D>,
5806            offset: usize,
5807            mut depth: fidl::encoding::Depth,
5808        ) -> fidl::Result<()> {
5809            encoder.debug_check_bounds::<Component>(offset);
5810            // Vector header
5811            let max_ordinal: u64 = self.max_ordinal_present();
5812            encoder.write_num(max_ordinal, offset);
5813            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5814            // Calling encoder.out_of_line_offset(0) is not allowed.
5815            if max_ordinal == 0 {
5816                return Ok(());
5817            }
5818            depth.increment()?;
5819            let envelope_size = 8;
5820            let bytes_len = max_ordinal as usize * envelope_size;
5821            #[allow(unused_variables)]
5822            let offset = encoder.out_of_line_offset(bytes_len);
5823            let mut _prev_end_offset: usize = 0;
5824            if 1 > max_ordinal {
5825                return Ok(());
5826            }
5827
5828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5829            // are envelope_size bytes.
5830            let cur_offset: usize = (1 - 1) * envelope_size;
5831
5832            // Zero reserved fields.
5833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5834
5835            // Safety:
5836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5838            //   envelope_size bytes, there is always sufficient room.
5839            fidl::encoding::encode_in_envelope_optional::<Program, D>(
5840                self.program.as_ref().map(<Program as fidl::encoding::ValueTypeMarker>::borrow),
5841                encoder,
5842                offset + cur_offset,
5843                depth,
5844            )?;
5845
5846            _prev_end_offset = cur_offset + envelope_size;
5847            if 2 > max_ordinal {
5848                return Ok(());
5849            }
5850
5851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5852            // are envelope_size bytes.
5853            let cur_offset: usize = (2 - 1) * envelope_size;
5854
5855            // Zero reserved fields.
5856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5857
5858            // Safety:
5859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5861            //   envelope_size bytes, there is always sufficient room.
5862            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Use>, D>(
5863            self.uses.as_ref().map(<fidl::encoding::UnboundedVector<Use> as fidl::encoding::ValueTypeMarker>::borrow),
5864            encoder, offset + cur_offset, depth
5865        )?;
5866
5867            _prev_end_offset = cur_offset + envelope_size;
5868            if 3 > max_ordinal {
5869                return Ok(());
5870            }
5871
5872            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5873            // are envelope_size bytes.
5874            let cur_offset: usize = (3 - 1) * envelope_size;
5875
5876            // Zero reserved fields.
5877            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5878
5879            // Safety:
5880            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5881            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5882            //   envelope_size bytes, there is always sufficient room.
5883            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Expose>, D>(
5884            self.exposes.as_ref().map(<fidl::encoding::UnboundedVector<Expose> as fidl::encoding::ValueTypeMarker>::borrow),
5885            encoder, offset + cur_offset, depth
5886        )?;
5887
5888            _prev_end_offset = cur_offset + envelope_size;
5889            if 4 > max_ordinal {
5890                return Ok(());
5891            }
5892
5893            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5894            // are envelope_size bytes.
5895            let cur_offset: usize = (4 - 1) * envelope_size;
5896
5897            // Zero reserved fields.
5898            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5899
5900            // Safety:
5901            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5902            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5903            //   envelope_size bytes, there is always sufficient room.
5904            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Offer>, D>(
5905            self.offers.as_ref().map(<fidl::encoding::UnboundedVector<Offer> as fidl::encoding::ValueTypeMarker>::borrow),
5906            encoder, offset + cur_offset, depth
5907        )?;
5908
5909            _prev_end_offset = cur_offset + envelope_size;
5910            if 5 > max_ordinal {
5911                return Ok(());
5912            }
5913
5914            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5915            // are envelope_size bytes.
5916            let cur_offset: usize = (5 - 1) * envelope_size;
5917
5918            // Zero reserved fields.
5919            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5920
5921            // Safety:
5922            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5923            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5924            //   envelope_size bytes, there is always sufficient room.
5925            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Capability>, D>(
5926            self.capabilities.as_ref().map(<fidl::encoding::UnboundedVector<Capability> as fidl::encoding::ValueTypeMarker>::borrow),
5927            encoder, offset + cur_offset, depth
5928        )?;
5929
5930            _prev_end_offset = cur_offset + envelope_size;
5931            if 6 > max_ordinal {
5932                return Ok(());
5933            }
5934
5935            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5936            // are envelope_size bytes.
5937            let cur_offset: usize = (6 - 1) * envelope_size;
5938
5939            // Zero reserved fields.
5940            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5941
5942            // Safety:
5943            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5944            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5945            //   envelope_size bytes, there is always sufficient room.
5946            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Child>, D>(
5947            self.children.as_ref().map(<fidl::encoding::UnboundedVector<Child> as fidl::encoding::ValueTypeMarker>::borrow),
5948            encoder, offset + cur_offset, depth
5949        )?;
5950
5951            _prev_end_offset = cur_offset + envelope_size;
5952            if 7 > max_ordinal {
5953                return Ok(());
5954            }
5955
5956            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5957            // are envelope_size bytes.
5958            let cur_offset: usize = (7 - 1) * envelope_size;
5959
5960            // Zero reserved fields.
5961            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5962
5963            // Safety:
5964            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5965            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5966            //   envelope_size bytes, there is always sufficient room.
5967            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Collection>, D>(
5968            self.collections.as_ref().map(<fidl::encoding::UnboundedVector<Collection> as fidl::encoding::ValueTypeMarker>::borrow),
5969            encoder, offset + cur_offset, depth
5970        )?;
5971
5972            _prev_end_offset = cur_offset + envelope_size;
5973            if 8 > max_ordinal {
5974                return Ok(());
5975            }
5976
5977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5978            // are envelope_size bytes.
5979            let cur_offset: usize = (8 - 1) * envelope_size;
5980
5981            // Zero reserved fields.
5982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5983
5984            // Safety:
5985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5987            //   envelope_size bytes, there is always sufficient room.
5988            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Environment>, D>(
5989            self.environments.as_ref().map(<fidl::encoding::UnboundedVector<Environment> as fidl::encoding::ValueTypeMarker>::borrow),
5990            encoder, offset + cur_offset, depth
5991        )?;
5992
5993            _prev_end_offset = cur_offset + envelope_size;
5994            if 9 > max_ordinal {
5995                return Ok(());
5996            }
5997
5998            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5999            // are envelope_size bytes.
6000            let cur_offset: usize = (9 - 1) * envelope_size;
6001
6002            // Zero reserved fields.
6003            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6004
6005            // Safety:
6006            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6007            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6008            //   envelope_size bytes, there is always sufficient room.
6009            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
6010            self.facets.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
6011            encoder, offset + cur_offset, depth
6012        )?;
6013
6014            _prev_end_offset = cur_offset + envelope_size;
6015            if 10 > max_ordinal {
6016                return Ok(());
6017            }
6018
6019            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6020            // are envelope_size bytes.
6021            let cur_offset: usize = (10 - 1) * envelope_size;
6022
6023            // Zero reserved fields.
6024            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6025
6026            // Safety:
6027            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6028            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6029            //   envelope_size bytes, there is always sufficient room.
6030            fidl::encoding::encode_in_envelope_optional::<ConfigSchema, D>(
6031                self.config.as_ref().map(<ConfigSchema as fidl::encoding::ValueTypeMarker>::borrow),
6032                encoder,
6033                offset + cur_offset,
6034                depth,
6035            )?;
6036
6037            _prev_end_offset = cur_offset + envelope_size;
6038
6039            Ok(())
6040        }
6041    }
6042
6043    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Component {
6044        #[inline(always)]
6045        fn new_empty() -> Self {
6046            Self::default()
6047        }
6048
6049        unsafe fn decode(
6050            &mut self,
6051            decoder: &mut fidl::encoding::Decoder<'_, D>,
6052            offset: usize,
6053            mut depth: fidl::encoding::Depth,
6054        ) -> fidl::Result<()> {
6055            decoder.debug_check_bounds::<Self>(offset);
6056            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6057                None => return Err(fidl::Error::NotNullable),
6058                Some(len) => len,
6059            };
6060            // Calling decoder.out_of_line_offset(0) is not allowed.
6061            if len == 0 {
6062                return Ok(());
6063            };
6064            depth.increment()?;
6065            let envelope_size = 8;
6066            let bytes_len = len * envelope_size;
6067            let offset = decoder.out_of_line_offset(bytes_len)?;
6068            // Decode the envelope for each type.
6069            let mut _next_ordinal_to_read = 0;
6070            let mut next_offset = offset;
6071            let end_offset = offset + bytes_len;
6072            _next_ordinal_to_read += 1;
6073            if next_offset >= end_offset {
6074                return Ok(());
6075            }
6076
6077            // Decode unknown envelopes for gaps in ordinals.
6078            while _next_ordinal_to_read < 1 {
6079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6080                _next_ordinal_to_read += 1;
6081                next_offset += envelope_size;
6082            }
6083
6084            let next_out_of_line = decoder.next_out_of_line();
6085            let handles_before = decoder.remaining_handles();
6086            if let Some((inlined, num_bytes, num_handles)) =
6087                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6088            {
6089                let member_inline_size =
6090                    <Program as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6091                if inlined != (member_inline_size <= 4) {
6092                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6093                }
6094                let inner_offset;
6095                let mut inner_depth = depth.clone();
6096                if inlined {
6097                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6098                    inner_offset = next_offset;
6099                } else {
6100                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6101                    inner_depth.increment()?;
6102                }
6103                let val_ref = self.program.get_or_insert_with(|| fidl::new_empty!(Program, D));
6104                fidl::decode!(Program, D, val_ref, decoder, inner_offset, inner_depth)?;
6105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6106                {
6107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6108                }
6109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6111                }
6112            }
6113
6114            next_offset += envelope_size;
6115            _next_ordinal_to_read += 1;
6116            if next_offset >= end_offset {
6117                return Ok(());
6118            }
6119
6120            // Decode unknown envelopes for gaps in ordinals.
6121            while _next_ordinal_to_read < 2 {
6122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6123                _next_ordinal_to_read += 1;
6124                next_offset += envelope_size;
6125            }
6126
6127            let next_out_of_line = decoder.next_out_of_line();
6128            let handles_before = decoder.remaining_handles();
6129            if let Some((inlined, num_bytes, num_handles)) =
6130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6131            {
6132                let member_inline_size = <fidl::encoding::UnboundedVector<Use> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6133                if inlined != (member_inline_size <= 4) {
6134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6135                }
6136                let inner_offset;
6137                let mut inner_depth = depth.clone();
6138                if inlined {
6139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6140                    inner_offset = next_offset;
6141                } else {
6142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6143                    inner_depth.increment()?;
6144                }
6145                let val_ref = self.uses.get_or_insert_with(|| {
6146                    fidl::new_empty!(fidl::encoding::UnboundedVector<Use>, D)
6147                });
6148                fidl::decode!(
6149                    fidl::encoding::UnboundedVector<Use>,
6150                    D,
6151                    val_ref,
6152                    decoder,
6153                    inner_offset,
6154                    inner_depth
6155                )?;
6156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6157                {
6158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6159                }
6160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6162                }
6163            }
6164
6165            next_offset += envelope_size;
6166            _next_ordinal_to_read += 1;
6167            if next_offset >= end_offset {
6168                return Ok(());
6169            }
6170
6171            // Decode unknown envelopes for gaps in ordinals.
6172            while _next_ordinal_to_read < 3 {
6173                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6174                _next_ordinal_to_read += 1;
6175                next_offset += envelope_size;
6176            }
6177
6178            let next_out_of_line = decoder.next_out_of_line();
6179            let handles_before = decoder.remaining_handles();
6180            if let Some((inlined, num_bytes, num_handles)) =
6181                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6182            {
6183                let member_inline_size = <fidl::encoding::UnboundedVector<Expose> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6184                if inlined != (member_inline_size <= 4) {
6185                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6186                }
6187                let inner_offset;
6188                let mut inner_depth = depth.clone();
6189                if inlined {
6190                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6191                    inner_offset = next_offset;
6192                } else {
6193                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6194                    inner_depth.increment()?;
6195                }
6196                let val_ref = self.exposes.get_or_insert_with(|| {
6197                    fidl::new_empty!(fidl::encoding::UnboundedVector<Expose>, D)
6198                });
6199                fidl::decode!(
6200                    fidl::encoding::UnboundedVector<Expose>,
6201                    D,
6202                    val_ref,
6203                    decoder,
6204                    inner_offset,
6205                    inner_depth
6206                )?;
6207                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6208                {
6209                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6210                }
6211                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6212                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6213                }
6214            }
6215
6216            next_offset += envelope_size;
6217            _next_ordinal_to_read += 1;
6218            if next_offset >= end_offset {
6219                return Ok(());
6220            }
6221
6222            // Decode unknown envelopes for gaps in ordinals.
6223            while _next_ordinal_to_read < 4 {
6224                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6225                _next_ordinal_to_read += 1;
6226                next_offset += envelope_size;
6227            }
6228
6229            let next_out_of_line = decoder.next_out_of_line();
6230            let handles_before = decoder.remaining_handles();
6231            if let Some((inlined, num_bytes, num_handles)) =
6232                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6233            {
6234                let member_inline_size = <fidl::encoding::UnboundedVector<Offer> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6235                if inlined != (member_inline_size <= 4) {
6236                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6237                }
6238                let inner_offset;
6239                let mut inner_depth = depth.clone();
6240                if inlined {
6241                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6242                    inner_offset = next_offset;
6243                } else {
6244                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6245                    inner_depth.increment()?;
6246                }
6247                let val_ref = self.offers.get_or_insert_with(|| {
6248                    fidl::new_empty!(fidl::encoding::UnboundedVector<Offer>, D)
6249                });
6250                fidl::decode!(
6251                    fidl::encoding::UnboundedVector<Offer>,
6252                    D,
6253                    val_ref,
6254                    decoder,
6255                    inner_offset,
6256                    inner_depth
6257                )?;
6258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6259                {
6260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6261                }
6262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6264                }
6265            }
6266
6267            next_offset += envelope_size;
6268            _next_ordinal_to_read += 1;
6269            if next_offset >= end_offset {
6270                return Ok(());
6271            }
6272
6273            // Decode unknown envelopes for gaps in ordinals.
6274            while _next_ordinal_to_read < 5 {
6275                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6276                _next_ordinal_to_read += 1;
6277                next_offset += envelope_size;
6278            }
6279
6280            let next_out_of_line = decoder.next_out_of_line();
6281            let handles_before = decoder.remaining_handles();
6282            if let Some((inlined, num_bytes, num_handles)) =
6283                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6284            {
6285                let member_inline_size = <fidl::encoding::UnboundedVector<Capability> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6286                if inlined != (member_inline_size <= 4) {
6287                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6288                }
6289                let inner_offset;
6290                let mut inner_depth = depth.clone();
6291                if inlined {
6292                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6293                    inner_offset = next_offset;
6294                } else {
6295                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6296                    inner_depth.increment()?;
6297                }
6298                let val_ref = self.capabilities.get_or_insert_with(|| {
6299                    fidl::new_empty!(fidl::encoding::UnboundedVector<Capability>, D)
6300                });
6301                fidl::decode!(
6302                    fidl::encoding::UnboundedVector<Capability>,
6303                    D,
6304                    val_ref,
6305                    decoder,
6306                    inner_offset,
6307                    inner_depth
6308                )?;
6309                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6310                {
6311                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6312                }
6313                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6314                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6315                }
6316            }
6317
6318            next_offset += envelope_size;
6319            _next_ordinal_to_read += 1;
6320            if next_offset >= end_offset {
6321                return Ok(());
6322            }
6323
6324            // Decode unknown envelopes for gaps in ordinals.
6325            while _next_ordinal_to_read < 6 {
6326                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6327                _next_ordinal_to_read += 1;
6328                next_offset += envelope_size;
6329            }
6330
6331            let next_out_of_line = decoder.next_out_of_line();
6332            let handles_before = decoder.remaining_handles();
6333            if let Some((inlined, num_bytes, num_handles)) =
6334                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6335            {
6336                let member_inline_size = <fidl::encoding::UnboundedVector<Child> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6337                if inlined != (member_inline_size <= 4) {
6338                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6339                }
6340                let inner_offset;
6341                let mut inner_depth = depth.clone();
6342                if inlined {
6343                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6344                    inner_offset = next_offset;
6345                } else {
6346                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6347                    inner_depth.increment()?;
6348                }
6349                let val_ref = self.children.get_or_insert_with(|| {
6350                    fidl::new_empty!(fidl::encoding::UnboundedVector<Child>, D)
6351                });
6352                fidl::decode!(
6353                    fidl::encoding::UnboundedVector<Child>,
6354                    D,
6355                    val_ref,
6356                    decoder,
6357                    inner_offset,
6358                    inner_depth
6359                )?;
6360                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6361                {
6362                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6363                }
6364                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6365                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6366                }
6367            }
6368
6369            next_offset += envelope_size;
6370            _next_ordinal_to_read += 1;
6371            if next_offset >= end_offset {
6372                return Ok(());
6373            }
6374
6375            // Decode unknown envelopes for gaps in ordinals.
6376            while _next_ordinal_to_read < 7 {
6377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6378                _next_ordinal_to_read += 1;
6379                next_offset += envelope_size;
6380            }
6381
6382            let next_out_of_line = decoder.next_out_of_line();
6383            let handles_before = decoder.remaining_handles();
6384            if let Some((inlined, num_bytes, num_handles)) =
6385                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6386            {
6387                let member_inline_size = <fidl::encoding::UnboundedVector<Collection> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6388                if inlined != (member_inline_size <= 4) {
6389                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6390                }
6391                let inner_offset;
6392                let mut inner_depth = depth.clone();
6393                if inlined {
6394                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6395                    inner_offset = next_offset;
6396                } else {
6397                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6398                    inner_depth.increment()?;
6399                }
6400                let val_ref = self.collections.get_or_insert_with(|| {
6401                    fidl::new_empty!(fidl::encoding::UnboundedVector<Collection>, D)
6402                });
6403                fidl::decode!(
6404                    fidl::encoding::UnboundedVector<Collection>,
6405                    D,
6406                    val_ref,
6407                    decoder,
6408                    inner_offset,
6409                    inner_depth
6410                )?;
6411                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6412                {
6413                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6414                }
6415                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6416                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6417                }
6418            }
6419
6420            next_offset += envelope_size;
6421            _next_ordinal_to_read += 1;
6422            if next_offset >= end_offset {
6423                return Ok(());
6424            }
6425
6426            // Decode unknown envelopes for gaps in ordinals.
6427            while _next_ordinal_to_read < 8 {
6428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6429                _next_ordinal_to_read += 1;
6430                next_offset += envelope_size;
6431            }
6432
6433            let next_out_of_line = decoder.next_out_of_line();
6434            let handles_before = decoder.remaining_handles();
6435            if let Some((inlined, num_bytes, num_handles)) =
6436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6437            {
6438                let member_inline_size = <fidl::encoding::UnboundedVector<Environment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6439                if inlined != (member_inline_size <= 4) {
6440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6441                }
6442                let inner_offset;
6443                let mut inner_depth = depth.clone();
6444                if inlined {
6445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6446                    inner_offset = next_offset;
6447                } else {
6448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6449                    inner_depth.increment()?;
6450                }
6451                let val_ref = self.environments.get_or_insert_with(|| {
6452                    fidl::new_empty!(fidl::encoding::UnboundedVector<Environment>, D)
6453                });
6454                fidl::decode!(
6455                    fidl::encoding::UnboundedVector<Environment>,
6456                    D,
6457                    val_ref,
6458                    decoder,
6459                    inner_offset,
6460                    inner_depth
6461                )?;
6462                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6463                {
6464                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6465                }
6466                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6467                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6468                }
6469            }
6470
6471            next_offset += envelope_size;
6472            _next_ordinal_to_read += 1;
6473            if next_offset >= end_offset {
6474                return Ok(());
6475            }
6476
6477            // Decode unknown envelopes for gaps in ordinals.
6478            while _next_ordinal_to_read < 9 {
6479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6480                _next_ordinal_to_read += 1;
6481                next_offset += envelope_size;
6482            }
6483
6484            let next_out_of_line = decoder.next_out_of_line();
6485            let handles_before = decoder.remaining_handles();
6486            if let Some((inlined, num_bytes, num_handles)) =
6487                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6488            {
6489                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6490                if inlined != (member_inline_size <= 4) {
6491                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6492                }
6493                let inner_offset;
6494                let mut inner_depth = depth.clone();
6495                if inlined {
6496                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6497                    inner_offset = next_offset;
6498                } else {
6499                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6500                    inner_depth.increment()?;
6501                }
6502                let val_ref = self.facets.get_or_insert_with(|| {
6503                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
6504                });
6505                fidl::decode!(
6506                    fidl_fuchsia_data__common::Dictionary,
6507                    D,
6508                    val_ref,
6509                    decoder,
6510                    inner_offset,
6511                    inner_depth
6512                )?;
6513                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6514                {
6515                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6516                }
6517                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6518                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6519                }
6520            }
6521
6522            next_offset += envelope_size;
6523            _next_ordinal_to_read += 1;
6524            if next_offset >= end_offset {
6525                return Ok(());
6526            }
6527
6528            // Decode unknown envelopes for gaps in ordinals.
6529            while _next_ordinal_to_read < 10 {
6530                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6531                _next_ordinal_to_read += 1;
6532                next_offset += envelope_size;
6533            }
6534
6535            let next_out_of_line = decoder.next_out_of_line();
6536            let handles_before = decoder.remaining_handles();
6537            if let Some((inlined, num_bytes, num_handles)) =
6538                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6539            {
6540                let member_inline_size =
6541                    <ConfigSchema as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6542                if inlined != (member_inline_size <= 4) {
6543                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6544                }
6545                let inner_offset;
6546                let mut inner_depth = depth.clone();
6547                if inlined {
6548                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6549                    inner_offset = next_offset;
6550                } else {
6551                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6552                    inner_depth.increment()?;
6553                }
6554                let val_ref = self.config.get_or_insert_with(|| fidl::new_empty!(ConfigSchema, D));
6555                fidl::decode!(ConfigSchema, D, val_ref, decoder, inner_offset, inner_depth)?;
6556                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6557                {
6558                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6559                }
6560                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6561                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6562                }
6563            }
6564
6565            next_offset += envelope_size;
6566
6567            // Decode the remaining unknown envelopes.
6568            while next_offset < end_offset {
6569                _next_ordinal_to_read += 1;
6570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6571                next_offset += envelope_size;
6572            }
6573
6574            Ok(())
6575        }
6576    }
6577
6578    impl ConfigField {
6579        #[inline(always)]
6580        fn max_ordinal_present(&self) -> u64 {
6581            if let Some(_) = self.mutability {
6582                return 3;
6583            }
6584            if let Some(_) = self.type_ {
6585                return 2;
6586            }
6587            if let Some(_) = self.key {
6588                return 1;
6589            }
6590            0
6591        }
6592    }
6593
6594    impl fidl::encoding::ValueTypeMarker for ConfigField {
6595        type Borrowed<'a> = &'a Self;
6596        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6597            value
6598        }
6599    }
6600
6601    unsafe impl fidl::encoding::TypeMarker for ConfigField {
6602        type Owned = Self;
6603
6604        #[inline(always)]
6605        fn inline_align(_context: fidl::encoding::Context) -> usize {
6606            8
6607        }
6608
6609        #[inline(always)]
6610        fn inline_size(_context: fidl::encoding::Context) -> usize {
6611            16
6612        }
6613    }
6614
6615    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigField, D>
6616        for &ConfigField
6617    {
6618        unsafe fn encode(
6619            self,
6620            encoder: &mut fidl::encoding::Encoder<'_, D>,
6621            offset: usize,
6622            mut depth: fidl::encoding::Depth,
6623        ) -> fidl::Result<()> {
6624            encoder.debug_check_bounds::<ConfigField>(offset);
6625            // Vector header
6626            let max_ordinal: u64 = self.max_ordinal_present();
6627            encoder.write_num(max_ordinal, offset);
6628            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6629            // Calling encoder.out_of_line_offset(0) is not allowed.
6630            if max_ordinal == 0 {
6631                return Ok(());
6632            }
6633            depth.increment()?;
6634            let envelope_size = 8;
6635            let bytes_len = max_ordinal as usize * envelope_size;
6636            #[allow(unused_variables)]
6637            let offset = encoder.out_of_line_offset(bytes_len);
6638            let mut _prev_end_offset: usize = 0;
6639            if 1 > max_ordinal {
6640                return Ok(());
6641            }
6642
6643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6644            // are envelope_size bytes.
6645            let cur_offset: usize = (1 - 1) * envelope_size;
6646
6647            // Zero reserved fields.
6648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6649
6650            // Safety:
6651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6653            //   envelope_size bytes, there is always sufficient room.
6654            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6655                self.key.as_ref().map(
6656                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6657                ),
6658                encoder,
6659                offset + cur_offset,
6660                depth,
6661            )?;
6662
6663            _prev_end_offset = cur_offset + envelope_size;
6664            if 2 > max_ordinal {
6665                return Ok(());
6666            }
6667
6668            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6669            // are envelope_size bytes.
6670            let cur_offset: usize = (2 - 1) * envelope_size;
6671
6672            // Zero reserved fields.
6673            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6674
6675            // Safety:
6676            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6677            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6678            //   envelope_size bytes, there is always sufficient room.
6679            fidl::encoding::encode_in_envelope_optional::<ConfigType, D>(
6680                self.type_.as_ref().map(<ConfigType as fidl::encoding::ValueTypeMarker>::borrow),
6681                encoder,
6682                offset + cur_offset,
6683                depth,
6684            )?;
6685
6686            _prev_end_offset = cur_offset + envelope_size;
6687            if 3 > max_ordinal {
6688                return Ok(());
6689            }
6690
6691            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6692            // are envelope_size bytes.
6693            let cur_offset: usize = (3 - 1) * envelope_size;
6694
6695            // Zero reserved fields.
6696            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6697
6698            // Safety:
6699            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6700            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6701            //   envelope_size bytes, there is always sufficient room.
6702            fidl::encoding::encode_in_envelope_optional::<ConfigMutability, D>(
6703                self.mutability
6704                    .as_ref()
6705                    .map(<ConfigMutability as fidl::encoding::ValueTypeMarker>::borrow),
6706                encoder,
6707                offset + cur_offset,
6708                depth,
6709            )?;
6710
6711            _prev_end_offset = cur_offset + envelope_size;
6712
6713            Ok(())
6714        }
6715    }
6716
6717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigField {
6718        #[inline(always)]
6719        fn new_empty() -> Self {
6720            Self::default()
6721        }
6722
6723        unsafe fn decode(
6724            &mut self,
6725            decoder: &mut fidl::encoding::Decoder<'_, D>,
6726            offset: usize,
6727            mut depth: fidl::encoding::Depth,
6728        ) -> fidl::Result<()> {
6729            decoder.debug_check_bounds::<Self>(offset);
6730            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6731                None => return Err(fidl::Error::NotNullable),
6732                Some(len) => len,
6733            };
6734            // Calling decoder.out_of_line_offset(0) is not allowed.
6735            if len == 0 {
6736                return Ok(());
6737            };
6738            depth.increment()?;
6739            let envelope_size = 8;
6740            let bytes_len = len * envelope_size;
6741            let offset = decoder.out_of_line_offset(bytes_len)?;
6742            // Decode the envelope for each type.
6743            let mut _next_ordinal_to_read = 0;
6744            let mut next_offset = offset;
6745            let end_offset = offset + bytes_len;
6746            _next_ordinal_to_read += 1;
6747            if next_offset >= end_offset {
6748                return Ok(());
6749            }
6750
6751            // Decode unknown envelopes for gaps in ordinals.
6752            while _next_ordinal_to_read < 1 {
6753                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6754                _next_ordinal_to_read += 1;
6755                next_offset += envelope_size;
6756            }
6757
6758            let next_out_of_line = decoder.next_out_of_line();
6759            let handles_before = decoder.remaining_handles();
6760            if let Some((inlined, num_bytes, num_handles)) =
6761                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6762            {
6763                let member_inline_size =
6764                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6765                        decoder.context,
6766                    );
6767                if inlined != (member_inline_size <= 4) {
6768                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6769                }
6770                let inner_offset;
6771                let mut inner_depth = depth.clone();
6772                if inlined {
6773                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6774                    inner_offset = next_offset;
6775                } else {
6776                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6777                    inner_depth.increment()?;
6778                }
6779                let val_ref = self
6780                    .key
6781                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
6782                fidl::decode!(
6783                    fidl::encoding::BoundedString<64>,
6784                    D,
6785                    val_ref,
6786                    decoder,
6787                    inner_offset,
6788                    inner_depth
6789                )?;
6790                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6791                {
6792                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6793                }
6794                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6795                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6796                }
6797            }
6798
6799            next_offset += envelope_size;
6800            _next_ordinal_to_read += 1;
6801            if next_offset >= end_offset {
6802                return Ok(());
6803            }
6804
6805            // Decode unknown envelopes for gaps in ordinals.
6806            while _next_ordinal_to_read < 2 {
6807                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6808                _next_ordinal_to_read += 1;
6809                next_offset += envelope_size;
6810            }
6811
6812            let next_out_of_line = decoder.next_out_of_line();
6813            let handles_before = decoder.remaining_handles();
6814            if let Some((inlined, num_bytes, num_handles)) =
6815                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6816            {
6817                let member_inline_size =
6818                    <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6819                if inlined != (member_inline_size <= 4) {
6820                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6821                }
6822                let inner_offset;
6823                let mut inner_depth = depth.clone();
6824                if inlined {
6825                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6826                    inner_offset = next_offset;
6827                } else {
6828                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6829                    inner_depth.increment()?;
6830                }
6831                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(ConfigType, D));
6832                fidl::decode!(ConfigType, D, val_ref, decoder, inner_offset, inner_depth)?;
6833                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6834                {
6835                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6836                }
6837                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6838                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6839                }
6840            }
6841
6842            next_offset += envelope_size;
6843            _next_ordinal_to_read += 1;
6844            if next_offset >= end_offset {
6845                return Ok(());
6846            }
6847
6848            // Decode unknown envelopes for gaps in ordinals.
6849            while _next_ordinal_to_read < 3 {
6850                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6851                _next_ordinal_to_read += 1;
6852                next_offset += envelope_size;
6853            }
6854
6855            let next_out_of_line = decoder.next_out_of_line();
6856            let handles_before = decoder.remaining_handles();
6857            if let Some((inlined, num_bytes, num_handles)) =
6858                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6859            {
6860                let member_inline_size =
6861                    <ConfigMutability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6862                if inlined != (member_inline_size <= 4) {
6863                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6864                }
6865                let inner_offset;
6866                let mut inner_depth = depth.clone();
6867                if inlined {
6868                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6869                    inner_offset = next_offset;
6870                } else {
6871                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6872                    inner_depth.increment()?;
6873                }
6874                let val_ref =
6875                    self.mutability.get_or_insert_with(|| fidl::new_empty!(ConfigMutability, D));
6876                fidl::decode!(ConfigMutability, D, val_ref, decoder, inner_offset, inner_depth)?;
6877                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6878                {
6879                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6880                }
6881                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6882                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6883                }
6884            }
6885
6886            next_offset += envelope_size;
6887
6888            // Decode the remaining unknown envelopes.
6889            while next_offset < end_offset {
6890                _next_ordinal_to_read += 1;
6891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6892                next_offset += envelope_size;
6893            }
6894
6895            Ok(())
6896        }
6897    }
6898
6899    impl ConfigOverride {
6900        #[inline(always)]
6901        fn max_ordinal_present(&self) -> u64 {
6902            if let Some(_) = self.value {
6903                return 2;
6904            }
6905            if let Some(_) = self.key {
6906                return 1;
6907            }
6908            0
6909        }
6910    }
6911
6912    impl fidl::encoding::ValueTypeMarker for ConfigOverride {
6913        type Borrowed<'a> = &'a Self;
6914        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6915            value
6916        }
6917    }
6918
6919    unsafe impl fidl::encoding::TypeMarker for ConfigOverride {
6920        type Owned = Self;
6921
6922        #[inline(always)]
6923        fn inline_align(_context: fidl::encoding::Context) -> usize {
6924            8
6925        }
6926
6927        #[inline(always)]
6928        fn inline_size(_context: fidl::encoding::Context) -> usize {
6929            16
6930        }
6931    }
6932
6933    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigOverride, D>
6934        for &ConfigOverride
6935    {
6936        unsafe fn encode(
6937            self,
6938            encoder: &mut fidl::encoding::Encoder<'_, D>,
6939            offset: usize,
6940            mut depth: fidl::encoding::Depth,
6941        ) -> fidl::Result<()> {
6942            encoder.debug_check_bounds::<ConfigOverride>(offset);
6943            // Vector header
6944            let max_ordinal: u64 = self.max_ordinal_present();
6945            encoder.write_num(max_ordinal, offset);
6946            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6947            // Calling encoder.out_of_line_offset(0) is not allowed.
6948            if max_ordinal == 0 {
6949                return Ok(());
6950            }
6951            depth.increment()?;
6952            let envelope_size = 8;
6953            let bytes_len = max_ordinal as usize * envelope_size;
6954            #[allow(unused_variables)]
6955            let offset = encoder.out_of_line_offset(bytes_len);
6956            let mut _prev_end_offset: usize = 0;
6957            if 1 > max_ordinal {
6958                return Ok(());
6959            }
6960
6961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6962            // are envelope_size bytes.
6963            let cur_offset: usize = (1 - 1) * envelope_size;
6964
6965            // Zero reserved fields.
6966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6967
6968            // Safety:
6969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6971            //   envelope_size bytes, there is always sufficient room.
6972            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6973                self.key.as_ref().map(
6974                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6975                ),
6976                encoder,
6977                offset + cur_offset,
6978                depth,
6979            )?;
6980
6981            _prev_end_offset = cur_offset + envelope_size;
6982            if 2 > max_ordinal {
6983                return Ok(());
6984            }
6985
6986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6987            // are envelope_size bytes.
6988            let cur_offset: usize = (2 - 1) * envelope_size;
6989
6990            // Zero reserved fields.
6991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6992
6993            // Safety:
6994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6996            //   envelope_size bytes, there is always sufficient room.
6997            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
6998                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
6999                encoder,
7000                offset + cur_offset,
7001                depth,
7002            )?;
7003
7004            _prev_end_offset = cur_offset + envelope_size;
7005
7006            Ok(())
7007        }
7008    }
7009
7010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigOverride {
7011        #[inline(always)]
7012        fn new_empty() -> Self {
7013            Self::default()
7014        }
7015
7016        unsafe fn decode(
7017            &mut self,
7018            decoder: &mut fidl::encoding::Decoder<'_, D>,
7019            offset: usize,
7020            mut depth: fidl::encoding::Depth,
7021        ) -> fidl::Result<()> {
7022            decoder.debug_check_bounds::<Self>(offset);
7023            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7024                None => return Err(fidl::Error::NotNullable),
7025                Some(len) => len,
7026            };
7027            // Calling decoder.out_of_line_offset(0) is not allowed.
7028            if len == 0 {
7029                return Ok(());
7030            };
7031            depth.increment()?;
7032            let envelope_size = 8;
7033            let bytes_len = len * envelope_size;
7034            let offset = decoder.out_of_line_offset(bytes_len)?;
7035            // Decode the envelope for each type.
7036            let mut _next_ordinal_to_read = 0;
7037            let mut next_offset = offset;
7038            let end_offset = offset + bytes_len;
7039            _next_ordinal_to_read += 1;
7040            if next_offset >= end_offset {
7041                return Ok(());
7042            }
7043
7044            // Decode unknown envelopes for gaps in ordinals.
7045            while _next_ordinal_to_read < 1 {
7046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7047                _next_ordinal_to_read += 1;
7048                next_offset += envelope_size;
7049            }
7050
7051            let next_out_of_line = decoder.next_out_of_line();
7052            let handles_before = decoder.remaining_handles();
7053            if let Some((inlined, num_bytes, num_handles)) =
7054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7055            {
7056                let member_inline_size =
7057                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7058                        decoder.context,
7059                    );
7060                if inlined != (member_inline_size <= 4) {
7061                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7062                }
7063                let inner_offset;
7064                let mut inner_depth = depth.clone();
7065                if inlined {
7066                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7067                    inner_offset = next_offset;
7068                } else {
7069                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7070                    inner_depth.increment()?;
7071                }
7072                let val_ref = self
7073                    .key
7074                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7075                fidl::decode!(
7076                    fidl::encoding::BoundedString<64>,
7077                    D,
7078                    val_ref,
7079                    decoder,
7080                    inner_offset,
7081                    inner_depth
7082                )?;
7083                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7084                {
7085                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7086                }
7087                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7088                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7089                }
7090            }
7091
7092            next_offset += envelope_size;
7093            _next_ordinal_to_read += 1;
7094            if next_offset >= end_offset {
7095                return Ok(());
7096            }
7097
7098            // Decode unknown envelopes for gaps in ordinals.
7099            while _next_ordinal_to_read < 2 {
7100                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7101                _next_ordinal_to_read += 1;
7102                next_offset += envelope_size;
7103            }
7104
7105            let next_out_of_line = decoder.next_out_of_line();
7106            let handles_before = decoder.remaining_handles();
7107            if let Some((inlined, num_bytes, num_handles)) =
7108                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7109            {
7110                let member_inline_size =
7111                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7112                if inlined != (member_inline_size <= 4) {
7113                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7114                }
7115                let inner_offset;
7116                let mut inner_depth = depth.clone();
7117                if inlined {
7118                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7119                    inner_offset = next_offset;
7120                } else {
7121                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7122                    inner_depth.increment()?;
7123                }
7124                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
7125                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
7126                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7127                {
7128                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7129                }
7130                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7131                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7132                }
7133            }
7134
7135            next_offset += envelope_size;
7136
7137            // Decode the remaining unknown envelopes.
7138            while next_offset < end_offset {
7139                _next_ordinal_to_read += 1;
7140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7141                next_offset += envelope_size;
7142            }
7143
7144            Ok(())
7145        }
7146    }
7147
7148    impl ConfigSchema {
7149        #[inline(always)]
7150        fn max_ordinal_present(&self) -> u64 {
7151            if let Some(_) = self.value_source {
7152                return 3;
7153            }
7154            if let Some(_) = self.checksum {
7155                return 2;
7156            }
7157            if let Some(_) = self.fields {
7158                return 1;
7159            }
7160            0
7161        }
7162    }
7163
7164    impl fidl::encoding::ValueTypeMarker for ConfigSchema {
7165        type Borrowed<'a> = &'a Self;
7166        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7167            value
7168        }
7169    }
7170
7171    unsafe impl fidl::encoding::TypeMarker for ConfigSchema {
7172        type Owned = Self;
7173
7174        #[inline(always)]
7175        fn inline_align(_context: fidl::encoding::Context) -> usize {
7176            8
7177        }
7178
7179        #[inline(always)]
7180        fn inline_size(_context: fidl::encoding::Context) -> usize {
7181            16
7182        }
7183    }
7184
7185    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigSchema, D>
7186        for &ConfigSchema
7187    {
7188        unsafe fn encode(
7189            self,
7190            encoder: &mut fidl::encoding::Encoder<'_, D>,
7191            offset: usize,
7192            mut depth: fidl::encoding::Depth,
7193        ) -> fidl::Result<()> {
7194            encoder.debug_check_bounds::<ConfigSchema>(offset);
7195            // Vector header
7196            let max_ordinal: u64 = self.max_ordinal_present();
7197            encoder.write_num(max_ordinal, offset);
7198            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7199            // Calling encoder.out_of_line_offset(0) is not allowed.
7200            if max_ordinal == 0 {
7201                return Ok(());
7202            }
7203            depth.increment()?;
7204            let envelope_size = 8;
7205            let bytes_len = max_ordinal as usize * envelope_size;
7206            #[allow(unused_variables)]
7207            let offset = encoder.out_of_line_offset(bytes_len);
7208            let mut _prev_end_offset: usize = 0;
7209            if 1 > max_ordinal {
7210                return Ok(());
7211            }
7212
7213            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7214            // are envelope_size bytes.
7215            let cur_offset: usize = (1 - 1) * envelope_size;
7216
7217            // Zero reserved fields.
7218            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7219
7220            // Safety:
7221            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7222            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7223            //   envelope_size bytes, there is always sufficient room.
7224            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigField>, D>(
7225            self.fields.as_ref().map(<fidl::encoding::UnboundedVector<ConfigField> as fidl::encoding::ValueTypeMarker>::borrow),
7226            encoder, offset + cur_offset, depth
7227        )?;
7228
7229            _prev_end_offset = cur_offset + envelope_size;
7230            if 2 > max_ordinal {
7231                return Ok(());
7232            }
7233
7234            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7235            // are envelope_size bytes.
7236            let cur_offset: usize = (2 - 1) * envelope_size;
7237
7238            // Zero reserved fields.
7239            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7240
7241            // Safety:
7242            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7243            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7244            //   envelope_size bytes, there is always sufficient room.
7245            fidl::encoding::encode_in_envelope_optional::<ConfigChecksum, D>(
7246                self.checksum
7247                    .as_ref()
7248                    .map(<ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow),
7249                encoder,
7250                offset + cur_offset,
7251                depth,
7252            )?;
7253
7254            _prev_end_offset = cur_offset + envelope_size;
7255            if 3 > max_ordinal {
7256                return Ok(());
7257            }
7258
7259            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7260            // are envelope_size bytes.
7261            let cur_offset: usize = (3 - 1) * envelope_size;
7262
7263            // Zero reserved fields.
7264            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7265
7266            // Safety:
7267            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7268            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7269            //   envelope_size bytes, there is always sufficient room.
7270            fidl::encoding::encode_in_envelope_optional::<ConfigValueSource, D>(
7271                self.value_source
7272                    .as_ref()
7273                    .map(<ConfigValueSource as fidl::encoding::ValueTypeMarker>::borrow),
7274                encoder,
7275                offset + cur_offset,
7276                depth,
7277            )?;
7278
7279            _prev_end_offset = cur_offset + envelope_size;
7280
7281            Ok(())
7282        }
7283    }
7284
7285    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigSchema {
7286        #[inline(always)]
7287        fn new_empty() -> Self {
7288            Self::default()
7289        }
7290
7291        unsafe fn decode(
7292            &mut self,
7293            decoder: &mut fidl::encoding::Decoder<'_, D>,
7294            offset: usize,
7295            mut depth: fidl::encoding::Depth,
7296        ) -> fidl::Result<()> {
7297            decoder.debug_check_bounds::<Self>(offset);
7298            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7299                None => return Err(fidl::Error::NotNullable),
7300                Some(len) => len,
7301            };
7302            // Calling decoder.out_of_line_offset(0) is not allowed.
7303            if len == 0 {
7304                return Ok(());
7305            };
7306            depth.increment()?;
7307            let envelope_size = 8;
7308            let bytes_len = len * envelope_size;
7309            let offset = decoder.out_of_line_offset(bytes_len)?;
7310            // Decode the envelope for each type.
7311            let mut _next_ordinal_to_read = 0;
7312            let mut next_offset = offset;
7313            let end_offset = offset + bytes_len;
7314            _next_ordinal_to_read += 1;
7315            if next_offset >= end_offset {
7316                return Ok(());
7317            }
7318
7319            // Decode unknown envelopes for gaps in ordinals.
7320            while _next_ordinal_to_read < 1 {
7321                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7322                _next_ordinal_to_read += 1;
7323                next_offset += envelope_size;
7324            }
7325
7326            let next_out_of_line = decoder.next_out_of_line();
7327            let handles_before = decoder.remaining_handles();
7328            if let Some((inlined, num_bytes, num_handles)) =
7329                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7330            {
7331                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigField> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7332                if inlined != (member_inline_size <= 4) {
7333                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7334                }
7335                let inner_offset;
7336                let mut inner_depth = depth.clone();
7337                if inlined {
7338                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7339                    inner_offset = next_offset;
7340                } else {
7341                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7342                    inner_depth.increment()?;
7343                }
7344                let val_ref = self.fields.get_or_insert_with(|| {
7345                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigField>, D)
7346                });
7347                fidl::decode!(
7348                    fidl::encoding::UnboundedVector<ConfigField>,
7349                    D,
7350                    val_ref,
7351                    decoder,
7352                    inner_offset,
7353                    inner_depth
7354                )?;
7355                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7356                {
7357                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7358                }
7359                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7360                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7361                }
7362            }
7363
7364            next_offset += envelope_size;
7365            _next_ordinal_to_read += 1;
7366            if next_offset >= end_offset {
7367                return Ok(());
7368            }
7369
7370            // Decode unknown envelopes for gaps in ordinals.
7371            while _next_ordinal_to_read < 2 {
7372                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7373                _next_ordinal_to_read += 1;
7374                next_offset += envelope_size;
7375            }
7376
7377            let next_out_of_line = decoder.next_out_of_line();
7378            let handles_before = decoder.remaining_handles();
7379            if let Some((inlined, num_bytes, num_handles)) =
7380                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7381            {
7382                let member_inline_size =
7383                    <ConfigChecksum as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7384                if inlined != (member_inline_size <= 4) {
7385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7386                }
7387                let inner_offset;
7388                let mut inner_depth = depth.clone();
7389                if inlined {
7390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7391                    inner_offset = next_offset;
7392                } else {
7393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7394                    inner_depth.increment()?;
7395                }
7396                let val_ref =
7397                    self.checksum.get_or_insert_with(|| fidl::new_empty!(ConfigChecksum, D));
7398                fidl::decode!(ConfigChecksum, D, val_ref, decoder, inner_offset, inner_depth)?;
7399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7400                {
7401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7402                }
7403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7405                }
7406            }
7407
7408            next_offset += envelope_size;
7409            _next_ordinal_to_read += 1;
7410            if next_offset >= end_offset {
7411                return Ok(());
7412            }
7413
7414            // Decode unknown envelopes for gaps in ordinals.
7415            while _next_ordinal_to_read < 3 {
7416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7417                _next_ordinal_to_read += 1;
7418                next_offset += envelope_size;
7419            }
7420
7421            let next_out_of_line = decoder.next_out_of_line();
7422            let handles_before = decoder.remaining_handles();
7423            if let Some((inlined, num_bytes, num_handles)) =
7424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7425            {
7426                let member_inline_size =
7427                    <ConfigValueSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7428                if inlined != (member_inline_size <= 4) {
7429                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7430                }
7431                let inner_offset;
7432                let mut inner_depth = depth.clone();
7433                if inlined {
7434                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7435                    inner_offset = next_offset;
7436                } else {
7437                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7438                    inner_depth.increment()?;
7439                }
7440                let val_ref =
7441                    self.value_source.get_or_insert_with(|| fidl::new_empty!(ConfigValueSource, D));
7442                fidl::decode!(ConfigValueSource, D, val_ref, decoder, inner_offset, inner_depth)?;
7443                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7444                {
7445                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7446                }
7447                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7448                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7449                }
7450            }
7451
7452            next_offset += envelope_size;
7453
7454            // Decode the remaining unknown envelopes.
7455            while next_offset < end_offset {
7456                _next_ordinal_to_read += 1;
7457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7458                next_offset += envelope_size;
7459            }
7460
7461            Ok(())
7462        }
7463    }
7464
7465    impl ConfigSourceCapabilities {
7466        #[inline(always)]
7467        fn max_ordinal_present(&self) -> u64 {
7468            0
7469        }
7470    }
7471
7472    impl fidl::encoding::ValueTypeMarker for ConfigSourceCapabilities {
7473        type Borrowed<'a> = &'a Self;
7474        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7475            value
7476        }
7477    }
7478
7479    unsafe impl fidl::encoding::TypeMarker for ConfigSourceCapabilities {
7480        type Owned = Self;
7481
7482        #[inline(always)]
7483        fn inline_align(_context: fidl::encoding::Context) -> usize {
7484            8
7485        }
7486
7487        #[inline(always)]
7488        fn inline_size(_context: fidl::encoding::Context) -> usize {
7489            16
7490        }
7491    }
7492
7493    unsafe impl<D: fidl::encoding::ResourceDialect>
7494        fidl::encoding::Encode<ConfigSourceCapabilities, D> for &ConfigSourceCapabilities
7495    {
7496        unsafe fn encode(
7497            self,
7498            encoder: &mut fidl::encoding::Encoder<'_, D>,
7499            offset: usize,
7500            mut depth: fidl::encoding::Depth,
7501        ) -> fidl::Result<()> {
7502            encoder.debug_check_bounds::<ConfigSourceCapabilities>(offset);
7503            // Vector header
7504            let max_ordinal: u64 = self.max_ordinal_present();
7505            encoder.write_num(max_ordinal, offset);
7506            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7507            // Calling encoder.out_of_line_offset(0) is not allowed.
7508            if max_ordinal == 0 {
7509                return Ok(());
7510            }
7511            depth.increment()?;
7512            let envelope_size = 8;
7513            let bytes_len = max_ordinal as usize * envelope_size;
7514            #[allow(unused_variables)]
7515            let offset = encoder.out_of_line_offset(bytes_len);
7516            let mut _prev_end_offset: usize = 0;
7517
7518            Ok(())
7519        }
7520    }
7521
7522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7523        for ConfigSourceCapabilities
7524    {
7525        #[inline(always)]
7526        fn new_empty() -> Self {
7527            Self::default()
7528        }
7529
7530        unsafe fn decode(
7531            &mut self,
7532            decoder: &mut fidl::encoding::Decoder<'_, D>,
7533            offset: usize,
7534            mut depth: fidl::encoding::Depth,
7535        ) -> fidl::Result<()> {
7536            decoder.debug_check_bounds::<Self>(offset);
7537            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7538                None => return Err(fidl::Error::NotNullable),
7539                Some(len) => len,
7540            };
7541            // Calling decoder.out_of_line_offset(0) is not allowed.
7542            if len == 0 {
7543                return Ok(());
7544            };
7545            depth.increment()?;
7546            let envelope_size = 8;
7547            let bytes_len = len * envelope_size;
7548            let offset = decoder.out_of_line_offset(bytes_len)?;
7549            // Decode the envelope for each type.
7550            let mut _next_ordinal_to_read = 0;
7551            let mut next_offset = offset;
7552            let end_offset = offset + bytes_len;
7553
7554            // Decode the remaining unknown envelopes.
7555            while next_offset < end_offset {
7556                _next_ordinal_to_read += 1;
7557                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7558                next_offset += envelope_size;
7559            }
7560
7561            Ok(())
7562        }
7563    }
7564
7565    impl ConfigValueSpec {
7566        #[inline(always)]
7567        fn max_ordinal_present(&self) -> u64 {
7568            if let Some(_) = self.value {
7569                return 1;
7570            }
7571            0
7572        }
7573    }
7574
7575    impl fidl::encoding::ValueTypeMarker for ConfigValueSpec {
7576        type Borrowed<'a> = &'a Self;
7577        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7578            value
7579        }
7580    }
7581
7582    unsafe impl fidl::encoding::TypeMarker for ConfigValueSpec {
7583        type Owned = Self;
7584
7585        #[inline(always)]
7586        fn inline_align(_context: fidl::encoding::Context) -> usize {
7587            8
7588        }
7589
7590        #[inline(always)]
7591        fn inline_size(_context: fidl::encoding::Context) -> usize {
7592            16
7593        }
7594    }
7595
7596    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValueSpec, D>
7597        for &ConfigValueSpec
7598    {
7599        unsafe fn encode(
7600            self,
7601            encoder: &mut fidl::encoding::Encoder<'_, D>,
7602            offset: usize,
7603            mut depth: fidl::encoding::Depth,
7604        ) -> fidl::Result<()> {
7605            encoder.debug_check_bounds::<ConfigValueSpec>(offset);
7606            // Vector header
7607            let max_ordinal: u64 = self.max_ordinal_present();
7608            encoder.write_num(max_ordinal, offset);
7609            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7610            // Calling encoder.out_of_line_offset(0) is not allowed.
7611            if max_ordinal == 0 {
7612                return Ok(());
7613            }
7614            depth.increment()?;
7615            let envelope_size = 8;
7616            let bytes_len = max_ordinal as usize * envelope_size;
7617            #[allow(unused_variables)]
7618            let offset = encoder.out_of_line_offset(bytes_len);
7619            let mut _prev_end_offset: usize = 0;
7620            if 1 > max_ordinal {
7621                return Ok(());
7622            }
7623
7624            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7625            // are envelope_size bytes.
7626            let cur_offset: usize = (1 - 1) * envelope_size;
7627
7628            // Zero reserved fields.
7629            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7630
7631            // Safety:
7632            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7633            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7634            //   envelope_size bytes, there is always sufficient room.
7635            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
7636                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
7637                encoder,
7638                offset + cur_offset,
7639                depth,
7640            )?;
7641
7642            _prev_end_offset = cur_offset + envelope_size;
7643
7644            Ok(())
7645        }
7646    }
7647
7648    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValueSpec {
7649        #[inline(always)]
7650        fn new_empty() -> Self {
7651            Self::default()
7652        }
7653
7654        unsafe fn decode(
7655            &mut self,
7656            decoder: &mut fidl::encoding::Decoder<'_, D>,
7657            offset: usize,
7658            mut depth: fidl::encoding::Depth,
7659        ) -> fidl::Result<()> {
7660            decoder.debug_check_bounds::<Self>(offset);
7661            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7662                None => return Err(fidl::Error::NotNullable),
7663                Some(len) => len,
7664            };
7665            // Calling decoder.out_of_line_offset(0) is not allowed.
7666            if len == 0 {
7667                return Ok(());
7668            };
7669            depth.increment()?;
7670            let envelope_size = 8;
7671            let bytes_len = len * envelope_size;
7672            let offset = decoder.out_of_line_offset(bytes_len)?;
7673            // Decode the envelope for each type.
7674            let mut _next_ordinal_to_read = 0;
7675            let mut next_offset = offset;
7676            let end_offset = offset + bytes_len;
7677            _next_ordinal_to_read += 1;
7678            if next_offset >= end_offset {
7679                return Ok(());
7680            }
7681
7682            // Decode unknown envelopes for gaps in ordinals.
7683            while _next_ordinal_to_read < 1 {
7684                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7685                _next_ordinal_to_read += 1;
7686                next_offset += envelope_size;
7687            }
7688
7689            let next_out_of_line = decoder.next_out_of_line();
7690            let handles_before = decoder.remaining_handles();
7691            if let Some((inlined, num_bytes, num_handles)) =
7692                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7693            {
7694                let member_inline_size =
7695                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7696                if inlined != (member_inline_size <= 4) {
7697                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7698                }
7699                let inner_offset;
7700                let mut inner_depth = depth.clone();
7701                if inlined {
7702                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7703                    inner_offset = next_offset;
7704                } else {
7705                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7706                    inner_depth.increment()?;
7707                }
7708                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
7709                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
7710                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7711                {
7712                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7713                }
7714                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7715                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7716                }
7717            }
7718
7719            next_offset += envelope_size;
7720
7721            // Decode the remaining unknown envelopes.
7722            while next_offset < end_offset {
7723                _next_ordinal_to_read += 1;
7724                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7725                next_offset += envelope_size;
7726            }
7727
7728            Ok(())
7729        }
7730    }
7731
7732    impl ConfigValuesData {
7733        #[inline(always)]
7734        fn max_ordinal_present(&self) -> u64 {
7735            if let Some(_) = self.checksum {
7736                return 2;
7737            }
7738            if let Some(_) = self.values {
7739                return 1;
7740            }
7741            0
7742        }
7743    }
7744
7745    impl fidl::encoding::ValueTypeMarker for ConfigValuesData {
7746        type Borrowed<'a> = &'a Self;
7747        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7748            value
7749        }
7750    }
7751
7752    unsafe impl fidl::encoding::TypeMarker for ConfigValuesData {
7753        type Owned = Self;
7754
7755        #[inline(always)]
7756        fn inline_align(_context: fidl::encoding::Context) -> usize {
7757            8
7758        }
7759
7760        #[inline(always)]
7761        fn inline_size(_context: fidl::encoding::Context) -> usize {
7762            16
7763        }
7764    }
7765
7766    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValuesData, D>
7767        for &ConfigValuesData
7768    {
7769        unsafe fn encode(
7770            self,
7771            encoder: &mut fidl::encoding::Encoder<'_, D>,
7772            offset: usize,
7773            mut depth: fidl::encoding::Depth,
7774        ) -> fidl::Result<()> {
7775            encoder.debug_check_bounds::<ConfigValuesData>(offset);
7776            // Vector header
7777            let max_ordinal: u64 = self.max_ordinal_present();
7778            encoder.write_num(max_ordinal, offset);
7779            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7780            // Calling encoder.out_of_line_offset(0) is not allowed.
7781            if max_ordinal == 0 {
7782                return Ok(());
7783            }
7784            depth.increment()?;
7785            let envelope_size = 8;
7786            let bytes_len = max_ordinal as usize * envelope_size;
7787            #[allow(unused_variables)]
7788            let offset = encoder.out_of_line_offset(bytes_len);
7789            let mut _prev_end_offset: usize = 0;
7790            if 1 > max_ordinal {
7791                return Ok(());
7792            }
7793
7794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7795            // are envelope_size bytes.
7796            let cur_offset: usize = (1 - 1) * envelope_size;
7797
7798            // Zero reserved fields.
7799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7800
7801            // Safety:
7802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7804            //   envelope_size bytes, there is always sufficient room.
7805            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ConfigValueSpec>, D>(
7806            self.values.as_ref().map(<fidl::encoding::UnboundedVector<ConfigValueSpec> as fidl::encoding::ValueTypeMarker>::borrow),
7807            encoder, offset + cur_offset, depth
7808        )?;
7809
7810            _prev_end_offset = cur_offset + envelope_size;
7811            if 2 > max_ordinal {
7812                return Ok(());
7813            }
7814
7815            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7816            // are envelope_size bytes.
7817            let cur_offset: usize = (2 - 1) * envelope_size;
7818
7819            // Zero reserved fields.
7820            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7821
7822            // Safety:
7823            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7824            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7825            //   envelope_size bytes, there is always sufficient room.
7826            fidl::encoding::encode_in_envelope_optional::<ConfigChecksum, D>(
7827                self.checksum
7828                    .as_ref()
7829                    .map(<ConfigChecksum as fidl::encoding::ValueTypeMarker>::borrow),
7830                encoder,
7831                offset + cur_offset,
7832                depth,
7833            )?;
7834
7835            _prev_end_offset = cur_offset + envelope_size;
7836
7837            Ok(())
7838        }
7839    }
7840
7841    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValuesData {
7842        #[inline(always)]
7843        fn new_empty() -> Self {
7844            Self::default()
7845        }
7846
7847        unsafe fn decode(
7848            &mut self,
7849            decoder: &mut fidl::encoding::Decoder<'_, D>,
7850            offset: usize,
7851            mut depth: fidl::encoding::Depth,
7852        ) -> fidl::Result<()> {
7853            decoder.debug_check_bounds::<Self>(offset);
7854            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7855                None => return Err(fidl::Error::NotNullable),
7856                Some(len) => len,
7857            };
7858            // Calling decoder.out_of_line_offset(0) is not allowed.
7859            if len == 0 {
7860                return Ok(());
7861            };
7862            depth.increment()?;
7863            let envelope_size = 8;
7864            let bytes_len = len * envelope_size;
7865            let offset = decoder.out_of_line_offset(bytes_len)?;
7866            // Decode the envelope for each type.
7867            let mut _next_ordinal_to_read = 0;
7868            let mut next_offset = offset;
7869            let end_offset = offset + bytes_len;
7870            _next_ordinal_to_read += 1;
7871            if next_offset >= end_offset {
7872                return Ok(());
7873            }
7874
7875            // Decode unknown envelopes for gaps in ordinals.
7876            while _next_ordinal_to_read < 1 {
7877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7878                _next_ordinal_to_read += 1;
7879                next_offset += envelope_size;
7880            }
7881
7882            let next_out_of_line = decoder.next_out_of_line();
7883            let handles_before = decoder.remaining_handles();
7884            if let Some((inlined, num_bytes, num_handles)) =
7885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7886            {
7887                let member_inline_size = <fidl::encoding::UnboundedVector<ConfigValueSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7888                if inlined != (member_inline_size <= 4) {
7889                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7890                }
7891                let inner_offset;
7892                let mut inner_depth = depth.clone();
7893                if inlined {
7894                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7895                    inner_offset = next_offset;
7896                } else {
7897                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7898                    inner_depth.increment()?;
7899                }
7900                let val_ref = self.values.get_or_insert_with(|| {
7901                    fidl::new_empty!(fidl::encoding::UnboundedVector<ConfigValueSpec>, D)
7902                });
7903                fidl::decode!(
7904                    fidl::encoding::UnboundedVector<ConfigValueSpec>,
7905                    D,
7906                    val_ref,
7907                    decoder,
7908                    inner_offset,
7909                    inner_depth
7910                )?;
7911                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7912                {
7913                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7914                }
7915                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7916                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7917                }
7918            }
7919
7920            next_offset += envelope_size;
7921            _next_ordinal_to_read += 1;
7922            if next_offset >= end_offset {
7923                return Ok(());
7924            }
7925
7926            // Decode unknown envelopes for gaps in ordinals.
7927            while _next_ordinal_to_read < 2 {
7928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7929                _next_ordinal_to_read += 1;
7930                next_offset += envelope_size;
7931            }
7932
7933            let next_out_of_line = decoder.next_out_of_line();
7934            let handles_before = decoder.remaining_handles();
7935            if let Some((inlined, num_bytes, num_handles)) =
7936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7937            {
7938                let member_inline_size =
7939                    <ConfigChecksum as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7940                if inlined != (member_inline_size <= 4) {
7941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7942                }
7943                let inner_offset;
7944                let mut inner_depth = depth.clone();
7945                if inlined {
7946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7947                    inner_offset = next_offset;
7948                } else {
7949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7950                    inner_depth.increment()?;
7951                }
7952                let val_ref =
7953                    self.checksum.get_or_insert_with(|| fidl::new_empty!(ConfigChecksum, D));
7954                fidl::decode!(ConfigChecksum, D, val_ref, decoder, inner_offset, inner_depth)?;
7955                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7956                {
7957                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7958                }
7959                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7960                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7961                }
7962            }
7963
7964            next_offset += envelope_size;
7965
7966            // Decode the remaining unknown envelopes.
7967            while next_offset < end_offset {
7968                _next_ordinal_to_read += 1;
7969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7970                next_offset += envelope_size;
7971            }
7972
7973            Ok(())
7974        }
7975    }
7976
7977    impl Configuration {
7978        #[inline(always)]
7979        fn max_ordinal_present(&self) -> u64 {
7980            if let Some(_) = self.value {
7981                return 2;
7982            }
7983            if let Some(_) = self.name {
7984                return 1;
7985            }
7986            0
7987        }
7988    }
7989
7990    impl fidl::encoding::ValueTypeMarker for Configuration {
7991        type Borrowed<'a> = &'a Self;
7992        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7993            value
7994        }
7995    }
7996
7997    unsafe impl fidl::encoding::TypeMarker for Configuration {
7998        type Owned = Self;
7999
8000        #[inline(always)]
8001        fn inline_align(_context: fidl::encoding::Context) -> usize {
8002            8
8003        }
8004
8005        #[inline(always)]
8006        fn inline_size(_context: fidl::encoding::Context) -> usize {
8007            16
8008        }
8009    }
8010
8011    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Configuration, D>
8012        for &Configuration
8013    {
8014        unsafe fn encode(
8015            self,
8016            encoder: &mut fidl::encoding::Encoder<'_, D>,
8017            offset: usize,
8018            mut depth: fidl::encoding::Depth,
8019        ) -> fidl::Result<()> {
8020            encoder.debug_check_bounds::<Configuration>(offset);
8021            // Vector header
8022            let max_ordinal: u64 = self.max_ordinal_present();
8023            encoder.write_num(max_ordinal, offset);
8024            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8025            // Calling encoder.out_of_line_offset(0) is not allowed.
8026            if max_ordinal == 0 {
8027                return Ok(());
8028            }
8029            depth.increment()?;
8030            let envelope_size = 8;
8031            let bytes_len = max_ordinal as usize * envelope_size;
8032            #[allow(unused_variables)]
8033            let offset = encoder.out_of_line_offset(bytes_len);
8034            let mut _prev_end_offset: usize = 0;
8035            if 1 > max_ordinal {
8036                return Ok(());
8037            }
8038
8039            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8040            // are envelope_size bytes.
8041            let cur_offset: usize = (1 - 1) * envelope_size;
8042
8043            // Zero reserved fields.
8044            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8045
8046            // Safety:
8047            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8048            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8049            //   envelope_size bytes, there is always sufficient room.
8050            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8051                self.name.as_ref().map(
8052                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8053                ),
8054                encoder,
8055                offset + cur_offset,
8056                depth,
8057            )?;
8058
8059            _prev_end_offset = cur_offset + envelope_size;
8060            if 2 > max_ordinal {
8061                return Ok(());
8062            }
8063
8064            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8065            // are envelope_size bytes.
8066            let cur_offset: usize = (2 - 1) * envelope_size;
8067
8068            // Zero reserved fields.
8069            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8070
8071            // Safety:
8072            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8073            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8074            //   envelope_size bytes, there is always sufficient room.
8075            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
8076                self.value.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
8077                encoder,
8078                offset + cur_offset,
8079                depth,
8080            )?;
8081
8082            _prev_end_offset = cur_offset + envelope_size;
8083
8084            Ok(())
8085        }
8086    }
8087
8088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Configuration {
8089        #[inline(always)]
8090        fn new_empty() -> Self {
8091            Self::default()
8092        }
8093
8094        unsafe fn decode(
8095            &mut self,
8096            decoder: &mut fidl::encoding::Decoder<'_, D>,
8097            offset: usize,
8098            mut depth: fidl::encoding::Depth,
8099        ) -> fidl::Result<()> {
8100            decoder.debug_check_bounds::<Self>(offset);
8101            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8102                None => return Err(fidl::Error::NotNullable),
8103                Some(len) => len,
8104            };
8105            // Calling decoder.out_of_line_offset(0) is not allowed.
8106            if len == 0 {
8107                return Ok(());
8108            };
8109            depth.increment()?;
8110            let envelope_size = 8;
8111            let bytes_len = len * envelope_size;
8112            let offset = decoder.out_of_line_offset(bytes_len)?;
8113            // Decode the envelope for each type.
8114            let mut _next_ordinal_to_read = 0;
8115            let mut next_offset = offset;
8116            let end_offset = offset + bytes_len;
8117            _next_ordinal_to_read += 1;
8118            if next_offset >= end_offset {
8119                return Ok(());
8120            }
8121
8122            // Decode unknown envelopes for gaps in ordinals.
8123            while _next_ordinal_to_read < 1 {
8124                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8125                _next_ordinal_to_read += 1;
8126                next_offset += envelope_size;
8127            }
8128
8129            let next_out_of_line = decoder.next_out_of_line();
8130            let handles_before = decoder.remaining_handles();
8131            if let Some((inlined, num_bytes, num_handles)) =
8132                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8133            {
8134                let member_inline_size =
8135                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8136                        decoder.context,
8137                    );
8138                if inlined != (member_inline_size <= 4) {
8139                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8140                }
8141                let inner_offset;
8142                let mut inner_depth = depth.clone();
8143                if inlined {
8144                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8145                    inner_offset = next_offset;
8146                } else {
8147                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8148                    inner_depth.increment()?;
8149                }
8150                let val_ref = self
8151                    .name
8152                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8153                fidl::decode!(
8154                    fidl::encoding::BoundedString<100>,
8155                    D,
8156                    val_ref,
8157                    decoder,
8158                    inner_offset,
8159                    inner_depth
8160                )?;
8161                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8162                {
8163                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8164                }
8165                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8166                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8167                }
8168            }
8169
8170            next_offset += envelope_size;
8171            _next_ordinal_to_read += 1;
8172            if next_offset >= end_offset {
8173                return Ok(());
8174            }
8175
8176            // Decode unknown envelopes for gaps in ordinals.
8177            while _next_ordinal_to_read < 2 {
8178                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8179                _next_ordinal_to_read += 1;
8180                next_offset += envelope_size;
8181            }
8182
8183            let next_out_of_line = decoder.next_out_of_line();
8184            let handles_before = decoder.remaining_handles();
8185            if let Some((inlined, num_bytes, num_handles)) =
8186                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8187            {
8188                let member_inline_size =
8189                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8190                if inlined != (member_inline_size <= 4) {
8191                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8192                }
8193                let inner_offset;
8194                let mut inner_depth = depth.clone();
8195                if inlined {
8196                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8197                    inner_offset = next_offset;
8198                } else {
8199                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8200                    inner_depth.increment()?;
8201                }
8202                let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
8203                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
8204                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8205                {
8206                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8207                }
8208                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8209                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8210                }
8211            }
8212
8213            next_offset += envelope_size;
8214
8215            // Decode the remaining unknown envelopes.
8216            while next_offset < end_offset {
8217                _next_ordinal_to_read += 1;
8218                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8219                next_offset += envelope_size;
8220            }
8221
8222            Ok(())
8223        }
8224    }
8225
8226    impl DebugProtocolRegistration {
8227        #[inline(always)]
8228        fn max_ordinal_present(&self) -> u64 {
8229            if let Some(_) = self.target_name {
8230                return 3;
8231            }
8232            if let Some(_) = self.source_name {
8233                return 2;
8234            }
8235            if let Some(_) = self.source {
8236                return 1;
8237            }
8238            0
8239        }
8240    }
8241
8242    impl fidl::encoding::ValueTypeMarker for DebugProtocolRegistration {
8243        type Borrowed<'a> = &'a Self;
8244        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8245            value
8246        }
8247    }
8248
8249    unsafe impl fidl::encoding::TypeMarker for DebugProtocolRegistration {
8250        type Owned = Self;
8251
8252        #[inline(always)]
8253        fn inline_align(_context: fidl::encoding::Context) -> usize {
8254            8
8255        }
8256
8257        #[inline(always)]
8258        fn inline_size(_context: fidl::encoding::Context) -> usize {
8259            16
8260        }
8261    }
8262
8263    unsafe impl<D: fidl::encoding::ResourceDialect>
8264        fidl::encoding::Encode<DebugProtocolRegistration, D> for &DebugProtocolRegistration
8265    {
8266        unsafe fn encode(
8267            self,
8268            encoder: &mut fidl::encoding::Encoder<'_, D>,
8269            offset: usize,
8270            mut depth: fidl::encoding::Depth,
8271        ) -> fidl::Result<()> {
8272            encoder.debug_check_bounds::<DebugProtocolRegistration>(offset);
8273            // Vector header
8274            let max_ordinal: u64 = self.max_ordinal_present();
8275            encoder.write_num(max_ordinal, offset);
8276            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8277            // Calling encoder.out_of_line_offset(0) is not allowed.
8278            if max_ordinal == 0 {
8279                return Ok(());
8280            }
8281            depth.increment()?;
8282            let envelope_size = 8;
8283            let bytes_len = max_ordinal as usize * envelope_size;
8284            #[allow(unused_variables)]
8285            let offset = encoder.out_of_line_offset(bytes_len);
8286            let mut _prev_end_offset: usize = 0;
8287            if 1 > max_ordinal {
8288                return Ok(());
8289            }
8290
8291            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8292            // are envelope_size bytes.
8293            let cur_offset: usize = (1 - 1) * envelope_size;
8294
8295            // Zero reserved fields.
8296            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8297
8298            // Safety:
8299            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8300            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8301            //   envelope_size bytes, there is always sufficient room.
8302            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
8303                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
8304                encoder,
8305                offset + cur_offset,
8306                depth,
8307            )?;
8308
8309            _prev_end_offset = cur_offset + envelope_size;
8310            if 2 > max_ordinal {
8311                return Ok(());
8312            }
8313
8314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8315            // are envelope_size bytes.
8316            let cur_offset: usize = (2 - 1) * envelope_size;
8317
8318            // Zero reserved fields.
8319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8320
8321            // Safety:
8322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8324            //   envelope_size bytes, there is always sufficient room.
8325            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8326                self.source_name.as_ref().map(
8327                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8328                ),
8329                encoder,
8330                offset + cur_offset,
8331                depth,
8332            )?;
8333
8334            _prev_end_offset = cur_offset + envelope_size;
8335            if 3 > max_ordinal {
8336                return Ok(());
8337            }
8338
8339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8340            // are envelope_size bytes.
8341            let cur_offset: usize = (3 - 1) * envelope_size;
8342
8343            // Zero reserved fields.
8344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8345
8346            // Safety:
8347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8349            //   envelope_size bytes, there is always sufficient room.
8350            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8351                self.target_name.as_ref().map(
8352                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8353                ),
8354                encoder,
8355                offset + cur_offset,
8356                depth,
8357            )?;
8358
8359            _prev_end_offset = cur_offset + envelope_size;
8360
8361            Ok(())
8362        }
8363    }
8364
8365    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8366        for DebugProtocolRegistration
8367    {
8368        #[inline(always)]
8369        fn new_empty() -> Self {
8370            Self::default()
8371        }
8372
8373        unsafe fn decode(
8374            &mut self,
8375            decoder: &mut fidl::encoding::Decoder<'_, D>,
8376            offset: usize,
8377            mut depth: fidl::encoding::Depth,
8378        ) -> fidl::Result<()> {
8379            decoder.debug_check_bounds::<Self>(offset);
8380            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8381                None => return Err(fidl::Error::NotNullable),
8382                Some(len) => len,
8383            };
8384            // Calling decoder.out_of_line_offset(0) is not allowed.
8385            if len == 0 {
8386                return Ok(());
8387            };
8388            depth.increment()?;
8389            let envelope_size = 8;
8390            let bytes_len = len * envelope_size;
8391            let offset = decoder.out_of_line_offset(bytes_len)?;
8392            // Decode the envelope for each type.
8393            let mut _next_ordinal_to_read = 0;
8394            let mut next_offset = offset;
8395            let end_offset = offset + bytes_len;
8396            _next_ordinal_to_read += 1;
8397            if next_offset >= end_offset {
8398                return Ok(());
8399            }
8400
8401            // Decode unknown envelopes for gaps in ordinals.
8402            while _next_ordinal_to_read < 1 {
8403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8404                _next_ordinal_to_read += 1;
8405                next_offset += envelope_size;
8406            }
8407
8408            let next_out_of_line = decoder.next_out_of_line();
8409            let handles_before = decoder.remaining_handles();
8410            if let Some((inlined, num_bytes, num_handles)) =
8411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8412            {
8413                let member_inline_size =
8414                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8415                if inlined != (member_inline_size <= 4) {
8416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8417                }
8418                let inner_offset;
8419                let mut inner_depth = depth.clone();
8420                if inlined {
8421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8422                    inner_offset = next_offset;
8423                } else {
8424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8425                    inner_depth.increment()?;
8426                }
8427                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
8428                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
8429                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8430                {
8431                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8432                }
8433                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8434                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8435                }
8436            }
8437
8438            next_offset += envelope_size;
8439            _next_ordinal_to_read += 1;
8440            if next_offset >= end_offset {
8441                return Ok(());
8442            }
8443
8444            // Decode unknown envelopes for gaps in ordinals.
8445            while _next_ordinal_to_read < 2 {
8446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8447                _next_ordinal_to_read += 1;
8448                next_offset += envelope_size;
8449            }
8450
8451            let next_out_of_line = decoder.next_out_of_line();
8452            let handles_before = decoder.remaining_handles();
8453            if let Some((inlined, num_bytes, num_handles)) =
8454                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8455            {
8456                let member_inline_size =
8457                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8458                        decoder.context,
8459                    );
8460                if inlined != (member_inline_size <= 4) {
8461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8462                }
8463                let inner_offset;
8464                let mut inner_depth = depth.clone();
8465                if inlined {
8466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8467                    inner_offset = next_offset;
8468                } else {
8469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8470                    inner_depth.increment()?;
8471                }
8472                let val_ref = self
8473                    .source_name
8474                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8475                fidl::decode!(
8476                    fidl::encoding::BoundedString<100>,
8477                    D,
8478                    val_ref,
8479                    decoder,
8480                    inner_offset,
8481                    inner_depth
8482                )?;
8483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8484                {
8485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8486                }
8487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8489                }
8490            }
8491
8492            next_offset += envelope_size;
8493            _next_ordinal_to_read += 1;
8494            if next_offset >= end_offset {
8495                return Ok(());
8496            }
8497
8498            // Decode unknown envelopes for gaps in ordinals.
8499            while _next_ordinal_to_read < 3 {
8500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8501                _next_ordinal_to_read += 1;
8502                next_offset += envelope_size;
8503            }
8504
8505            let next_out_of_line = decoder.next_out_of_line();
8506            let handles_before = decoder.remaining_handles();
8507            if let Some((inlined, num_bytes, num_handles)) =
8508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8509            {
8510                let member_inline_size =
8511                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8512                        decoder.context,
8513                    );
8514                if inlined != (member_inline_size <= 4) {
8515                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8516                }
8517                let inner_offset;
8518                let mut inner_depth = depth.clone();
8519                if inlined {
8520                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8521                    inner_offset = next_offset;
8522                } else {
8523                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8524                    inner_depth.increment()?;
8525                }
8526                let val_ref = self
8527                    .target_name
8528                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8529                fidl::decode!(
8530                    fidl::encoding::BoundedString<100>,
8531                    D,
8532                    val_ref,
8533                    decoder,
8534                    inner_offset,
8535                    inner_depth
8536                )?;
8537                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8538                {
8539                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8540                }
8541                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8542                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8543                }
8544            }
8545
8546            next_offset += envelope_size;
8547
8548            // Decode the remaining unknown envelopes.
8549            while next_offset < end_offset {
8550                _next_ordinal_to_read += 1;
8551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8552                next_offset += envelope_size;
8553            }
8554
8555            Ok(())
8556        }
8557    }
8558
8559    impl Dictionary {
8560        #[inline(always)]
8561        fn max_ordinal_present(&self) -> u64 {
8562            if let Some(_) = self.source_path {
8563                return 4;
8564            }
8565            if let Some(_) = self.source_dictionary {
8566                return 3;
8567            }
8568            if let Some(_) = self.source {
8569                return 2;
8570            }
8571            if let Some(_) = self.name {
8572                return 1;
8573            }
8574            0
8575        }
8576    }
8577
8578    impl fidl::encoding::ValueTypeMarker for Dictionary {
8579        type Borrowed<'a> = &'a Self;
8580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8581            value
8582        }
8583    }
8584
8585    unsafe impl fidl::encoding::TypeMarker for Dictionary {
8586        type Owned = Self;
8587
8588        #[inline(always)]
8589        fn inline_align(_context: fidl::encoding::Context) -> usize {
8590            8
8591        }
8592
8593        #[inline(always)]
8594        fn inline_size(_context: fidl::encoding::Context) -> usize {
8595            16
8596        }
8597    }
8598
8599    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dictionary, D>
8600        for &Dictionary
8601    {
8602        unsafe fn encode(
8603            self,
8604            encoder: &mut fidl::encoding::Encoder<'_, D>,
8605            offset: usize,
8606            mut depth: fidl::encoding::Depth,
8607        ) -> fidl::Result<()> {
8608            encoder.debug_check_bounds::<Dictionary>(offset);
8609            // Vector header
8610            let max_ordinal: u64 = self.max_ordinal_present();
8611            encoder.write_num(max_ordinal, offset);
8612            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8613            // Calling encoder.out_of_line_offset(0) is not allowed.
8614            if max_ordinal == 0 {
8615                return Ok(());
8616            }
8617            depth.increment()?;
8618            let envelope_size = 8;
8619            let bytes_len = max_ordinal as usize * envelope_size;
8620            #[allow(unused_variables)]
8621            let offset = encoder.out_of_line_offset(bytes_len);
8622            let mut _prev_end_offset: usize = 0;
8623            if 1 > max_ordinal {
8624                return Ok(());
8625            }
8626
8627            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8628            // are envelope_size bytes.
8629            let cur_offset: usize = (1 - 1) * envelope_size;
8630
8631            // Zero reserved fields.
8632            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8633
8634            // Safety:
8635            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8636            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8637            //   envelope_size bytes, there is always sufficient room.
8638            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8639                self.name.as_ref().map(
8640                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8641                ),
8642                encoder,
8643                offset + cur_offset,
8644                depth,
8645            )?;
8646
8647            _prev_end_offset = cur_offset + envelope_size;
8648            if 2 > max_ordinal {
8649                return Ok(());
8650            }
8651
8652            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8653            // are envelope_size bytes.
8654            let cur_offset: usize = (2 - 1) * envelope_size;
8655
8656            // Zero reserved fields.
8657            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8658
8659            // Safety:
8660            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8661            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8662            //   envelope_size bytes, there is always sufficient room.
8663            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
8664                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
8665                encoder,
8666                offset + cur_offset,
8667                depth,
8668            )?;
8669
8670            _prev_end_offset = cur_offset + envelope_size;
8671            if 3 > max_ordinal {
8672                return Ok(());
8673            }
8674
8675            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8676            // are envelope_size bytes.
8677            let cur_offset: usize = (3 - 1) * envelope_size;
8678
8679            // Zero reserved fields.
8680            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8681
8682            // Safety:
8683            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8684            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8685            //   envelope_size bytes, there is always sufficient room.
8686            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8687            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8688            encoder, offset + cur_offset, depth
8689        )?;
8690
8691            _prev_end_offset = cur_offset + envelope_size;
8692            if 4 > max_ordinal {
8693                return Ok(());
8694            }
8695
8696            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8697            // are envelope_size bytes.
8698            let cur_offset: usize = (4 - 1) * envelope_size;
8699
8700            // Zero reserved fields.
8701            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8702
8703            // Safety:
8704            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8705            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8706            //   envelope_size bytes, there is always sufficient room.
8707            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8708            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8709            encoder, offset + cur_offset, depth
8710        )?;
8711
8712            _prev_end_offset = cur_offset + envelope_size;
8713
8714            Ok(())
8715        }
8716    }
8717
8718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dictionary {
8719        #[inline(always)]
8720        fn new_empty() -> Self {
8721            Self::default()
8722        }
8723
8724        unsafe fn decode(
8725            &mut self,
8726            decoder: &mut fidl::encoding::Decoder<'_, D>,
8727            offset: usize,
8728            mut depth: fidl::encoding::Depth,
8729        ) -> fidl::Result<()> {
8730            decoder.debug_check_bounds::<Self>(offset);
8731            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8732                None => return Err(fidl::Error::NotNullable),
8733                Some(len) => len,
8734            };
8735            // Calling decoder.out_of_line_offset(0) is not allowed.
8736            if len == 0 {
8737                return Ok(());
8738            };
8739            depth.increment()?;
8740            let envelope_size = 8;
8741            let bytes_len = len * envelope_size;
8742            let offset = decoder.out_of_line_offset(bytes_len)?;
8743            // Decode the envelope for each type.
8744            let mut _next_ordinal_to_read = 0;
8745            let mut next_offset = offset;
8746            let end_offset = offset + bytes_len;
8747            _next_ordinal_to_read += 1;
8748            if next_offset >= end_offset {
8749                return Ok(());
8750            }
8751
8752            // Decode unknown envelopes for gaps in ordinals.
8753            while _next_ordinal_to_read < 1 {
8754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8755                _next_ordinal_to_read += 1;
8756                next_offset += envelope_size;
8757            }
8758
8759            let next_out_of_line = decoder.next_out_of_line();
8760            let handles_before = decoder.remaining_handles();
8761            if let Some((inlined, num_bytes, num_handles)) =
8762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8763            {
8764                let member_inline_size =
8765                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8766                        decoder.context,
8767                    );
8768                if inlined != (member_inline_size <= 4) {
8769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8770                }
8771                let inner_offset;
8772                let mut inner_depth = depth.clone();
8773                if inlined {
8774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8775                    inner_offset = next_offset;
8776                } else {
8777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8778                    inner_depth.increment()?;
8779                }
8780                let val_ref = self
8781                    .name
8782                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8783                fidl::decode!(
8784                    fidl::encoding::BoundedString<100>,
8785                    D,
8786                    val_ref,
8787                    decoder,
8788                    inner_offset,
8789                    inner_depth
8790                )?;
8791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8792                {
8793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8794                }
8795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8797                }
8798            }
8799
8800            next_offset += envelope_size;
8801            _next_ordinal_to_read += 1;
8802            if next_offset >= end_offset {
8803                return Ok(());
8804            }
8805
8806            // Decode unknown envelopes for gaps in ordinals.
8807            while _next_ordinal_to_read < 2 {
8808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8809                _next_ordinal_to_read += 1;
8810                next_offset += envelope_size;
8811            }
8812
8813            let next_out_of_line = decoder.next_out_of_line();
8814            let handles_before = decoder.remaining_handles();
8815            if let Some((inlined, num_bytes, num_handles)) =
8816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8817            {
8818                let member_inline_size =
8819                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8820                if inlined != (member_inline_size <= 4) {
8821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8822                }
8823                let inner_offset;
8824                let mut inner_depth = depth.clone();
8825                if inlined {
8826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8827                    inner_offset = next_offset;
8828                } else {
8829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8830                    inner_depth.increment()?;
8831                }
8832                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
8833                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
8834                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8835                {
8836                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8837                }
8838                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8839                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8840                }
8841            }
8842
8843            next_offset += envelope_size;
8844            _next_ordinal_to_read += 1;
8845            if next_offset >= end_offset {
8846                return Ok(());
8847            }
8848
8849            // Decode unknown envelopes for gaps in ordinals.
8850            while _next_ordinal_to_read < 3 {
8851                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8852                _next_ordinal_to_read += 1;
8853                next_offset += envelope_size;
8854            }
8855
8856            let next_out_of_line = decoder.next_out_of_line();
8857            let handles_before = decoder.remaining_handles();
8858            if let Some((inlined, num_bytes, num_handles)) =
8859                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8860            {
8861                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8862                if inlined != (member_inline_size <= 4) {
8863                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8864                }
8865                let inner_offset;
8866                let mut inner_depth = depth.clone();
8867                if inlined {
8868                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8869                    inner_offset = next_offset;
8870                } else {
8871                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8872                    inner_depth.increment()?;
8873                }
8874                let val_ref = self.source_dictionary.get_or_insert_with(|| {
8875                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
8876                });
8877                fidl::decode!(
8878                    fidl::encoding::BoundedString<1024>,
8879                    D,
8880                    val_ref,
8881                    decoder,
8882                    inner_offset,
8883                    inner_depth
8884                )?;
8885                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8886                {
8887                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8888                }
8889                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8890                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8891                }
8892            }
8893
8894            next_offset += envelope_size;
8895            _next_ordinal_to_read += 1;
8896            if next_offset >= end_offset {
8897                return Ok(());
8898            }
8899
8900            // Decode unknown envelopes for gaps in ordinals.
8901            while _next_ordinal_to_read < 4 {
8902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8903                _next_ordinal_to_read += 1;
8904                next_offset += envelope_size;
8905            }
8906
8907            let next_out_of_line = decoder.next_out_of_line();
8908            let handles_before = decoder.remaining_handles();
8909            if let Some((inlined, num_bytes, num_handles)) =
8910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8911            {
8912                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8913                if inlined != (member_inline_size <= 4) {
8914                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8915                }
8916                let inner_offset;
8917                let mut inner_depth = depth.clone();
8918                if inlined {
8919                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8920                    inner_offset = next_offset;
8921                } else {
8922                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8923                    inner_depth.increment()?;
8924                }
8925                let val_ref = self.source_path.get_or_insert_with(|| {
8926                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
8927                });
8928                fidl::decode!(
8929                    fidl::encoding::BoundedString<1024>,
8930                    D,
8931                    val_ref,
8932                    decoder,
8933                    inner_offset,
8934                    inner_depth
8935                )?;
8936                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8937                {
8938                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8939                }
8940                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8941                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8942                }
8943            }
8944
8945            next_offset += envelope_size;
8946
8947            // Decode the remaining unknown envelopes.
8948            while next_offset < end_offset {
8949                _next_ordinal_to_read += 1;
8950                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8951                next_offset += envelope_size;
8952            }
8953
8954            Ok(())
8955        }
8956    }
8957
8958    impl Directory {
8959        #[inline(always)]
8960        fn max_ordinal_present(&self) -> u64 {
8961            if let Some(_) = self.rights {
8962                return 3;
8963            }
8964            if let Some(_) = self.source_path {
8965                return 2;
8966            }
8967            if let Some(_) = self.name {
8968                return 1;
8969            }
8970            0
8971        }
8972    }
8973
8974    impl fidl::encoding::ValueTypeMarker for Directory {
8975        type Borrowed<'a> = &'a Self;
8976        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8977            value
8978        }
8979    }
8980
8981    unsafe impl fidl::encoding::TypeMarker for Directory {
8982        type Owned = Self;
8983
8984        #[inline(always)]
8985        fn inline_align(_context: fidl::encoding::Context) -> usize {
8986            8
8987        }
8988
8989        #[inline(always)]
8990        fn inline_size(_context: fidl::encoding::Context) -> usize {
8991            16
8992        }
8993    }
8994
8995    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Directory, D>
8996        for &Directory
8997    {
8998        unsafe fn encode(
8999            self,
9000            encoder: &mut fidl::encoding::Encoder<'_, D>,
9001            offset: usize,
9002            mut depth: fidl::encoding::Depth,
9003        ) -> fidl::Result<()> {
9004            encoder.debug_check_bounds::<Directory>(offset);
9005            // Vector header
9006            let max_ordinal: u64 = self.max_ordinal_present();
9007            encoder.write_num(max_ordinal, offset);
9008            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9009            // Calling encoder.out_of_line_offset(0) is not allowed.
9010            if max_ordinal == 0 {
9011                return Ok(());
9012            }
9013            depth.increment()?;
9014            let envelope_size = 8;
9015            let bytes_len = max_ordinal as usize * envelope_size;
9016            #[allow(unused_variables)]
9017            let offset = encoder.out_of_line_offset(bytes_len);
9018            let mut _prev_end_offset: usize = 0;
9019            if 1 > max_ordinal {
9020                return Ok(());
9021            }
9022
9023            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9024            // are envelope_size bytes.
9025            let cur_offset: usize = (1 - 1) * envelope_size;
9026
9027            // Zero reserved fields.
9028            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9029
9030            // Safety:
9031            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9032            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9033            //   envelope_size bytes, there is always sufficient room.
9034            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9035                self.name.as_ref().map(
9036                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9037                ),
9038                encoder,
9039                offset + cur_offset,
9040                depth,
9041            )?;
9042
9043            _prev_end_offset = cur_offset + envelope_size;
9044            if 2 > max_ordinal {
9045                return Ok(());
9046            }
9047
9048            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9049            // are envelope_size bytes.
9050            let cur_offset: usize = (2 - 1) * envelope_size;
9051
9052            // Zero reserved fields.
9053            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9054
9055            // Safety:
9056            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9057            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9058            //   envelope_size bytes, there is always sufficient room.
9059            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
9060            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
9061            encoder, offset + cur_offset, depth
9062        )?;
9063
9064            _prev_end_offset = cur_offset + envelope_size;
9065            if 3 > max_ordinal {
9066                return Ok(());
9067            }
9068
9069            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9070            // are envelope_size bytes.
9071            let cur_offset: usize = (3 - 1) * envelope_size;
9072
9073            // Zero reserved fields.
9074            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9075
9076            // Safety:
9077            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9078            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9079            //   envelope_size bytes, there is always sufficient room.
9080            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
9081            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
9082            encoder, offset + cur_offset, depth
9083        )?;
9084
9085            _prev_end_offset = cur_offset + envelope_size;
9086
9087            Ok(())
9088        }
9089    }
9090
9091    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Directory {
9092        #[inline(always)]
9093        fn new_empty() -> Self {
9094            Self::default()
9095        }
9096
9097        unsafe fn decode(
9098            &mut self,
9099            decoder: &mut fidl::encoding::Decoder<'_, D>,
9100            offset: usize,
9101            mut depth: fidl::encoding::Depth,
9102        ) -> fidl::Result<()> {
9103            decoder.debug_check_bounds::<Self>(offset);
9104            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9105                None => return Err(fidl::Error::NotNullable),
9106                Some(len) => len,
9107            };
9108            // Calling decoder.out_of_line_offset(0) is not allowed.
9109            if len == 0 {
9110                return Ok(());
9111            };
9112            depth.increment()?;
9113            let envelope_size = 8;
9114            let bytes_len = len * envelope_size;
9115            let offset = decoder.out_of_line_offset(bytes_len)?;
9116            // Decode the envelope for each type.
9117            let mut _next_ordinal_to_read = 0;
9118            let mut next_offset = offset;
9119            let end_offset = offset + bytes_len;
9120            _next_ordinal_to_read += 1;
9121            if next_offset >= end_offset {
9122                return Ok(());
9123            }
9124
9125            // Decode unknown envelopes for gaps in ordinals.
9126            while _next_ordinal_to_read < 1 {
9127                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9128                _next_ordinal_to_read += 1;
9129                next_offset += envelope_size;
9130            }
9131
9132            let next_out_of_line = decoder.next_out_of_line();
9133            let handles_before = decoder.remaining_handles();
9134            if let Some((inlined, num_bytes, num_handles)) =
9135                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9136            {
9137                let member_inline_size =
9138                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9139                        decoder.context,
9140                    );
9141                if inlined != (member_inline_size <= 4) {
9142                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9143                }
9144                let inner_offset;
9145                let mut inner_depth = depth.clone();
9146                if inlined {
9147                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9148                    inner_offset = next_offset;
9149                } else {
9150                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9151                    inner_depth.increment()?;
9152                }
9153                let val_ref = self
9154                    .name
9155                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9156                fidl::decode!(
9157                    fidl::encoding::BoundedString<100>,
9158                    D,
9159                    val_ref,
9160                    decoder,
9161                    inner_offset,
9162                    inner_depth
9163                )?;
9164                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9165                {
9166                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9167                }
9168                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9169                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9170                }
9171            }
9172
9173            next_offset += envelope_size;
9174            _next_ordinal_to_read += 1;
9175            if next_offset >= end_offset {
9176                return Ok(());
9177            }
9178
9179            // Decode unknown envelopes for gaps in ordinals.
9180            while _next_ordinal_to_read < 2 {
9181                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9182                _next_ordinal_to_read += 1;
9183                next_offset += envelope_size;
9184            }
9185
9186            let next_out_of_line = decoder.next_out_of_line();
9187            let handles_before = decoder.remaining_handles();
9188            if let Some((inlined, num_bytes, num_handles)) =
9189                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9190            {
9191                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9192                if inlined != (member_inline_size <= 4) {
9193                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9194                }
9195                let inner_offset;
9196                let mut inner_depth = depth.clone();
9197                if inlined {
9198                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9199                    inner_offset = next_offset;
9200                } else {
9201                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9202                    inner_depth.increment()?;
9203                }
9204                let val_ref = self.source_path.get_or_insert_with(|| {
9205                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
9206                });
9207                fidl::decode!(
9208                    fidl::encoding::BoundedString<1024>,
9209                    D,
9210                    val_ref,
9211                    decoder,
9212                    inner_offset,
9213                    inner_depth
9214                )?;
9215                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9216                {
9217                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9218                }
9219                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9220                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9221                }
9222            }
9223
9224            next_offset += envelope_size;
9225            _next_ordinal_to_read += 1;
9226            if next_offset >= end_offset {
9227                return Ok(());
9228            }
9229
9230            // Decode unknown envelopes for gaps in ordinals.
9231            while _next_ordinal_to_read < 3 {
9232                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9233                _next_ordinal_to_read += 1;
9234                next_offset += envelope_size;
9235            }
9236
9237            let next_out_of_line = decoder.next_out_of_line();
9238            let handles_before = decoder.remaining_handles();
9239            if let Some((inlined, num_bytes, num_handles)) =
9240                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9241            {
9242                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9243                if inlined != (member_inline_size <= 4) {
9244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9245                }
9246                let inner_offset;
9247                let mut inner_depth = depth.clone();
9248                if inlined {
9249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9250                    inner_offset = next_offset;
9251                } else {
9252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9253                    inner_depth.increment()?;
9254                }
9255                let val_ref = self.rights.get_or_insert_with(|| {
9256                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
9257                });
9258                fidl::decode!(
9259                    fidl_fuchsia_io__common::Operations,
9260                    D,
9261                    val_ref,
9262                    decoder,
9263                    inner_offset,
9264                    inner_depth
9265                )?;
9266                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9267                {
9268                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9269                }
9270                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9271                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9272                }
9273            }
9274
9275            next_offset += envelope_size;
9276
9277            // Decode the remaining unknown envelopes.
9278            while next_offset < end_offset {
9279                _next_ordinal_to_read += 1;
9280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9281                next_offset += envelope_size;
9282            }
9283
9284            Ok(())
9285        }
9286    }
9287
9288    impl Environment {
9289        #[inline(always)]
9290        fn max_ordinal_present(&self) -> u64 {
9291            if let Some(_) = self.stop_timeout_ms {
9292                return 6;
9293            }
9294            if let Some(_) = self.debug_capabilities {
9295                return 5;
9296            }
9297            if let Some(_) = self.resolvers {
9298                return 4;
9299            }
9300            if let Some(_) = self.runners {
9301                return 3;
9302            }
9303            if let Some(_) = self.extends {
9304                return 2;
9305            }
9306            if let Some(_) = self.name {
9307                return 1;
9308            }
9309            0
9310        }
9311    }
9312
9313    impl fidl::encoding::ValueTypeMarker for Environment {
9314        type Borrowed<'a> = &'a Self;
9315        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9316            value
9317        }
9318    }
9319
9320    unsafe impl fidl::encoding::TypeMarker for Environment {
9321        type Owned = Self;
9322
9323        #[inline(always)]
9324        fn inline_align(_context: fidl::encoding::Context) -> usize {
9325            8
9326        }
9327
9328        #[inline(always)]
9329        fn inline_size(_context: fidl::encoding::Context) -> usize {
9330            16
9331        }
9332    }
9333
9334    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
9335        for &Environment
9336    {
9337        unsafe fn encode(
9338            self,
9339            encoder: &mut fidl::encoding::Encoder<'_, D>,
9340            offset: usize,
9341            mut depth: fidl::encoding::Depth,
9342        ) -> fidl::Result<()> {
9343            encoder.debug_check_bounds::<Environment>(offset);
9344            // Vector header
9345            let max_ordinal: u64 = self.max_ordinal_present();
9346            encoder.write_num(max_ordinal, offset);
9347            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9348            // Calling encoder.out_of_line_offset(0) is not allowed.
9349            if max_ordinal == 0 {
9350                return Ok(());
9351            }
9352            depth.increment()?;
9353            let envelope_size = 8;
9354            let bytes_len = max_ordinal as usize * envelope_size;
9355            #[allow(unused_variables)]
9356            let offset = encoder.out_of_line_offset(bytes_len);
9357            let mut _prev_end_offset: usize = 0;
9358            if 1 > max_ordinal {
9359                return Ok(());
9360            }
9361
9362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9363            // are envelope_size bytes.
9364            let cur_offset: usize = (1 - 1) * envelope_size;
9365
9366            // Zero reserved fields.
9367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9368
9369            // Safety:
9370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9372            //   envelope_size bytes, there is always sufficient room.
9373            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9374                self.name.as_ref().map(
9375                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9376                ),
9377                encoder,
9378                offset + cur_offset,
9379                depth,
9380            )?;
9381
9382            _prev_end_offset = cur_offset + envelope_size;
9383            if 2 > max_ordinal {
9384                return Ok(());
9385            }
9386
9387            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9388            // are envelope_size bytes.
9389            let cur_offset: usize = (2 - 1) * envelope_size;
9390
9391            // Zero reserved fields.
9392            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9393
9394            // Safety:
9395            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9396            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9397            //   envelope_size bytes, there is always sufficient room.
9398            fidl::encoding::encode_in_envelope_optional::<EnvironmentExtends, D>(
9399                self.extends
9400                    .as_ref()
9401                    .map(<EnvironmentExtends as fidl::encoding::ValueTypeMarker>::borrow),
9402                encoder,
9403                offset + cur_offset,
9404                depth,
9405            )?;
9406
9407            _prev_end_offset = cur_offset + envelope_size;
9408            if 3 > max_ordinal {
9409                return Ok(());
9410            }
9411
9412            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9413            // are envelope_size bytes.
9414            let cur_offset: usize = (3 - 1) * envelope_size;
9415
9416            // Zero reserved fields.
9417            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9418
9419            // Safety:
9420            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9421            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9422            //   envelope_size bytes, there is always sufficient room.
9423            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<RunnerRegistration>, D>(
9424            self.runners.as_ref().map(<fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9425            encoder, offset + cur_offset, depth
9426        )?;
9427
9428            _prev_end_offset = cur_offset + envelope_size;
9429            if 4 > max_ordinal {
9430                return Ok(());
9431            }
9432
9433            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9434            // are envelope_size bytes.
9435            let cur_offset: usize = (4 - 1) * envelope_size;
9436
9437            // Zero reserved fields.
9438            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9439
9440            // Safety:
9441            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9442            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9443            //   envelope_size bytes, there is always sufficient room.
9444            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ResolverRegistration>, D>(
9445            self.resolvers.as_ref().map(<fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9446            encoder, offset + cur_offset, depth
9447        )?;
9448
9449            _prev_end_offset = cur_offset + envelope_size;
9450            if 5 > max_ordinal {
9451                return Ok(());
9452            }
9453
9454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9455            // are envelope_size bytes.
9456            let cur_offset: usize = (5 - 1) * envelope_size;
9457
9458            // Zero reserved fields.
9459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9460
9461            // Safety:
9462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9464            //   envelope_size bytes, there is always sufficient room.
9465            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DebugRegistration>, D>(
9466            self.debug_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::ValueTypeMarker>::borrow),
9467            encoder, offset + cur_offset, depth
9468        )?;
9469
9470            _prev_end_offset = cur_offset + envelope_size;
9471            if 6 > max_ordinal {
9472                return Ok(());
9473            }
9474
9475            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9476            // are envelope_size bytes.
9477            let cur_offset: usize = (6 - 1) * envelope_size;
9478
9479            // Zero reserved fields.
9480            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9481
9482            // Safety:
9483            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9484            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9485            //   envelope_size bytes, there is always sufficient room.
9486            fidl::encoding::encode_in_envelope_optional::<u32, D>(
9487                self.stop_timeout_ms.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9488                encoder,
9489                offset + cur_offset,
9490                depth,
9491            )?;
9492
9493            _prev_end_offset = cur_offset + envelope_size;
9494
9495            Ok(())
9496        }
9497    }
9498
9499    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
9500        #[inline(always)]
9501        fn new_empty() -> Self {
9502            Self::default()
9503        }
9504
9505        unsafe fn decode(
9506            &mut self,
9507            decoder: &mut fidl::encoding::Decoder<'_, D>,
9508            offset: usize,
9509            mut depth: fidl::encoding::Depth,
9510        ) -> fidl::Result<()> {
9511            decoder.debug_check_bounds::<Self>(offset);
9512            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9513                None => return Err(fidl::Error::NotNullable),
9514                Some(len) => len,
9515            };
9516            // Calling decoder.out_of_line_offset(0) is not allowed.
9517            if len == 0 {
9518                return Ok(());
9519            };
9520            depth.increment()?;
9521            let envelope_size = 8;
9522            let bytes_len = len * envelope_size;
9523            let offset = decoder.out_of_line_offset(bytes_len)?;
9524            // Decode the envelope for each type.
9525            let mut _next_ordinal_to_read = 0;
9526            let mut next_offset = offset;
9527            let end_offset = offset + bytes_len;
9528            _next_ordinal_to_read += 1;
9529            if next_offset >= end_offset {
9530                return Ok(());
9531            }
9532
9533            // Decode unknown envelopes for gaps in ordinals.
9534            while _next_ordinal_to_read < 1 {
9535                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9536                _next_ordinal_to_read += 1;
9537                next_offset += envelope_size;
9538            }
9539
9540            let next_out_of_line = decoder.next_out_of_line();
9541            let handles_before = decoder.remaining_handles();
9542            if let Some((inlined, num_bytes, num_handles)) =
9543                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9544            {
9545                let member_inline_size =
9546                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9547                        decoder.context,
9548                    );
9549                if inlined != (member_inline_size <= 4) {
9550                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9551                }
9552                let inner_offset;
9553                let mut inner_depth = depth.clone();
9554                if inlined {
9555                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9556                    inner_offset = next_offset;
9557                } else {
9558                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9559                    inner_depth.increment()?;
9560                }
9561                let val_ref = self
9562                    .name
9563                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9564                fidl::decode!(
9565                    fidl::encoding::BoundedString<100>,
9566                    D,
9567                    val_ref,
9568                    decoder,
9569                    inner_offset,
9570                    inner_depth
9571                )?;
9572                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9573                {
9574                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9575                }
9576                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9577                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9578                }
9579            }
9580
9581            next_offset += envelope_size;
9582            _next_ordinal_to_read += 1;
9583            if next_offset >= end_offset {
9584                return Ok(());
9585            }
9586
9587            // Decode unknown envelopes for gaps in ordinals.
9588            while _next_ordinal_to_read < 2 {
9589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9590                _next_ordinal_to_read += 1;
9591                next_offset += envelope_size;
9592            }
9593
9594            let next_out_of_line = decoder.next_out_of_line();
9595            let handles_before = decoder.remaining_handles();
9596            if let Some((inlined, num_bytes, num_handles)) =
9597                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9598            {
9599                let member_inline_size =
9600                    <EnvironmentExtends as fidl::encoding::TypeMarker>::inline_size(
9601                        decoder.context,
9602                    );
9603                if inlined != (member_inline_size <= 4) {
9604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9605                }
9606                let inner_offset;
9607                let mut inner_depth = depth.clone();
9608                if inlined {
9609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9610                    inner_offset = next_offset;
9611                } else {
9612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9613                    inner_depth.increment()?;
9614                }
9615                let val_ref =
9616                    self.extends.get_or_insert_with(|| fidl::new_empty!(EnvironmentExtends, D));
9617                fidl::decode!(EnvironmentExtends, D, val_ref, decoder, inner_offset, inner_depth)?;
9618                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9619                {
9620                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9621                }
9622                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9623                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9624                }
9625            }
9626
9627            next_offset += envelope_size;
9628            _next_ordinal_to_read += 1;
9629            if next_offset >= end_offset {
9630                return Ok(());
9631            }
9632
9633            // Decode unknown envelopes for gaps in ordinals.
9634            while _next_ordinal_to_read < 3 {
9635                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9636                _next_ordinal_to_read += 1;
9637                next_offset += envelope_size;
9638            }
9639
9640            let next_out_of_line = decoder.next_out_of_line();
9641            let handles_before = decoder.remaining_handles();
9642            if let Some((inlined, num_bytes, num_handles)) =
9643                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9644            {
9645                let member_inline_size = <fidl::encoding::UnboundedVector<RunnerRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9646                if inlined != (member_inline_size <= 4) {
9647                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9648                }
9649                let inner_offset;
9650                let mut inner_depth = depth.clone();
9651                if inlined {
9652                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9653                    inner_offset = next_offset;
9654                } else {
9655                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9656                    inner_depth.increment()?;
9657                }
9658                let val_ref = self.runners.get_or_insert_with(|| {
9659                    fidl::new_empty!(fidl::encoding::UnboundedVector<RunnerRegistration>, D)
9660                });
9661                fidl::decode!(
9662                    fidl::encoding::UnboundedVector<RunnerRegistration>,
9663                    D,
9664                    val_ref,
9665                    decoder,
9666                    inner_offset,
9667                    inner_depth
9668                )?;
9669                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9670                {
9671                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9672                }
9673                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9674                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9675                }
9676            }
9677
9678            next_offset += envelope_size;
9679            _next_ordinal_to_read += 1;
9680            if next_offset >= end_offset {
9681                return Ok(());
9682            }
9683
9684            // Decode unknown envelopes for gaps in ordinals.
9685            while _next_ordinal_to_read < 4 {
9686                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9687                _next_ordinal_to_read += 1;
9688                next_offset += envelope_size;
9689            }
9690
9691            let next_out_of_line = decoder.next_out_of_line();
9692            let handles_before = decoder.remaining_handles();
9693            if let Some((inlined, num_bytes, num_handles)) =
9694                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9695            {
9696                let member_inline_size = <fidl::encoding::UnboundedVector<ResolverRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9697                if inlined != (member_inline_size <= 4) {
9698                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9699                }
9700                let inner_offset;
9701                let mut inner_depth = depth.clone();
9702                if inlined {
9703                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9704                    inner_offset = next_offset;
9705                } else {
9706                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9707                    inner_depth.increment()?;
9708                }
9709                let val_ref = self.resolvers.get_or_insert_with(|| {
9710                    fidl::new_empty!(fidl::encoding::UnboundedVector<ResolverRegistration>, D)
9711                });
9712                fidl::decode!(
9713                    fidl::encoding::UnboundedVector<ResolverRegistration>,
9714                    D,
9715                    val_ref,
9716                    decoder,
9717                    inner_offset,
9718                    inner_depth
9719                )?;
9720                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9721                {
9722                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9723                }
9724                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9725                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9726                }
9727            }
9728
9729            next_offset += envelope_size;
9730            _next_ordinal_to_read += 1;
9731            if next_offset >= end_offset {
9732                return Ok(());
9733            }
9734
9735            // Decode unknown envelopes for gaps in ordinals.
9736            while _next_ordinal_to_read < 5 {
9737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9738                _next_ordinal_to_read += 1;
9739                next_offset += envelope_size;
9740            }
9741
9742            let next_out_of_line = decoder.next_out_of_line();
9743            let handles_before = decoder.remaining_handles();
9744            if let Some((inlined, num_bytes, num_handles)) =
9745                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9746            {
9747                let member_inline_size = <fidl::encoding::UnboundedVector<DebugRegistration> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9748                if inlined != (member_inline_size <= 4) {
9749                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9750                }
9751                let inner_offset;
9752                let mut inner_depth = depth.clone();
9753                if inlined {
9754                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9755                    inner_offset = next_offset;
9756                } else {
9757                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9758                    inner_depth.increment()?;
9759                }
9760                let val_ref = self.debug_capabilities.get_or_insert_with(|| {
9761                    fidl::new_empty!(fidl::encoding::UnboundedVector<DebugRegistration>, D)
9762                });
9763                fidl::decode!(
9764                    fidl::encoding::UnboundedVector<DebugRegistration>,
9765                    D,
9766                    val_ref,
9767                    decoder,
9768                    inner_offset,
9769                    inner_depth
9770                )?;
9771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9772                {
9773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9774                }
9775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9777                }
9778            }
9779
9780            next_offset += envelope_size;
9781            _next_ordinal_to_read += 1;
9782            if next_offset >= end_offset {
9783                return Ok(());
9784            }
9785
9786            // Decode unknown envelopes for gaps in ordinals.
9787            while _next_ordinal_to_read < 6 {
9788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9789                _next_ordinal_to_read += 1;
9790                next_offset += envelope_size;
9791            }
9792
9793            let next_out_of_line = decoder.next_out_of_line();
9794            let handles_before = decoder.remaining_handles();
9795            if let Some((inlined, num_bytes, num_handles)) =
9796                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9797            {
9798                let member_inline_size =
9799                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9800                if inlined != (member_inline_size <= 4) {
9801                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9802                }
9803                let inner_offset;
9804                let mut inner_depth = depth.clone();
9805                if inlined {
9806                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9807                    inner_offset = next_offset;
9808                } else {
9809                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9810                    inner_depth.increment()?;
9811                }
9812                let val_ref = self.stop_timeout_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
9813                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9814                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9815                {
9816                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9817                }
9818                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9819                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9820                }
9821            }
9822
9823            next_offset += envelope_size;
9824
9825            // Decode the remaining unknown envelopes.
9826            while next_offset < end_offset {
9827                _next_ordinal_to_read += 1;
9828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9829                next_offset += envelope_size;
9830            }
9831
9832            Ok(())
9833        }
9834    }
9835
9836    impl EventStream {
9837        #[inline(always)]
9838        fn max_ordinal_present(&self) -> u64 {
9839            if let Some(_) = self.name {
9840                return 1;
9841            }
9842            0
9843        }
9844    }
9845
9846    impl fidl::encoding::ValueTypeMarker for EventStream {
9847        type Borrowed<'a> = &'a Self;
9848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9849            value
9850        }
9851    }
9852
9853    unsafe impl fidl::encoding::TypeMarker for EventStream {
9854        type Owned = Self;
9855
9856        #[inline(always)]
9857        fn inline_align(_context: fidl::encoding::Context) -> usize {
9858            8
9859        }
9860
9861        #[inline(always)]
9862        fn inline_size(_context: fidl::encoding::Context) -> usize {
9863            16
9864        }
9865    }
9866
9867    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventStream, D>
9868        for &EventStream
9869    {
9870        unsafe fn encode(
9871            self,
9872            encoder: &mut fidl::encoding::Encoder<'_, D>,
9873            offset: usize,
9874            mut depth: fidl::encoding::Depth,
9875        ) -> fidl::Result<()> {
9876            encoder.debug_check_bounds::<EventStream>(offset);
9877            // Vector header
9878            let max_ordinal: u64 = self.max_ordinal_present();
9879            encoder.write_num(max_ordinal, offset);
9880            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9881            // Calling encoder.out_of_line_offset(0) is not allowed.
9882            if max_ordinal == 0 {
9883                return Ok(());
9884            }
9885            depth.increment()?;
9886            let envelope_size = 8;
9887            let bytes_len = max_ordinal as usize * envelope_size;
9888            #[allow(unused_variables)]
9889            let offset = encoder.out_of_line_offset(bytes_len);
9890            let mut _prev_end_offset: usize = 0;
9891            if 1 > max_ordinal {
9892                return Ok(());
9893            }
9894
9895            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9896            // are envelope_size bytes.
9897            let cur_offset: usize = (1 - 1) * envelope_size;
9898
9899            // Zero reserved fields.
9900            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9901
9902            // Safety:
9903            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9904            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9905            //   envelope_size bytes, there is always sufficient room.
9906            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9907                self.name.as_ref().map(
9908                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9909                ),
9910                encoder,
9911                offset + cur_offset,
9912                depth,
9913            )?;
9914
9915            _prev_end_offset = cur_offset + envelope_size;
9916
9917            Ok(())
9918        }
9919    }
9920
9921    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventStream {
9922        #[inline(always)]
9923        fn new_empty() -> Self {
9924            Self::default()
9925        }
9926
9927        unsafe fn decode(
9928            &mut self,
9929            decoder: &mut fidl::encoding::Decoder<'_, D>,
9930            offset: usize,
9931            mut depth: fidl::encoding::Depth,
9932        ) -> fidl::Result<()> {
9933            decoder.debug_check_bounds::<Self>(offset);
9934            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9935                None => return Err(fidl::Error::NotNullable),
9936                Some(len) => len,
9937            };
9938            // Calling decoder.out_of_line_offset(0) is not allowed.
9939            if len == 0 {
9940                return Ok(());
9941            };
9942            depth.increment()?;
9943            let envelope_size = 8;
9944            let bytes_len = len * envelope_size;
9945            let offset = decoder.out_of_line_offset(bytes_len)?;
9946            // Decode the envelope for each type.
9947            let mut _next_ordinal_to_read = 0;
9948            let mut next_offset = offset;
9949            let end_offset = offset + bytes_len;
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 < 1 {
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 =
9968                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9969                        decoder.context,
9970                    );
9971                if inlined != (member_inline_size <= 4) {
9972                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9973                }
9974                let inner_offset;
9975                let mut inner_depth = depth.clone();
9976                if inlined {
9977                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9978                    inner_offset = next_offset;
9979                } else {
9980                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9981                    inner_depth.increment()?;
9982                }
9983                let val_ref = self
9984                    .name
9985                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
9986                fidl::decode!(
9987                    fidl::encoding::BoundedString<100>,
9988                    D,
9989                    val_ref,
9990                    decoder,
9991                    inner_offset,
9992                    inner_depth
9993                )?;
9994                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9995                {
9996                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9997                }
9998                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9999                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10000                }
10001            }
10002
10003            next_offset += envelope_size;
10004
10005            // Decode the remaining unknown envelopes.
10006            while next_offset < end_offset {
10007                _next_ordinal_to_read += 1;
10008                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10009                next_offset += envelope_size;
10010            }
10011
10012            Ok(())
10013        }
10014    }
10015
10016    impl EventSubscription {
10017        #[inline(always)]
10018        fn max_ordinal_present(&self) -> u64 {
10019            if let Some(_) = self.event_name {
10020                return 1;
10021            }
10022            0
10023        }
10024    }
10025
10026    impl fidl::encoding::ValueTypeMarker for EventSubscription {
10027        type Borrowed<'a> = &'a Self;
10028        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10029            value
10030        }
10031    }
10032
10033    unsafe impl fidl::encoding::TypeMarker for EventSubscription {
10034        type Owned = Self;
10035
10036        #[inline(always)]
10037        fn inline_align(_context: fidl::encoding::Context) -> usize {
10038            8
10039        }
10040
10041        #[inline(always)]
10042        fn inline_size(_context: fidl::encoding::Context) -> usize {
10043            16
10044        }
10045    }
10046
10047    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventSubscription, D>
10048        for &EventSubscription
10049    {
10050        unsafe fn encode(
10051            self,
10052            encoder: &mut fidl::encoding::Encoder<'_, D>,
10053            offset: usize,
10054            mut depth: fidl::encoding::Depth,
10055        ) -> fidl::Result<()> {
10056            encoder.debug_check_bounds::<EventSubscription>(offset);
10057            // Vector header
10058            let max_ordinal: u64 = self.max_ordinal_present();
10059            encoder.write_num(max_ordinal, offset);
10060            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10061            // Calling encoder.out_of_line_offset(0) is not allowed.
10062            if max_ordinal == 0 {
10063                return Ok(());
10064            }
10065            depth.increment()?;
10066            let envelope_size = 8;
10067            let bytes_len = max_ordinal as usize * envelope_size;
10068            #[allow(unused_variables)]
10069            let offset = encoder.out_of_line_offset(bytes_len);
10070            let mut _prev_end_offset: usize = 0;
10071            if 1 > max_ordinal {
10072                return Ok(());
10073            }
10074
10075            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10076            // are envelope_size bytes.
10077            let cur_offset: usize = (1 - 1) * envelope_size;
10078
10079            // Zero reserved fields.
10080            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10081
10082            // Safety:
10083            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10084            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10085            //   envelope_size bytes, there is always sufficient room.
10086            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10087                self.event_name.as_ref().map(
10088                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10089                ),
10090                encoder,
10091                offset + cur_offset,
10092                depth,
10093            )?;
10094
10095            _prev_end_offset = cur_offset + envelope_size;
10096
10097            Ok(())
10098        }
10099    }
10100
10101    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventSubscription {
10102        #[inline(always)]
10103        fn new_empty() -> Self {
10104            Self::default()
10105        }
10106
10107        unsafe fn decode(
10108            &mut self,
10109            decoder: &mut fidl::encoding::Decoder<'_, D>,
10110            offset: usize,
10111            mut depth: fidl::encoding::Depth,
10112        ) -> fidl::Result<()> {
10113            decoder.debug_check_bounds::<Self>(offset);
10114            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10115                None => return Err(fidl::Error::NotNullable),
10116                Some(len) => len,
10117            };
10118            // Calling decoder.out_of_line_offset(0) is not allowed.
10119            if len == 0 {
10120                return Ok(());
10121            };
10122            depth.increment()?;
10123            let envelope_size = 8;
10124            let bytes_len = len * envelope_size;
10125            let offset = decoder.out_of_line_offset(bytes_len)?;
10126            // Decode the envelope for each type.
10127            let mut _next_ordinal_to_read = 0;
10128            let mut next_offset = offset;
10129            let end_offset = offset + bytes_len;
10130            _next_ordinal_to_read += 1;
10131            if next_offset >= end_offset {
10132                return Ok(());
10133            }
10134
10135            // Decode unknown envelopes for gaps in ordinals.
10136            while _next_ordinal_to_read < 1 {
10137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10138                _next_ordinal_to_read += 1;
10139                next_offset += envelope_size;
10140            }
10141
10142            let next_out_of_line = decoder.next_out_of_line();
10143            let handles_before = decoder.remaining_handles();
10144            if let Some((inlined, num_bytes, num_handles)) =
10145                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10146            {
10147                let member_inline_size =
10148                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10149                        decoder.context,
10150                    );
10151                if inlined != (member_inline_size <= 4) {
10152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10153                }
10154                let inner_offset;
10155                let mut inner_depth = depth.clone();
10156                if inlined {
10157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10158                    inner_offset = next_offset;
10159                } else {
10160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10161                    inner_depth.increment()?;
10162                }
10163                let val_ref = self
10164                    .event_name
10165                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10166                fidl::decode!(
10167                    fidl::encoding::BoundedString<100>,
10168                    D,
10169                    val_ref,
10170                    decoder,
10171                    inner_offset,
10172                    inner_depth
10173                )?;
10174                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10175                {
10176                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10177                }
10178                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10179                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10180                }
10181            }
10182
10183            next_offset += envelope_size;
10184
10185            // Decode the remaining unknown envelopes.
10186            while next_offset < end_offset {
10187                _next_ordinal_to_read += 1;
10188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10189                next_offset += envelope_size;
10190            }
10191
10192            Ok(())
10193        }
10194    }
10195
10196    impl ExposeConfiguration {
10197        #[inline(always)]
10198        fn max_ordinal_present(&self) -> u64 {
10199            if let Some(_) = self.source_dictionary {
10200                return 6;
10201            }
10202            if let Some(_) = self.availability {
10203                return 5;
10204            }
10205            if let Some(_) = self.target_name {
10206                return 4;
10207            }
10208            if let Some(_) = self.target {
10209                return 3;
10210            }
10211            if let Some(_) = self.source_name {
10212                return 2;
10213            }
10214            if let Some(_) = self.source {
10215                return 1;
10216            }
10217            0
10218        }
10219    }
10220
10221    impl fidl::encoding::ValueTypeMarker for ExposeConfiguration {
10222        type Borrowed<'a> = &'a Self;
10223        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10224            value
10225        }
10226    }
10227
10228    unsafe impl fidl::encoding::TypeMarker for ExposeConfiguration {
10229        type Owned = Self;
10230
10231        #[inline(always)]
10232        fn inline_align(_context: fidl::encoding::Context) -> usize {
10233            8
10234        }
10235
10236        #[inline(always)]
10237        fn inline_size(_context: fidl::encoding::Context) -> usize {
10238            16
10239        }
10240    }
10241
10242    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeConfiguration, D>
10243        for &ExposeConfiguration
10244    {
10245        unsafe fn encode(
10246            self,
10247            encoder: &mut fidl::encoding::Encoder<'_, D>,
10248            offset: usize,
10249            mut depth: fidl::encoding::Depth,
10250        ) -> fidl::Result<()> {
10251            encoder.debug_check_bounds::<ExposeConfiguration>(offset);
10252            // Vector header
10253            let max_ordinal: u64 = self.max_ordinal_present();
10254            encoder.write_num(max_ordinal, offset);
10255            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10256            // Calling encoder.out_of_line_offset(0) is not allowed.
10257            if max_ordinal == 0 {
10258                return Ok(());
10259            }
10260            depth.increment()?;
10261            let envelope_size = 8;
10262            let bytes_len = max_ordinal as usize * envelope_size;
10263            #[allow(unused_variables)]
10264            let offset = encoder.out_of_line_offset(bytes_len);
10265            let mut _prev_end_offset: usize = 0;
10266            if 1 > max_ordinal {
10267                return Ok(());
10268            }
10269
10270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10271            // are envelope_size bytes.
10272            let cur_offset: usize = (1 - 1) * envelope_size;
10273
10274            // Zero reserved fields.
10275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10276
10277            // Safety:
10278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10280            //   envelope_size bytes, there is always sufficient room.
10281            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10282                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10283                encoder,
10284                offset + cur_offset,
10285                depth,
10286            )?;
10287
10288            _prev_end_offset = cur_offset + envelope_size;
10289            if 2 > max_ordinal {
10290                return Ok(());
10291            }
10292
10293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10294            // are envelope_size bytes.
10295            let cur_offset: usize = (2 - 1) * envelope_size;
10296
10297            // Zero reserved fields.
10298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10299
10300            // Safety:
10301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10303            //   envelope_size bytes, there is always sufficient room.
10304            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10305                self.source_name.as_ref().map(
10306                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10307                ),
10308                encoder,
10309                offset + cur_offset,
10310                depth,
10311            )?;
10312
10313            _prev_end_offset = cur_offset + envelope_size;
10314            if 3 > max_ordinal {
10315                return Ok(());
10316            }
10317
10318            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10319            // are envelope_size bytes.
10320            let cur_offset: usize = (3 - 1) * envelope_size;
10321
10322            // Zero reserved fields.
10323            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10324
10325            // Safety:
10326            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10327            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10328            //   envelope_size bytes, there is always sufficient room.
10329            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10330                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10331                encoder,
10332                offset + cur_offset,
10333                depth,
10334            )?;
10335
10336            _prev_end_offset = cur_offset + envelope_size;
10337            if 4 > max_ordinal {
10338                return Ok(());
10339            }
10340
10341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10342            // are envelope_size bytes.
10343            let cur_offset: usize = (4 - 1) * envelope_size;
10344
10345            // Zero reserved fields.
10346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10347
10348            // Safety:
10349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10351            //   envelope_size bytes, there is always sufficient room.
10352            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10353                self.target_name.as_ref().map(
10354                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10355                ),
10356                encoder,
10357                offset + cur_offset,
10358                depth,
10359            )?;
10360
10361            _prev_end_offset = cur_offset + envelope_size;
10362            if 5 > max_ordinal {
10363                return Ok(());
10364            }
10365
10366            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10367            // are envelope_size bytes.
10368            let cur_offset: usize = (5 - 1) * envelope_size;
10369
10370            // Zero reserved fields.
10371            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10372
10373            // Safety:
10374            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10375            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10376            //   envelope_size bytes, there is always sufficient room.
10377            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
10378                self.availability
10379                    .as_ref()
10380                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
10381                encoder,
10382                offset + cur_offset,
10383                depth,
10384            )?;
10385
10386            _prev_end_offset = cur_offset + envelope_size;
10387            if 6 > max_ordinal {
10388                return Ok(());
10389            }
10390
10391            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10392            // are envelope_size bytes.
10393            let cur_offset: usize = (6 - 1) * envelope_size;
10394
10395            // Zero reserved fields.
10396            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10397
10398            // Safety:
10399            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10400            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10401            //   envelope_size bytes, there is always sufficient room.
10402            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
10403            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
10404            encoder, offset + cur_offset, depth
10405        )?;
10406
10407            _prev_end_offset = cur_offset + envelope_size;
10408
10409            Ok(())
10410        }
10411    }
10412
10413    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeConfiguration {
10414        #[inline(always)]
10415        fn new_empty() -> Self {
10416            Self::default()
10417        }
10418
10419        unsafe fn decode(
10420            &mut self,
10421            decoder: &mut fidl::encoding::Decoder<'_, D>,
10422            offset: usize,
10423            mut depth: fidl::encoding::Depth,
10424        ) -> fidl::Result<()> {
10425            decoder.debug_check_bounds::<Self>(offset);
10426            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10427                None => return Err(fidl::Error::NotNullable),
10428                Some(len) => len,
10429            };
10430            // Calling decoder.out_of_line_offset(0) is not allowed.
10431            if len == 0 {
10432                return Ok(());
10433            };
10434            depth.increment()?;
10435            let envelope_size = 8;
10436            let bytes_len = len * envelope_size;
10437            let offset = decoder.out_of_line_offset(bytes_len)?;
10438            // Decode the envelope for each type.
10439            let mut _next_ordinal_to_read = 0;
10440            let mut next_offset = offset;
10441            let end_offset = offset + bytes_len;
10442            _next_ordinal_to_read += 1;
10443            if next_offset >= end_offset {
10444                return Ok(());
10445            }
10446
10447            // Decode unknown envelopes for gaps in ordinals.
10448            while _next_ordinal_to_read < 1 {
10449                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10450                _next_ordinal_to_read += 1;
10451                next_offset += envelope_size;
10452            }
10453
10454            let next_out_of_line = decoder.next_out_of_line();
10455            let handles_before = decoder.remaining_handles();
10456            if let Some((inlined, num_bytes, num_handles)) =
10457                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10458            {
10459                let member_inline_size =
10460                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10461                if inlined != (member_inline_size <= 4) {
10462                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10463                }
10464                let inner_offset;
10465                let mut inner_depth = depth.clone();
10466                if inlined {
10467                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10468                    inner_offset = next_offset;
10469                } else {
10470                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10471                    inner_depth.increment()?;
10472                }
10473                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10474                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10475                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10476                {
10477                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10478                }
10479                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10480                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10481                }
10482            }
10483
10484            next_offset += envelope_size;
10485            _next_ordinal_to_read += 1;
10486            if next_offset >= end_offset {
10487                return Ok(());
10488            }
10489
10490            // Decode unknown envelopes for gaps in ordinals.
10491            while _next_ordinal_to_read < 2 {
10492                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10493                _next_ordinal_to_read += 1;
10494                next_offset += envelope_size;
10495            }
10496
10497            let next_out_of_line = decoder.next_out_of_line();
10498            let handles_before = decoder.remaining_handles();
10499            if let Some((inlined, num_bytes, num_handles)) =
10500                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10501            {
10502                let member_inline_size =
10503                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10504                        decoder.context,
10505                    );
10506                if inlined != (member_inline_size <= 4) {
10507                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10508                }
10509                let inner_offset;
10510                let mut inner_depth = depth.clone();
10511                if inlined {
10512                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10513                    inner_offset = next_offset;
10514                } else {
10515                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10516                    inner_depth.increment()?;
10517                }
10518                let val_ref = self
10519                    .source_name
10520                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10521                fidl::decode!(
10522                    fidl::encoding::BoundedString<100>,
10523                    D,
10524                    val_ref,
10525                    decoder,
10526                    inner_offset,
10527                    inner_depth
10528                )?;
10529                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10530                {
10531                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10532                }
10533                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10534                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10535                }
10536            }
10537
10538            next_offset += envelope_size;
10539            _next_ordinal_to_read += 1;
10540            if next_offset >= end_offset {
10541                return Ok(());
10542            }
10543
10544            // Decode unknown envelopes for gaps in ordinals.
10545            while _next_ordinal_to_read < 3 {
10546                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10547                _next_ordinal_to_read += 1;
10548                next_offset += envelope_size;
10549            }
10550
10551            let next_out_of_line = decoder.next_out_of_line();
10552            let handles_before = decoder.remaining_handles();
10553            if let Some((inlined, num_bytes, num_handles)) =
10554                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10555            {
10556                let member_inline_size =
10557                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10558                if inlined != (member_inline_size <= 4) {
10559                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10560                }
10561                let inner_offset;
10562                let mut inner_depth = depth.clone();
10563                if inlined {
10564                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10565                    inner_offset = next_offset;
10566                } else {
10567                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10568                    inner_depth.increment()?;
10569                }
10570                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
10571                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
10572                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10573                {
10574                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10575                }
10576                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10577                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10578                }
10579            }
10580
10581            next_offset += envelope_size;
10582            _next_ordinal_to_read += 1;
10583            if next_offset >= end_offset {
10584                return Ok(());
10585            }
10586
10587            // Decode unknown envelopes for gaps in ordinals.
10588            while _next_ordinal_to_read < 4 {
10589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10590                _next_ordinal_to_read += 1;
10591                next_offset += envelope_size;
10592            }
10593
10594            let next_out_of_line = decoder.next_out_of_line();
10595            let handles_before = decoder.remaining_handles();
10596            if let Some((inlined, num_bytes, num_handles)) =
10597                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10598            {
10599                let member_inline_size =
10600                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10601                        decoder.context,
10602                    );
10603                if inlined != (member_inline_size <= 4) {
10604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10605                }
10606                let inner_offset;
10607                let mut inner_depth = depth.clone();
10608                if inlined {
10609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10610                    inner_offset = next_offset;
10611                } else {
10612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10613                    inner_depth.increment()?;
10614                }
10615                let val_ref = self
10616                    .target_name
10617                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10618                fidl::decode!(
10619                    fidl::encoding::BoundedString<100>,
10620                    D,
10621                    val_ref,
10622                    decoder,
10623                    inner_offset,
10624                    inner_depth
10625                )?;
10626                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10627                {
10628                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10629                }
10630                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10631                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10632                }
10633            }
10634
10635            next_offset += envelope_size;
10636            _next_ordinal_to_read += 1;
10637            if next_offset >= end_offset {
10638                return Ok(());
10639            }
10640
10641            // Decode unknown envelopes for gaps in ordinals.
10642            while _next_ordinal_to_read < 5 {
10643                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10644                _next_ordinal_to_read += 1;
10645                next_offset += envelope_size;
10646            }
10647
10648            let next_out_of_line = decoder.next_out_of_line();
10649            let handles_before = decoder.remaining_handles();
10650            if let Some((inlined, num_bytes, num_handles)) =
10651                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10652            {
10653                let member_inline_size =
10654                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10655                if inlined != (member_inline_size <= 4) {
10656                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10657                }
10658                let inner_offset;
10659                let mut inner_depth = depth.clone();
10660                if inlined {
10661                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10662                    inner_offset = next_offset;
10663                } else {
10664                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10665                    inner_depth.increment()?;
10666                }
10667                let val_ref =
10668                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
10669                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
10670                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10671                {
10672                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10673                }
10674                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10675                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10676                }
10677            }
10678
10679            next_offset += envelope_size;
10680            _next_ordinal_to_read += 1;
10681            if next_offset >= end_offset {
10682                return Ok(());
10683            }
10684
10685            // Decode unknown envelopes for gaps in ordinals.
10686            while _next_ordinal_to_read < 6 {
10687                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10688                _next_ordinal_to_read += 1;
10689                next_offset += envelope_size;
10690            }
10691
10692            let next_out_of_line = decoder.next_out_of_line();
10693            let handles_before = decoder.remaining_handles();
10694            if let Some((inlined, num_bytes, num_handles)) =
10695                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10696            {
10697                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10698                if inlined != (member_inline_size <= 4) {
10699                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10700                }
10701                let inner_offset;
10702                let mut inner_depth = depth.clone();
10703                if inlined {
10704                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10705                    inner_offset = next_offset;
10706                } else {
10707                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10708                    inner_depth.increment()?;
10709                }
10710                let val_ref = self.source_dictionary.get_or_insert_with(|| {
10711                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
10712                });
10713                fidl::decode!(
10714                    fidl::encoding::BoundedString<1024>,
10715                    D,
10716                    val_ref,
10717                    decoder,
10718                    inner_offset,
10719                    inner_depth
10720                )?;
10721                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10722                {
10723                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10724                }
10725                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10726                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10727                }
10728            }
10729
10730            next_offset += envelope_size;
10731
10732            // Decode the remaining unknown envelopes.
10733            while next_offset < end_offset {
10734                _next_ordinal_to_read += 1;
10735                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10736                next_offset += envelope_size;
10737            }
10738
10739            Ok(())
10740        }
10741    }
10742
10743    impl ExposeDictionary {
10744        #[inline(always)]
10745        fn max_ordinal_present(&self) -> u64 {
10746            if let Some(_) = self.source_dictionary {
10747                return 6;
10748            }
10749            if let Some(_) = self.availability {
10750                return 5;
10751            }
10752            if let Some(_) = self.target_name {
10753                return 4;
10754            }
10755            if let Some(_) = self.target {
10756                return 3;
10757            }
10758            if let Some(_) = self.source_name {
10759                return 2;
10760            }
10761            if let Some(_) = self.source {
10762                return 1;
10763            }
10764            0
10765        }
10766    }
10767
10768    impl fidl::encoding::ValueTypeMarker for ExposeDictionary {
10769        type Borrowed<'a> = &'a Self;
10770        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10771            value
10772        }
10773    }
10774
10775    unsafe impl fidl::encoding::TypeMarker for ExposeDictionary {
10776        type Owned = Self;
10777
10778        #[inline(always)]
10779        fn inline_align(_context: fidl::encoding::Context) -> usize {
10780            8
10781        }
10782
10783        #[inline(always)]
10784        fn inline_size(_context: fidl::encoding::Context) -> usize {
10785            16
10786        }
10787    }
10788
10789    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDictionary, D>
10790        for &ExposeDictionary
10791    {
10792        unsafe fn encode(
10793            self,
10794            encoder: &mut fidl::encoding::Encoder<'_, D>,
10795            offset: usize,
10796            mut depth: fidl::encoding::Depth,
10797        ) -> fidl::Result<()> {
10798            encoder.debug_check_bounds::<ExposeDictionary>(offset);
10799            // Vector header
10800            let max_ordinal: u64 = self.max_ordinal_present();
10801            encoder.write_num(max_ordinal, offset);
10802            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10803            // Calling encoder.out_of_line_offset(0) is not allowed.
10804            if max_ordinal == 0 {
10805                return Ok(());
10806            }
10807            depth.increment()?;
10808            let envelope_size = 8;
10809            let bytes_len = max_ordinal as usize * envelope_size;
10810            #[allow(unused_variables)]
10811            let offset = encoder.out_of_line_offset(bytes_len);
10812            let mut _prev_end_offset: usize = 0;
10813            if 1 > max_ordinal {
10814                return Ok(());
10815            }
10816
10817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10818            // are envelope_size bytes.
10819            let cur_offset: usize = (1 - 1) * envelope_size;
10820
10821            // Zero reserved fields.
10822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10823
10824            // Safety:
10825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10827            //   envelope_size bytes, there is always sufficient room.
10828            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10829                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10830                encoder,
10831                offset + cur_offset,
10832                depth,
10833            )?;
10834
10835            _prev_end_offset = cur_offset + envelope_size;
10836            if 2 > max_ordinal {
10837                return Ok(());
10838            }
10839
10840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10841            // are envelope_size bytes.
10842            let cur_offset: usize = (2 - 1) * envelope_size;
10843
10844            // Zero reserved fields.
10845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10846
10847            // Safety:
10848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10850            //   envelope_size bytes, there is always sufficient room.
10851            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10852                self.source_name.as_ref().map(
10853                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10854                ),
10855                encoder,
10856                offset + cur_offset,
10857                depth,
10858            )?;
10859
10860            _prev_end_offset = cur_offset + envelope_size;
10861            if 3 > max_ordinal {
10862                return Ok(());
10863            }
10864
10865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10866            // are envelope_size bytes.
10867            let cur_offset: usize = (3 - 1) * envelope_size;
10868
10869            // Zero reserved fields.
10870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10871
10872            // Safety:
10873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10875            //   envelope_size bytes, there is always sufficient room.
10876            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
10877                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
10878                encoder,
10879                offset + cur_offset,
10880                depth,
10881            )?;
10882
10883            _prev_end_offset = cur_offset + envelope_size;
10884            if 4 > max_ordinal {
10885                return Ok(());
10886            }
10887
10888            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10889            // are envelope_size bytes.
10890            let cur_offset: usize = (4 - 1) * envelope_size;
10891
10892            // Zero reserved fields.
10893            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10894
10895            // Safety:
10896            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10897            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10898            //   envelope_size bytes, there is always sufficient room.
10899            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10900                self.target_name.as_ref().map(
10901                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10902                ),
10903                encoder,
10904                offset + cur_offset,
10905                depth,
10906            )?;
10907
10908            _prev_end_offset = cur_offset + envelope_size;
10909            if 5 > max_ordinal {
10910                return Ok(());
10911            }
10912
10913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10914            // are envelope_size bytes.
10915            let cur_offset: usize = (5 - 1) * envelope_size;
10916
10917            // Zero reserved fields.
10918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10919
10920            // Safety:
10921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10923            //   envelope_size bytes, there is always sufficient room.
10924            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
10925                self.availability
10926                    .as_ref()
10927                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
10928                encoder,
10929                offset + cur_offset,
10930                depth,
10931            )?;
10932
10933            _prev_end_offset = cur_offset + envelope_size;
10934            if 6 > max_ordinal {
10935                return Ok(());
10936            }
10937
10938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10939            // are envelope_size bytes.
10940            let cur_offset: usize = (6 - 1) * envelope_size;
10941
10942            // Zero reserved fields.
10943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10944
10945            // Safety:
10946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10948            //   envelope_size bytes, there is always sufficient room.
10949            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
10950            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
10951            encoder, offset + cur_offset, depth
10952        )?;
10953
10954            _prev_end_offset = cur_offset + envelope_size;
10955
10956            Ok(())
10957        }
10958    }
10959
10960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDictionary {
10961        #[inline(always)]
10962        fn new_empty() -> Self {
10963            Self::default()
10964        }
10965
10966        unsafe fn decode(
10967            &mut self,
10968            decoder: &mut fidl::encoding::Decoder<'_, D>,
10969            offset: usize,
10970            mut depth: fidl::encoding::Depth,
10971        ) -> fidl::Result<()> {
10972            decoder.debug_check_bounds::<Self>(offset);
10973            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10974                None => return Err(fidl::Error::NotNullable),
10975                Some(len) => len,
10976            };
10977            // Calling decoder.out_of_line_offset(0) is not allowed.
10978            if len == 0 {
10979                return Ok(());
10980            };
10981            depth.increment()?;
10982            let envelope_size = 8;
10983            let bytes_len = len * envelope_size;
10984            let offset = decoder.out_of_line_offset(bytes_len)?;
10985            // Decode the envelope for each type.
10986            let mut _next_ordinal_to_read = 0;
10987            let mut next_offset = offset;
10988            let end_offset = offset + bytes_len;
10989            _next_ordinal_to_read += 1;
10990            if next_offset >= end_offset {
10991                return Ok(());
10992            }
10993
10994            // Decode unknown envelopes for gaps in ordinals.
10995            while _next_ordinal_to_read < 1 {
10996                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10997                _next_ordinal_to_read += 1;
10998                next_offset += envelope_size;
10999            }
11000
11001            let next_out_of_line = decoder.next_out_of_line();
11002            let handles_before = decoder.remaining_handles();
11003            if let Some((inlined, num_bytes, num_handles)) =
11004                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11005            {
11006                let member_inline_size =
11007                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11008                if inlined != (member_inline_size <= 4) {
11009                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11010                }
11011                let inner_offset;
11012                let mut inner_depth = depth.clone();
11013                if inlined {
11014                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11015                    inner_offset = next_offset;
11016                } else {
11017                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11018                    inner_depth.increment()?;
11019                }
11020                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11021                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11022                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11023                {
11024                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11025                }
11026                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11027                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11028                }
11029            }
11030
11031            next_offset += envelope_size;
11032            _next_ordinal_to_read += 1;
11033            if next_offset >= end_offset {
11034                return Ok(());
11035            }
11036
11037            // Decode unknown envelopes for gaps in ordinals.
11038            while _next_ordinal_to_read < 2 {
11039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11040                _next_ordinal_to_read += 1;
11041                next_offset += envelope_size;
11042            }
11043
11044            let next_out_of_line = decoder.next_out_of_line();
11045            let handles_before = decoder.remaining_handles();
11046            if let Some((inlined, num_bytes, num_handles)) =
11047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11048            {
11049                let member_inline_size =
11050                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11051                        decoder.context,
11052                    );
11053                if inlined != (member_inline_size <= 4) {
11054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11055                }
11056                let inner_offset;
11057                let mut inner_depth = depth.clone();
11058                if inlined {
11059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11060                    inner_offset = next_offset;
11061                } else {
11062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11063                    inner_depth.increment()?;
11064                }
11065                let val_ref = self
11066                    .source_name
11067                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11068                fidl::decode!(
11069                    fidl::encoding::BoundedString<100>,
11070                    D,
11071                    val_ref,
11072                    decoder,
11073                    inner_offset,
11074                    inner_depth
11075                )?;
11076                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11077                {
11078                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11079                }
11080                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11081                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11082                }
11083            }
11084
11085            next_offset += envelope_size;
11086            _next_ordinal_to_read += 1;
11087            if next_offset >= end_offset {
11088                return Ok(());
11089            }
11090
11091            // Decode unknown envelopes for gaps in ordinals.
11092            while _next_ordinal_to_read < 3 {
11093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11094                _next_ordinal_to_read += 1;
11095                next_offset += envelope_size;
11096            }
11097
11098            let next_out_of_line = decoder.next_out_of_line();
11099            let handles_before = decoder.remaining_handles();
11100            if let Some((inlined, num_bytes, num_handles)) =
11101                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11102            {
11103                let member_inline_size =
11104                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11105                if inlined != (member_inline_size <= 4) {
11106                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11107                }
11108                let inner_offset;
11109                let mut inner_depth = depth.clone();
11110                if inlined {
11111                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11112                    inner_offset = next_offset;
11113                } else {
11114                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11115                    inner_depth.increment()?;
11116                }
11117                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11118                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11119                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11120                {
11121                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11122                }
11123                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11124                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11125                }
11126            }
11127
11128            next_offset += envelope_size;
11129            _next_ordinal_to_read += 1;
11130            if next_offset >= end_offset {
11131                return Ok(());
11132            }
11133
11134            // Decode unknown envelopes for gaps in ordinals.
11135            while _next_ordinal_to_read < 4 {
11136                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11137                _next_ordinal_to_read += 1;
11138                next_offset += envelope_size;
11139            }
11140
11141            let next_out_of_line = decoder.next_out_of_line();
11142            let handles_before = decoder.remaining_handles();
11143            if let Some((inlined, num_bytes, num_handles)) =
11144                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11145            {
11146                let member_inline_size =
11147                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11148                        decoder.context,
11149                    );
11150                if inlined != (member_inline_size <= 4) {
11151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11152                }
11153                let inner_offset;
11154                let mut inner_depth = depth.clone();
11155                if inlined {
11156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11157                    inner_offset = next_offset;
11158                } else {
11159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11160                    inner_depth.increment()?;
11161                }
11162                let val_ref = self
11163                    .target_name
11164                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11165                fidl::decode!(
11166                    fidl::encoding::BoundedString<100>,
11167                    D,
11168                    val_ref,
11169                    decoder,
11170                    inner_offset,
11171                    inner_depth
11172                )?;
11173                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11174                {
11175                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11176                }
11177                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11178                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11179                }
11180            }
11181
11182            next_offset += envelope_size;
11183            _next_ordinal_to_read += 1;
11184            if next_offset >= end_offset {
11185                return Ok(());
11186            }
11187
11188            // Decode unknown envelopes for gaps in ordinals.
11189            while _next_ordinal_to_read < 5 {
11190                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11191                _next_ordinal_to_read += 1;
11192                next_offset += envelope_size;
11193            }
11194
11195            let next_out_of_line = decoder.next_out_of_line();
11196            let handles_before = decoder.remaining_handles();
11197            if let Some((inlined, num_bytes, num_handles)) =
11198                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11199            {
11200                let member_inline_size =
11201                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11202                if inlined != (member_inline_size <= 4) {
11203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11204                }
11205                let inner_offset;
11206                let mut inner_depth = depth.clone();
11207                if inlined {
11208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11209                    inner_offset = next_offset;
11210                } else {
11211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11212                    inner_depth.increment()?;
11213                }
11214                let val_ref =
11215                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
11216                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
11217                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11218                {
11219                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11220                }
11221                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11222                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11223                }
11224            }
11225
11226            next_offset += envelope_size;
11227            _next_ordinal_to_read += 1;
11228            if next_offset >= end_offset {
11229                return Ok(());
11230            }
11231
11232            // Decode unknown envelopes for gaps in ordinals.
11233            while _next_ordinal_to_read < 6 {
11234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11235                _next_ordinal_to_read += 1;
11236                next_offset += envelope_size;
11237            }
11238
11239            let next_out_of_line = decoder.next_out_of_line();
11240            let handles_before = decoder.remaining_handles();
11241            if let Some((inlined, num_bytes, num_handles)) =
11242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11243            {
11244                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11245                if inlined != (member_inline_size <= 4) {
11246                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11247                }
11248                let inner_offset;
11249                let mut inner_depth = depth.clone();
11250                if inlined {
11251                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11252                    inner_offset = next_offset;
11253                } else {
11254                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11255                    inner_depth.increment()?;
11256                }
11257                let val_ref = self.source_dictionary.get_or_insert_with(|| {
11258                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
11259                });
11260                fidl::decode!(
11261                    fidl::encoding::BoundedString<1024>,
11262                    D,
11263                    val_ref,
11264                    decoder,
11265                    inner_offset,
11266                    inner_depth
11267                )?;
11268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11269                {
11270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11271                }
11272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11274                }
11275            }
11276
11277            next_offset += envelope_size;
11278
11279            // Decode the remaining unknown envelopes.
11280            while next_offset < end_offset {
11281                _next_ordinal_to_read += 1;
11282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11283                next_offset += envelope_size;
11284            }
11285
11286            Ok(())
11287        }
11288    }
11289
11290    impl ExposeDirectory {
11291        #[inline(always)]
11292        fn max_ordinal_present(&self) -> u64 {
11293            if let Some(_) = self.source_dictionary {
11294                return 8;
11295            }
11296            if let Some(_) = self.availability {
11297                return 7;
11298            }
11299            if let Some(_) = self.subdir {
11300                return 6;
11301            }
11302            if let Some(_) = self.rights {
11303                return 5;
11304            }
11305            if let Some(_) = self.target_name {
11306                return 4;
11307            }
11308            if let Some(_) = self.target {
11309                return 3;
11310            }
11311            if let Some(_) = self.source_name {
11312                return 2;
11313            }
11314            if let Some(_) = self.source {
11315                return 1;
11316            }
11317            0
11318        }
11319    }
11320
11321    impl fidl::encoding::ValueTypeMarker for ExposeDirectory {
11322        type Borrowed<'a> = &'a Self;
11323        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11324            value
11325        }
11326    }
11327
11328    unsafe impl fidl::encoding::TypeMarker for ExposeDirectory {
11329        type Owned = Self;
11330
11331        #[inline(always)]
11332        fn inline_align(_context: fidl::encoding::Context) -> usize {
11333            8
11334        }
11335
11336        #[inline(always)]
11337        fn inline_size(_context: fidl::encoding::Context) -> usize {
11338            16
11339        }
11340    }
11341
11342    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeDirectory, D>
11343        for &ExposeDirectory
11344    {
11345        unsafe fn encode(
11346            self,
11347            encoder: &mut fidl::encoding::Encoder<'_, D>,
11348            offset: usize,
11349            mut depth: fidl::encoding::Depth,
11350        ) -> fidl::Result<()> {
11351            encoder.debug_check_bounds::<ExposeDirectory>(offset);
11352            // Vector header
11353            let max_ordinal: u64 = self.max_ordinal_present();
11354            encoder.write_num(max_ordinal, offset);
11355            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11356            // Calling encoder.out_of_line_offset(0) is not allowed.
11357            if max_ordinal == 0 {
11358                return Ok(());
11359            }
11360            depth.increment()?;
11361            let envelope_size = 8;
11362            let bytes_len = max_ordinal as usize * envelope_size;
11363            #[allow(unused_variables)]
11364            let offset = encoder.out_of_line_offset(bytes_len);
11365            let mut _prev_end_offset: usize = 0;
11366            if 1 > max_ordinal {
11367                return Ok(());
11368            }
11369
11370            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11371            // are envelope_size bytes.
11372            let cur_offset: usize = (1 - 1) * envelope_size;
11373
11374            // Zero reserved fields.
11375            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11376
11377            // Safety:
11378            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11379            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11380            //   envelope_size bytes, there is always sufficient room.
11381            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11382                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11383                encoder,
11384                offset + cur_offset,
11385                depth,
11386            )?;
11387
11388            _prev_end_offset = cur_offset + envelope_size;
11389            if 2 > max_ordinal {
11390                return Ok(());
11391            }
11392
11393            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11394            // are envelope_size bytes.
11395            let cur_offset: usize = (2 - 1) * envelope_size;
11396
11397            // Zero reserved fields.
11398            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11399
11400            // Safety:
11401            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11402            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11403            //   envelope_size bytes, there is always sufficient room.
11404            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11405                self.source_name.as_ref().map(
11406                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11407                ),
11408                encoder,
11409                offset + cur_offset,
11410                depth,
11411            )?;
11412
11413            _prev_end_offset = cur_offset + envelope_size;
11414            if 3 > max_ordinal {
11415                return Ok(());
11416            }
11417
11418            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11419            // are envelope_size bytes.
11420            let cur_offset: usize = (3 - 1) * envelope_size;
11421
11422            // Zero reserved fields.
11423            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11424
11425            // Safety:
11426            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11427            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11428            //   envelope_size bytes, there is always sufficient room.
11429            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
11430                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
11431                encoder,
11432                offset + cur_offset,
11433                depth,
11434            )?;
11435
11436            _prev_end_offset = cur_offset + envelope_size;
11437            if 4 > max_ordinal {
11438                return Ok(());
11439            }
11440
11441            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11442            // are envelope_size bytes.
11443            let cur_offset: usize = (4 - 1) * envelope_size;
11444
11445            // Zero reserved fields.
11446            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11447
11448            // Safety:
11449            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11450            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11451            //   envelope_size bytes, there is always sufficient room.
11452            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
11453                self.target_name.as_ref().map(
11454                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
11455                ),
11456                encoder,
11457                offset + cur_offset,
11458                depth,
11459            )?;
11460
11461            _prev_end_offset = cur_offset + envelope_size;
11462            if 5 > max_ordinal {
11463                return Ok(());
11464            }
11465
11466            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11467            // are envelope_size bytes.
11468            let cur_offset: usize = (5 - 1) * envelope_size;
11469
11470            // Zero reserved fields.
11471            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11472
11473            // Safety:
11474            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11475            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11476            //   envelope_size bytes, there is always sufficient room.
11477            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
11478            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
11479            encoder, offset + cur_offset, depth
11480        )?;
11481
11482            _prev_end_offset = cur_offset + envelope_size;
11483            if 6 > max_ordinal {
11484                return Ok(());
11485            }
11486
11487            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11488            // are envelope_size bytes.
11489            let cur_offset: usize = (6 - 1) * envelope_size;
11490
11491            // Zero reserved fields.
11492            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11493
11494            // Safety:
11495            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11496            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11497            //   envelope_size bytes, there is always sufficient room.
11498            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11499            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11500            encoder, offset + cur_offset, depth
11501        )?;
11502
11503            _prev_end_offset = cur_offset + envelope_size;
11504            if 7 > max_ordinal {
11505                return Ok(());
11506            }
11507
11508            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11509            // are envelope_size bytes.
11510            let cur_offset: usize = (7 - 1) * envelope_size;
11511
11512            // Zero reserved fields.
11513            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11514
11515            // Safety:
11516            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11517            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11518            //   envelope_size bytes, there is always sufficient room.
11519            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
11520                self.availability
11521                    .as_ref()
11522                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
11523                encoder,
11524                offset + cur_offset,
11525                depth,
11526            )?;
11527
11528            _prev_end_offset = cur_offset + envelope_size;
11529            if 8 > max_ordinal {
11530                return Ok(());
11531            }
11532
11533            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11534            // are envelope_size bytes.
11535            let cur_offset: usize = (8 - 1) * envelope_size;
11536
11537            // Zero reserved fields.
11538            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11539
11540            // Safety:
11541            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11542            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11543            //   envelope_size bytes, there is always sufficient room.
11544            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
11545            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
11546            encoder, offset + cur_offset, depth
11547        )?;
11548
11549            _prev_end_offset = cur_offset + envelope_size;
11550
11551            Ok(())
11552        }
11553    }
11554
11555    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeDirectory {
11556        #[inline(always)]
11557        fn new_empty() -> Self {
11558            Self::default()
11559        }
11560
11561        unsafe fn decode(
11562            &mut self,
11563            decoder: &mut fidl::encoding::Decoder<'_, D>,
11564            offset: usize,
11565            mut depth: fidl::encoding::Depth,
11566        ) -> fidl::Result<()> {
11567            decoder.debug_check_bounds::<Self>(offset);
11568            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11569                None => return Err(fidl::Error::NotNullable),
11570                Some(len) => len,
11571            };
11572            // Calling decoder.out_of_line_offset(0) is not allowed.
11573            if len == 0 {
11574                return Ok(());
11575            };
11576            depth.increment()?;
11577            let envelope_size = 8;
11578            let bytes_len = len * envelope_size;
11579            let offset = decoder.out_of_line_offset(bytes_len)?;
11580            // Decode the envelope for each type.
11581            let mut _next_ordinal_to_read = 0;
11582            let mut next_offset = offset;
11583            let end_offset = offset + bytes_len;
11584            _next_ordinal_to_read += 1;
11585            if next_offset >= end_offset {
11586                return Ok(());
11587            }
11588
11589            // Decode unknown envelopes for gaps in ordinals.
11590            while _next_ordinal_to_read < 1 {
11591                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11592                _next_ordinal_to_read += 1;
11593                next_offset += envelope_size;
11594            }
11595
11596            let next_out_of_line = decoder.next_out_of_line();
11597            let handles_before = decoder.remaining_handles();
11598            if let Some((inlined, num_bytes, num_handles)) =
11599                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11600            {
11601                let member_inline_size =
11602                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11603                if inlined != (member_inline_size <= 4) {
11604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11605                }
11606                let inner_offset;
11607                let mut inner_depth = depth.clone();
11608                if inlined {
11609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11610                    inner_offset = next_offset;
11611                } else {
11612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11613                    inner_depth.increment()?;
11614                }
11615                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11616                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11617                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11618                {
11619                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11620                }
11621                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11622                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11623                }
11624            }
11625
11626            next_offset += envelope_size;
11627            _next_ordinal_to_read += 1;
11628            if next_offset >= end_offset {
11629                return Ok(());
11630            }
11631
11632            // Decode unknown envelopes for gaps in ordinals.
11633            while _next_ordinal_to_read < 2 {
11634                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11635                _next_ordinal_to_read += 1;
11636                next_offset += envelope_size;
11637            }
11638
11639            let next_out_of_line = decoder.next_out_of_line();
11640            let handles_before = decoder.remaining_handles();
11641            if let Some((inlined, num_bytes, num_handles)) =
11642                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11643            {
11644                let member_inline_size =
11645                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11646                        decoder.context,
11647                    );
11648                if inlined != (member_inline_size <= 4) {
11649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11650                }
11651                let inner_offset;
11652                let mut inner_depth = depth.clone();
11653                if inlined {
11654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11655                    inner_offset = next_offset;
11656                } else {
11657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11658                    inner_depth.increment()?;
11659                }
11660                let val_ref = self
11661                    .source_name
11662                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11663                fidl::decode!(
11664                    fidl::encoding::BoundedString<100>,
11665                    D,
11666                    val_ref,
11667                    decoder,
11668                    inner_offset,
11669                    inner_depth
11670                )?;
11671                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11672                {
11673                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11674                }
11675                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11676                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11677                }
11678            }
11679
11680            next_offset += envelope_size;
11681            _next_ordinal_to_read += 1;
11682            if next_offset >= end_offset {
11683                return Ok(());
11684            }
11685
11686            // Decode unknown envelopes for gaps in ordinals.
11687            while _next_ordinal_to_read < 3 {
11688                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11689                _next_ordinal_to_read += 1;
11690                next_offset += envelope_size;
11691            }
11692
11693            let next_out_of_line = decoder.next_out_of_line();
11694            let handles_before = decoder.remaining_handles();
11695            if let Some((inlined, num_bytes, num_handles)) =
11696                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11697            {
11698                let member_inline_size =
11699                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11700                if inlined != (member_inline_size <= 4) {
11701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11702                }
11703                let inner_offset;
11704                let mut inner_depth = depth.clone();
11705                if inlined {
11706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11707                    inner_offset = next_offset;
11708                } else {
11709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11710                    inner_depth.increment()?;
11711                }
11712                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
11713                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
11714                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11715                {
11716                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11717                }
11718                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11719                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11720                }
11721            }
11722
11723            next_offset += envelope_size;
11724            _next_ordinal_to_read += 1;
11725            if next_offset >= end_offset {
11726                return Ok(());
11727            }
11728
11729            // Decode unknown envelopes for gaps in ordinals.
11730            while _next_ordinal_to_read < 4 {
11731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11732                _next_ordinal_to_read += 1;
11733                next_offset += envelope_size;
11734            }
11735
11736            let next_out_of_line = decoder.next_out_of_line();
11737            let handles_before = decoder.remaining_handles();
11738            if let Some((inlined, num_bytes, num_handles)) =
11739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11740            {
11741                let member_inline_size =
11742                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11743                        decoder.context,
11744                    );
11745                if inlined != (member_inline_size <= 4) {
11746                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11747                }
11748                let inner_offset;
11749                let mut inner_depth = depth.clone();
11750                if inlined {
11751                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11752                    inner_offset = next_offset;
11753                } else {
11754                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11755                    inner_depth.increment()?;
11756                }
11757                let val_ref = self
11758                    .target_name
11759                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
11760                fidl::decode!(
11761                    fidl::encoding::BoundedString<100>,
11762                    D,
11763                    val_ref,
11764                    decoder,
11765                    inner_offset,
11766                    inner_depth
11767                )?;
11768                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11769                {
11770                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11771                }
11772                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11773                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11774                }
11775            }
11776
11777            next_offset += envelope_size;
11778            _next_ordinal_to_read += 1;
11779            if next_offset >= end_offset {
11780                return Ok(());
11781            }
11782
11783            // Decode unknown envelopes for gaps in ordinals.
11784            while _next_ordinal_to_read < 5 {
11785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11786                _next_ordinal_to_read += 1;
11787                next_offset += envelope_size;
11788            }
11789
11790            let next_out_of_line = decoder.next_out_of_line();
11791            let handles_before = decoder.remaining_handles();
11792            if let Some((inlined, num_bytes, num_handles)) =
11793                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11794            {
11795                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11796                if inlined != (member_inline_size <= 4) {
11797                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11798                }
11799                let inner_offset;
11800                let mut inner_depth = depth.clone();
11801                if inlined {
11802                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11803                    inner_offset = next_offset;
11804                } else {
11805                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11806                    inner_depth.increment()?;
11807                }
11808                let val_ref = self.rights.get_or_insert_with(|| {
11809                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
11810                });
11811                fidl::decode!(
11812                    fidl_fuchsia_io__common::Operations,
11813                    D,
11814                    val_ref,
11815                    decoder,
11816                    inner_offset,
11817                    inner_depth
11818                )?;
11819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11820                {
11821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11822                }
11823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11825                }
11826            }
11827
11828            next_offset += envelope_size;
11829            _next_ordinal_to_read += 1;
11830            if next_offset >= end_offset {
11831                return Ok(());
11832            }
11833
11834            // Decode unknown envelopes for gaps in ordinals.
11835            while _next_ordinal_to_read < 6 {
11836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11837                _next_ordinal_to_read += 1;
11838                next_offset += envelope_size;
11839            }
11840
11841            let next_out_of_line = decoder.next_out_of_line();
11842            let handles_before = decoder.remaining_handles();
11843            if let Some((inlined, num_bytes, num_handles)) =
11844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11845            {
11846                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11847                if inlined != (member_inline_size <= 4) {
11848                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11849                }
11850                let inner_offset;
11851                let mut inner_depth = depth.clone();
11852                if inlined {
11853                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11854                    inner_offset = next_offset;
11855                } else {
11856                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11857                    inner_depth.increment()?;
11858                }
11859                let val_ref = self.subdir.get_or_insert_with(|| {
11860                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
11861                });
11862                fidl::decode!(
11863                    fidl::encoding::BoundedString<1024>,
11864                    D,
11865                    val_ref,
11866                    decoder,
11867                    inner_offset,
11868                    inner_depth
11869                )?;
11870                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11871                {
11872                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11873                }
11874                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11875                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11876                }
11877            }
11878
11879            next_offset += envelope_size;
11880            _next_ordinal_to_read += 1;
11881            if next_offset >= end_offset {
11882                return Ok(());
11883            }
11884
11885            // Decode unknown envelopes for gaps in ordinals.
11886            while _next_ordinal_to_read < 7 {
11887                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11888                _next_ordinal_to_read += 1;
11889                next_offset += envelope_size;
11890            }
11891
11892            let next_out_of_line = decoder.next_out_of_line();
11893            let handles_before = decoder.remaining_handles();
11894            if let Some((inlined, num_bytes, num_handles)) =
11895                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11896            {
11897                let member_inline_size =
11898                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11899                if inlined != (member_inline_size <= 4) {
11900                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11901                }
11902                let inner_offset;
11903                let mut inner_depth = depth.clone();
11904                if inlined {
11905                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11906                    inner_offset = next_offset;
11907                } else {
11908                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11909                    inner_depth.increment()?;
11910                }
11911                let val_ref =
11912                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
11913                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
11914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11915                {
11916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11917                }
11918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11920                }
11921            }
11922
11923            next_offset += envelope_size;
11924            _next_ordinal_to_read += 1;
11925            if next_offset >= end_offset {
11926                return Ok(());
11927            }
11928
11929            // Decode unknown envelopes for gaps in ordinals.
11930            while _next_ordinal_to_read < 8 {
11931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11932                _next_ordinal_to_read += 1;
11933                next_offset += envelope_size;
11934            }
11935
11936            let next_out_of_line = decoder.next_out_of_line();
11937            let handles_before = decoder.remaining_handles();
11938            if let Some((inlined, num_bytes, num_handles)) =
11939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11940            {
11941                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11942                if inlined != (member_inline_size <= 4) {
11943                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11944                }
11945                let inner_offset;
11946                let mut inner_depth = depth.clone();
11947                if inlined {
11948                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11949                    inner_offset = next_offset;
11950                } else {
11951                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11952                    inner_depth.increment()?;
11953                }
11954                let val_ref = self.source_dictionary.get_or_insert_with(|| {
11955                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
11956                });
11957                fidl::decode!(
11958                    fidl::encoding::BoundedString<1024>,
11959                    D,
11960                    val_ref,
11961                    decoder,
11962                    inner_offset,
11963                    inner_depth
11964                )?;
11965                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11966                {
11967                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11968                }
11969                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11970                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11971                }
11972            }
11973
11974            next_offset += envelope_size;
11975
11976            // Decode the remaining unknown envelopes.
11977            while next_offset < end_offset {
11978                _next_ordinal_to_read += 1;
11979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11980                next_offset += envelope_size;
11981            }
11982
11983            Ok(())
11984        }
11985    }
11986
11987    impl ExposeProtocol {
11988        #[inline(always)]
11989        fn max_ordinal_present(&self) -> u64 {
11990            if let Some(_) = self.source_dictionary {
11991                return 6;
11992            }
11993            if let Some(_) = self.availability {
11994                return 5;
11995            }
11996            if let Some(_) = self.target_name {
11997                return 4;
11998            }
11999            if let Some(_) = self.target {
12000                return 3;
12001            }
12002            if let Some(_) = self.source_name {
12003                return 2;
12004            }
12005            if let Some(_) = self.source {
12006                return 1;
12007            }
12008            0
12009        }
12010    }
12011
12012    impl fidl::encoding::ValueTypeMarker for ExposeProtocol {
12013        type Borrowed<'a> = &'a Self;
12014        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12015            value
12016        }
12017    }
12018
12019    unsafe impl fidl::encoding::TypeMarker for ExposeProtocol {
12020        type Owned = Self;
12021
12022        #[inline(always)]
12023        fn inline_align(_context: fidl::encoding::Context) -> usize {
12024            8
12025        }
12026
12027        #[inline(always)]
12028        fn inline_size(_context: fidl::encoding::Context) -> usize {
12029            16
12030        }
12031    }
12032
12033    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeProtocol, D>
12034        for &ExposeProtocol
12035    {
12036        unsafe fn encode(
12037            self,
12038            encoder: &mut fidl::encoding::Encoder<'_, D>,
12039            offset: usize,
12040            mut depth: fidl::encoding::Depth,
12041        ) -> fidl::Result<()> {
12042            encoder.debug_check_bounds::<ExposeProtocol>(offset);
12043            // Vector header
12044            let max_ordinal: u64 = self.max_ordinal_present();
12045            encoder.write_num(max_ordinal, offset);
12046            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12047            // Calling encoder.out_of_line_offset(0) is not allowed.
12048            if max_ordinal == 0 {
12049                return Ok(());
12050            }
12051            depth.increment()?;
12052            let envelope_size = 8;
12053            let bytes_len = max_ordinal as usize * envelope_size;
12054            #[allow(unused_variables)]
12055            let offset = encoder.out_of_line_offset(bytes_len);
12056            let mut _prev_end_offset: usize = 0;
12057            if 1 > max_ordinal {
12058                return Ok(());
12059            }
12060
12061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12062            // are envelope_size bytes.
12063            let cur_offset: usize = (1 - 1) * envelope_size;
12064
12065            // Zero reserved fields.
12066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12067
12068            // Safety:
12069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12071            //   envelope_size bytes, there is always sufficient room.
12072            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12073                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12074                encoder,
12075                offset + cur_offset,
12076                depth,
12077            )?;
12078
12079            _prev_end_offset = cur_offset + envelope_size;
12080            if 2 > max_ordinal {
12081                return Ok(());
12082            }
12083
12084            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12085            // are envelope_size bytes.
12086            let cur_offset: usize = (2 - 1) * envelope_size;
12087
12088            // Zero reserved fields.
12089            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12090
12091            // Safety:
12092            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12093            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12094            //   envelope_size bytes, there is always sufficient room.
12095            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12096                self.source_name.as_ref().map(
12097                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12098                ),
12099                encoder,
12100                offset + cur_offset,
12101                depth,
12102            )?;
12103
12104            _prev_end_offset = cur_offset + envelope_size;
12105            if 3 > max_ordinal {
12106                return Ok(());
12107            }
12108
12109            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12110            // are envelope_size bytes.
12111            let cur_offset: usize = (3 - 1) * envelope_size;
12112
12113            // Zero reserved fields.
12114            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12115
12116            // Safety:
12117            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12118            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12119            //   envelope_size bytes, there is always sufficient room.
12120            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12121                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12122                encoder,
12123                offset + cur_offset,
12124                depth,
12125            )?;
12126
12127            _prev_end_offset = cur_offset + envelope_size;
12128            if 4 > max_ordinal {
12129                return Ok(());
12130            }
12131
12132            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12133            // are envelope_size bytes.
12134            let cur_offset: usize = (4 - 1) * envelope_size;
12135
12136            // Zero reserved fields.
12137            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12138
12139            // Safety:
12140            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12141            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12142            //   envelope_size bytes, there is always sufficient room.
12143            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12144                self.target_name.as_ref().map(
12145                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12146                ),
12147                encoder,
12148                offset + cur_offset,
12149                depth,
12150            )?;
12151
12152            _prev_end_offset = cur_offset + envelope_size;
12153            if 5 > max_ordinal {
12154                return Ok(());
12155            }
12156
12157            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12158            // are envelope_size bytes.
12159            let cur_offset: usize = (5 - 1) * envelope_size;
12160
12161            // Zero reserved fields.
12162            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12163
12164            // Safety:
12165            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12166            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12167            //   envelope_size bytes, there is always sufficient room.
12168            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
12169                self.availability
12170                    .as_ref()
12171                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
12172                encoder,
12173                offset + cur_offset,
12174                depth,
12175            )?;
12176
12177            _prev_end_offset = cur_offset + envelope_size;
12178            if 6 > max_ordinal {
12179                return Ok(());
12180            }
12181
12182            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12183            // are envelope_size bytes.
12184            let cur_offset: usize = (6 - 1) * envelope_size;
12185
12186            // Zero reserved fields.
12187            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12188
12189            // Safety:
12190            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12191            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12192            //   envelope_size bytes, there is always sufficient room.
12193            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12194            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12195            encoder, offset + cur_offset, depth
12196        )?;
12197
12198            _prev_end_offset = cur_offset + envelope_size;
12199
12200            Ok(())
12201        }
12202    }
12203
12204    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeProtocol {
12205        #[inline(always)]
12206        fn new_empty() -> Self {
12207            Self::default()
12208        }
12209
12210        unsafe fn decode(
12211            &mut self,
12212            decoder: &mut fidl::encoding::Decoder<'_, D>,
12213            offset: usize,
12214            mut depth: fidl::encoding::Depth,
12215        ) -> fidl::Result<()> {
12216            decoder.debug_check_bounds::<Self>(offset);
12217            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12218                None => return Err(fidl::Error::NotNullable),
12219                Some(len) => len,
12220            };
12221            // Calling decoder.out_of_line_offset(0) is not allowed.
12222            if len == 0 {
12223                return Ok(());
12224            };
12225            depth.increment()?;
12226            let envelope_size = 8;
12227            let bytes_len = len * envelope_size;
12228            let offset = decoder.out_of_line_offset(bytes_len)?;
12229            // Decode the envelope for each type.
12230            let mut _next_ordinal_to_read = 0;
12231            let mut next_offset = offset;
12232            let end_offset = offset + bytes_len;
12233            _next_ordinal_to_read += 1;
12234            if next_offset >= end_offset {
12235                return Ok(());
12236            }
12237
12238            // Decode unknown envelopes for gaps in ordinals.
12239            while _next_ordinal_to_read < 1 {
12240                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12241                _next_ordinal_to_read += 1;
12242                next_offset += envelope_size;
12243            }
12244
12245            let next_out_of_line = decoder.next_out_of_line();
12246            let handles_before = decoder.remaining_handles();
12247            if let Some((inlined, num_bytes, num_handles)) =
12248                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12249            {
12250                let member_inline_size =
12251                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12252                if inlined != (member_inline_size <= 4) {
12253                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12254                }
12255                let inner_offset;
12256                let mut inner_depth = depth.clone();
12257                if inlined {
12258                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12259                    inner_offset = next_offset;
12260                } else {
12261                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12262                    inner_depth.increment()?;
12263                }
12264                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12265                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12266                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12267                {
12268                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12269                }
12270                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12271                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12272                }
12273            }
12274
12275            next_offset += envelope_size;
12276            _next_ordinal_to_read += 1;
12277            if next_offset >= end_offset {
12278                return Ok(());
12279            }
12280
12281            // Decode unknown envelopes for gaps in ordinals.
12282            while _next_ordinal_to_read < 2 {
12283                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12284                _next_ordinal_to_read += 1;
12285                next_offset += envelope_size;
12286            }
12287
12288            let next_out_of_line = decoder.next_out_of_line();
12289            let handles_before = decoder.remaining_handles();
12290            if let Some((inlined, num_bytes, num_handles)) =
12291                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12292            {
12293                let member_inline_size =
12294                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12295                        decoder.context,
12296                    );
12297                if inlined != (member_inline_size <= 4) {
12298                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12299                }
12300                let inner_offset;
12301                let mut inner_depth = depth.clone();
12302                if inlined {
12303                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12304                    inner_offset = next_offset;
12305                } else {
12306                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12307                    inner_depth.increment()?;
12308                }
12309                let val_ref = self
12310                    .source_name
12311                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12312                fidl::decode!(
12313                    fidl::encoding::BoundedString<100>,
12314                    D,
12315                    val_ref,
12316                    decoder,
12317                    inner_offset,
12318                    inner_depth
12319                )?;
12320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12321                {
12322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12323                }
12324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12326                }
12327            }
12328
12329            next_offset += envelope_size;
12330            _next_ordinal_to_read += 1;
12331            if next_offset >= end_offset {
12332                return Ok(());
12333            }
12334
12335            // Decode unknown envelopes for gaps in ordinals.
12336            while _next_ordinal_to_read < 3 {
12337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12338                _next_ordinal_to_read += 1;
12339                next_offset += envelope_size;
12340            }
12341
12342            let next_out_of_line = decoder.next_out_of_line();
12343            let handles_before = decoder.remaining_handles();
12344            if let Some((inlined, num_bytes, num_handles)) =
12345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12346            {
12347                let member_inline_size =
12348                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12349                if inlined != (member_inline_size <= 4) {
12350                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12351                }
12352                let inner_offset;
12353                let mut inner_depth = depth.clone();
12354                if inlined {
12355                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12356                    inner_offset = next_offset;
12357                } else {
12358                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12359                    inner_depth.increment()?;
12360                }
12361                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12362                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12363                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12364                {
12365                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12366                }
12367                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12368                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12369                }
12370            }
12371
12372            next_offset += envelope_size;
12373            _next_ordinal_to_read += 1;
12374            if next_offset >= end_offset {
12375                return Ok(());
12376            }
12377
12378            // Decode unknown envelopes for gaps in ordinals.
12379            while _next_ordinal_to_read < 4 {
12380                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12381                _next_ordinal_to_read += 1;
12382                next_offset += envelope_size;
12383            }
12384
12385            let next_out_of_line = decoder.next_out_of_line();
12386            let handles_before = decoder.remaining_handles();
12387            if let Some((inlined, num_bytes, num_handles)) =
12388                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12389            {
12390                let member_inline_size =
12391                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12392                        decoder.context,
12393                    );
12394                if inlined != (member_inline_size <= 4) {
12395                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12396                }
12397                let inner_offset;
12398                let mut inner_depth = depth.clone();
12399                if inlined {
12400                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12401                    inner_offset = next_offset;
12402                } else {
12403                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12404                    inner_depth.increment()?;
12405                }
12406                let val_ref = self
12407                    .target_name
12408                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12409                fidl::decode!(
12410                    fidl::encoding::BoundedString<100>,
12411                    D,
12412                    val_ref,
12413                    decoder,
12414                    inner_offset,
12415                    inner_depth
12416                )?;
12417                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12418                {
12419                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12420                }
12421                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12422                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12423                }
12424            }
12425
12426            next_offset += envelope_size;
12427            _next_ordinal_to_read += 1;
12428            if next_offset >= end_offset {
12429                return Ok(());
12430            }
12431
12432            // Decode unknown envelopes for gaps in ordinals.
12433            while _next_ordinal_to_read < 5 {
12434                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12435                _next_ordinal_to_read += 1;
12436                next_offset += envelope_size;
12437            }
12438
12439            let next_out_of_line = decoder.next_out_of_line();
12440            let handles_before = decoder.remaining_handles();
12441            if let Some((inlined, num_bytes, num_handles)) =
12442                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12443            {
12444                let member_inline_size =
12445                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12446                if inlined != (member_inline_size <= 4) {
12447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12448                }
12449                let inner_offset;
12450                let mut inner_depth = depth.clone();
12451                if inlined {
12452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12453                    inner_offset = next_offset;
12454                } else {
12455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12456                    inner_depth.increment()?;
12457                }
12458                let val_ref =
12459                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
12460                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
12461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12462                {
12463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12464                }
12465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12467                }
12468            }
12469
12470            next_offset += envelope_size;
12471            _next_ordinal_to_read += 1;
12472            if next_offset >= end_offset {
12473                return Ok(());
12474            }
12475
12476            // Decode unknown envelopes for gaps in ordinals.
12477            while _next_ordinal_to_read < 6 {
12478                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12479                _next_ordinal_to_read += 1;
12480                next_offset += envelope_size;
12481            }
12482
12483            let next_out_of_line = decoder.next_out_of_line();
12484            let handles_before = decoder.remaining_handles();
12485            if let Some((inlined, num_bytes, num_handles)) =
12486                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12487            {
12488                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12489                if inlined != (member_inline_size <= 4) {
12490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12491                }
12492                let inner_offset;
12493                let mut inner_depth = depth.clone();
12494                if inlined {
12495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12496                    inner_offset = next_offset;
12497                } else {
12498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12499                    inner_depth.increment()?;
12500                }
12501                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12502                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12503                });
12504                fidl::decode!(
12505                    fidl::encoding::BoundedString<1024>,
12506                    D,
12507                    val_ref,
12508                    decoder,
12509                    inner_offset,
12510                    inner_depth
12511                )?;
12512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12513                {
12514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12515                }
12516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12518                }
12519            }
12520
12521            next_offset += envelope_size;
12522
12523            // Decode the remaining unknown envelopes.
12524            while next_offset < end_offset {
12525                _next_ordinal_to_read += 1;
12526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12527                next_offset += envelope_size;
12528            }
12529
12530            Ok(())
12531        }
12532    }
12533
12534    impl ExposeResolver {
12535        #[inline(always)]
12536        fn max_ordinal_present(&self) -> u64 {
12537            if let Some(_) = self.source_dictionary {
12538                return 6;
12539            }
12540            if let Some(_) = self.target_name {
12541                return 4;
12542            }
12543            if let Some(_) = self.target {
12544                return 3;
12545            }
12546            if let Some(_) = self.source_name {
12547                return 2;
12548            }
12549            if let Some(_) = self.source {
12550                return 1;
12551            }
12552            0
12553        }
12554    }
12555
12556    impl fidl::encoding::ValueTypeMarker for ExposeResolver {
12557        type Borrowed<'a> = &'a Self;
12558        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12559            value
12560        }
12561    }
12562
12563    unsafe impl fidl::encoding::TypeMarker for ExposeResolver {
12564        type Owned = Self;
12565
12566        #[inline(always)]
12567        fn inline_align(_context: fidl::encoding::Context) -> usize {
12568            8
12569        }
12570
12571        #[inline(always)]
12572        fn inline_size(_context: fidl::encoding::Context) -> usize {
12573            16
12574        }
12575    }
12576
12577    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeResolver, D>
12578        for &ExposeResolver
12579    {
12580        unsafe fn encode(
12581            self,
12582            encoder: &mut fidl::encoding::Encoder<'_, D>,
12583            offset: usize,
12584            mut depth: fidl::encoding::Depth,
12585        ) -> fidl::Result<()> {
12586            encoder.debug_check_bounds::<ExposeResolver>(offset);
12587            // Vector header
12588            let max_ordinal: u64 = self.max_ordinal_present();
12589            encoder.write_num(max_ordinal, offset);
12590            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12591            // Calling encoder.out_of_line_offset(0) is not allowed.
12592            if max_ordinal == 0 {
12593                return Ok(());
12594            }
12595            depth.increment()?;
12596            let envelope_size = 8;
12597            let bytes_len = max_ordinal as usize * envelope_size;
12598            #[allow(unused_variables)]
12599            let offset = encoder.out_of_line_offset(bytes_len);
12600            let mut _prev_end_offset: usize = 0;
12601            if 1 > max_ordinal {
12602                return Ok(());
12603            }
12604
12605            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12606            // are envelope_size bytes.
12607            let cur_offset: usize = (1 - 1) * envelope_size;
12608
12609            // Zero reserved fields.
12610            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12611
12612            // Safety:
12613            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12614            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12615            //   envelope_size bytes, there is always sufficient room.
12616            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12617                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12618                encoder,
12619                offset + cur_offset,
12620                depth,
12621            )?;
12622
12623            _prev_end_offset = cur_offset + envelope_size;
12624            if 2 > max_ordinal {
12625                return Ok(());
12626            }
12627
12628            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12629            // are envelope_size bytes.
12630            let cur_offset: usize = (2 - 1) * envelope_size;
12631
12632            // Zero reserved fields.
12633            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12634
12635            // Safety:
12636            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12637            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12638            //   envelope_size bytes, there is always sufficient room.
12639            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12640                self.source_name.as_ref().map(
12641                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12642                ),
12643                encoder,
12644                offset + cur_offset,
12645                depth,
12646            )?;
12647
12648            _prev_end_offset = cur_offset + envelope_size;
12649            if 3 > max_ordinal {
12650                return Ok(());
12651            }
12652
12653            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12654            // are envelope_size bytes.
12655            let cur_offset: usize = (3 - 1) * envelope_size;
12656
12657            // Zero reserved fields.
12658            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12659
12660            // Safety:
12661            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12662            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12663            //   envelope_size bytes, there is always sufficient room.
12664            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
12665                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
12666                encoder,
12667                offset + cur_offset,
12668                depth,
12669            )?;
12670
12671            _prev_end_offset = cur_offset + envelope_size;
12672            if 4 > max_ordinal {
12673                return Ok(());
12674            }
12675
12676            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12677            // are envelope_size bytes.
12678            let cur_offset: usize = (4 - 1) * envelope_size;
12679
12680            // Zero reserved fields.
12681            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12682
12683            // Safety:
12684            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12685            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12686            //   envelope_size bytes, there is always sufficient room.
12687            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
12688                self.target_name.as_ref().map(
12689                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
12690                ),
12691                encoder,
12692                offset + cur_offset,
12693                depth,
12694            )?;
12695
12696            _prev_end_offset = cur_offset + envelope_size;
12697            if 6 > max_ordinal {
12698                return Ok(());
12699            }
12700
12701            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12702            // are envelope_size bytes.
12703            let cur_offset: usize = (6 - 1) * envelope_size;
12704
12705            // Zero reserved fields.
12706            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12707
12708            // Safety:
12709            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12710            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12711            //   envelope_size bytes, there is always sufficient room.
12712            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
12713            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
12714            encoder, offset + cur_offset, depth
12715        )?;
12716
12717            _prev_end_offset = cur_offset + envelope_size;
12718
12719            Ok(())
12720        }
12721    }
12722
12723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeResolver {
12724        #[inline(always)]
12725        fn new_empty() -> Self {
12726            Self::default()
12727        }
12728
12729        unsafe fn decode(
12730            &mut self,
12731            decoder: &mut fidl::encoding::Decoder<'_, D>,
12732            offset: usize,
12733            mut depth: fidl::encoding::Depth,
12734        ) -> fidl::Result<()> {
12735            decoder.debug_check_bounds::<Self>(offset);
12736            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12737                None => return Err(fidl::Error::NotNullable),
12738                Some(len) => len,
12739            };
12740            // Calling decoder.out_of_line_offset(0) is not allowed.
12741            if len == 0 {
12742                return Ok(());
12743            };
12744            depth.increment()?;
12745            let envelope_size = 8;
12746            let bytes_len = len * envelope_size;
12747            let offset = decoder.out_of_line_offset(bytes_len)?;
12748            // Decode the envelope for each type.
12749            let mut _next_ordinal_to_read = 0;
12750            let mut next_offset = offset;
12751            let end_offset = offset + bytes_len;
12752            _next_ordinal_to_read += 1;
12753            if next_offset >= end_offset {
12754                return Ok(());
12755            }
12756
12757            // Decode unknown envelopes for gaps in ordinals.
12758            while _next_ordinal_to_read < 1 {
12759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12760                _next_ordinal_to_read += 1;
12761                next_offset += envelope_size;
12762            }
12763
12764            let next_out_of_line = decoder.next_out_of_line();
12765            let handles_before = decoder.remaining_handles();
12766            if let Some((inlined, num_bytes, num_handles)) =
12767                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12768            {
12769                let member_inline_size =
12770                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12771                if inlined != (member_inline_size <= 4) {
12772                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12773                }
12774                let inner_offset;
12775                let mut inner_depth = depth.clone();
12776                if inlined {
12777                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12778                    inner_offset = next_offset;
12779                } else {
12780                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12781                    inner_depth.increment()?;
12782                }
12783                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12784                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12785                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12786                {
12787                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12788                }
12789                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12790                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12791                }
12792            }
12793
12794            next_offset += envelope_size;
12795            _next_ordinal_to_read += 1;
12796            if next_offset >= end_offset {
12797                return Ok(());
12798            }
12799
12800            // Decode unknown envelopes for gaps in ordinals.
12801            while _next_ordinal_to_read < 2 {
12802                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12803                _next_ordinal_to_read += 1;
12804                next_offset += envelope_size;
12805            }
12806
12807            let next_out_of_line = decoder.next_out_of_line();
12808            let handles_before = decoder.remaining_handles();
12809            if let Some((inlined, num_bytes, num_handles)) =
12810                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12811            {
12812                let member_inline_size =
12813                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12814                        decoder.context,
12815                    );
12816                if inlined != (member_inline_size <= 4) {
12817                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12818                }
12819                let inner_offset;
12820                let mut inner_depth = depth.clone();
12821                if inlined {
12822                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12823                    inner_offset = next_offset;
12824                } else {
12825                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12826                    inner_depth.increment()?;
12827                }
12828                let val_ref = self
12829                    .source_name
12830                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12831                fidl::decode!(
12832                    fidl::encoding::BoundedString<100>,
12833                    D,
12834                    val_ref,
12835                    decoder,
12836                    inner_offset,
12837                    inner_depth
12838                )?;
12839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12840                {
12841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12842                }
12843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12845                }
12846            }
12847
12848            next_offset += envelope_size;
12849            _next_ordinal_to_read += 1;
12850            if next_offset >= end_offset {
12851                return Ok(());
12852            }
12853
12854            // Decode unknown envelopes for gaps in ordinals.
12855            while _next_ordinal_to_read < 3 {
12856                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12857                _next_ordinal_to_read += 1;
12858                next_offset += envelope_size;
12859            }
12860
12861            let next_out_of_line = decoder.next_out_of_line();
12862            let handles_before = decoder.remaining_handles();
12863            if let Some((inlined, num_bytes, num_handles)) =
12864                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12865            {
12866                let member_inline_size =
12867                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12868                if inlined != (member_inline_size <= 4) {
12869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12870                }
12871                let inner_offset;
12872                let mut inner_depth = depth.clone();
12873                if inlined {
12874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12875                    inner_offset = next_offset;
12876                } else {
12877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12878                    inner_depth.increment()?;
12879                }
12880                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
12881                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
12882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12883                {
12884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12885                }
12886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12888                }
12889            }
12890
12891            next_offset += envelope_size;
12892            _next_ordinal_to_read += 1;
12893            if next_offset >= end_offset {
12894                return Ok(());
12895            }
12896
12897            // Decode unknown envelopes for gaps in ordinals.
12898            while _next_ordinal_to_read < 4 {
12899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12900                _next_ordinal_to_read += 1;
12901                next_offset += envelope_size;
12902            }
12903
12904            let next_out_of_line = decoder.next_out_of_line();
12905            let handles_before = decoder.remaining_handles();
12906            if let Some((inlined, num_bytes, num_handles)) =
12907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12908            {
12909                let member_inline_size =
12910                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12911                        decoder.context,
12912                    );
12913                if inlined != (member_inline_size <= 4) {
12914                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12915                }
12916                let inner_offset;
12917                let mut inner_depth = depth.clone();
12918                if inlined {
12919                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12920                    inner_offset = next_offset;
12921                } else {
12922                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12923                    inner_depth.increment()?;
12924                }
12925                let val_ref = self
12926                    .target_name
12927                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
12928                fidl::decode!(
12929                    fidl::encoding::BoundedString<100>,
12930                    D,
12931                    val_ref,
12932                    decoder,
12933                    inner_offset,
12934                    inner_depth
12935                )?;
12936                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12937                {
12938                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12939                }
12940                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12941                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12942                }
12943            }
12944
12945            next_offset += envelope_size;
12946            _next_ordinal_to_read += 1;
12947            if next_offset >= end_offset {
12948                return Ok(());
12949            }
12950
12951            // Decode unknown envelopes for gaps in ordinals.
12952            while _next_ordinal_to_read < 6 {
12953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12954                _next_ordinal_to_read += 1;
12955                next_offset += envelope_size;
12956            }
12957
12958            let next_out_of_line = decoder.next_out_of_line();
12959            let handles_before = decoder.remaining_handles();
12960            if let Some((inlined, num_bytes, num_handles)) =
12961                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12962            {
12963                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12964                if inlined != (member_inline_size <= 4) {
12965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12966                }
12967                let inner_offset;
12968                let mut inner_depth = depth.clone();
12969                if inlined {
12970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12971                    inner_offset = next_offset;
12972                } else {
12973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12974                    inner_depth.increment()?;
12975                }
12976                let val_ref = self.source_dictionary.get_or_insert_with(|| {
12977                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
12978                });
12979                fidl::decode!(
12980                    fidl::encoding::BoundedString<1024>,
12981                    D,
12982                    val_ref,
12983                    decoder,
12984                    inner_offset,
12985                    inner_depth
12986                )?;
12987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12988                {
12989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12990                }
12991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12993                }
12994            }
12995
12996            next_offset += envelope_size;
12997
12998            // Decode the remaining unknown envelopes.
12999            while next_offset < end_offset {
13000                _next_ordinal_to_read += 1;
13001                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13002                next_offset += envelope_size;
13003            }
13004
13005            Ok(())
13006        }
13007    }
13008
13009    impl ExposeRunner {
13010        #[inline(always)]
13011        fn max_ordinal_present(&self) -> u64 {
13012            if let Some(_) = self.source_dictionary {
13013                return 6;
13014            }
13015            if let Some(_) = self.target_name {
13016                return 4;
13017            }
13018            if let Some(_) = self.target {
13019                return 3;
13020            }
13021            if let Some(_) = self.source_name {
13022                return 2;
13023            }
13024            if let Some(_) = self.source {
13025                return 1;
13026            }
13027            0
13028        }
13029    }
13030
13031    impl fidl::encoding::ValueTypeMarker for ExposeRunner {
13032        type Borrowed<'a> = &'a Self;
13033        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13034            value
13035        }
13036    }
13037
13038    unsafe impl fidl::encoding::TypeMarker for ExposeRunner {
13039        type Owned = Self;
13040
13041        #[inline(always)]
13042        fn inline_align(_context: fidl::encoding::Context) -> usize {
13043            8
13044        }
13045
13046        #[inline(always)]
13047        fn inline_size(_context: fidl::encoding::Context) -> usize {
13048            16
13049        }
13050    }
13051
13052    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeRunner, D>
13053        for &ExposeRunner
13054    {
13055        unsafe fn encode(
13056            self,
13057            encoder: &mut fidl::encoding::Encoder<'_, D>,
13058            offset: usize,
13059            mut depth: fidl::encoding::Depth,
13060        ) -> fidl::Result<()> {
13061            encoder.debug_check_bounds::<ExposeRunner>(offset);
13062            // Vector header
13063            let max_ordinal: u64 = self.max_ordinal_present();
13064            encoder.write_num(max_ordinal, offset);
13065            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13066            // Calling encoder.out_of_line_offset(0) is not allowed.
13067            if max_ordinal == 0 {
13068                return Ok(());
13069            }
13070            depth.increment()?;
13071            let envelope_size = 8;
13072            let bytes_len = max_ordinal as usize * envelope_size;
13073            #[allow(unused_variables)]
13074            let offset = encoder.out_of_line_offset(bytes_len);
13075            let mut _prev_end_offset: usize = 0;
13076            if 1 > max_ordinal {
13077                return Ok(());
13078            }
13079
13080            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13081            // are envelope_size bytes.
13082            let cur_offset: usize = (1 - 1) * envelope_size;
13083
13084            // Zero reserved fields.
13085            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13086
13087            // Safety:
13088            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13089            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13090            //   envelope_size bytes, there is always sufficient room.
13091            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13092                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13093                encoder,
13094                offset + cur_offset,
13095                depth,
13096            )?;
13097
13098            _prev_end_offset = cur_offset + envelope_size;
13099            if 2 > max_ordinal {
13100                return Ok(());
13101            }
13102
13103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13104            // are envelope_size bytes.
13105            let cur_offset: usize = (2 - 1) * envelope_size;
13106
13107            // Zero reserved fields.
13108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13109
13110            // Safety:
13111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13113            //   envelope_size bytes, there is always sufficient room.
13114            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13115                self.source_name.as_ref().map(
13116                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13117                ),
13118                encoder,
13119                offset + cur_offset,
13120                depth,
13121            )?;
13122
13123            _prev_end_offset = cur_offset + envelope_size;
13124            if 3 > max_ordinal {
13125                return Ok(());
13126            }
13127
13128            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13129            // are envelope_size bytes.
13130            let cur_offset: usize = (3 - 1) * envelope_size;
13131
13132            // Zero reserved fields.
13133            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13134
13135            // Safety:
13136            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13137            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13138            //   envelope_size bytes, there is always sufficient room.
13139            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13140                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13141                encoder,
13142                offset + cur_offset,
13143                depth,
13144            )?;
13145
13146            _prev_end_offset = cur_offset + envelope_size;
13147            if 4 > max_ordinal {
13148                return Ok(());
13149            }
13150
13151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13152            // are envelope_size bytes.
13153            let cur_offset: usize = (4 - 1) * envelope_size;
13154
13155            // Zero reserved fields.
13156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13157
13158            // Safety:
13159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13161            //   envelope_size bytes, there is always sufficient room.
13162            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13163                self.target_name.as_ref().map(
13164                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13165                ),
13166                encoder,
13167                offset + cur_offset,
13168                depth,
13169            )?;
13170
13171            _prev_end_offset = cur_offset + envelope_size;
13172            if 6 > max_ordinal {
13173                return Ok(());
13174            }
13175
13176            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13177            // are envelope_size bytes.
13178            let cur_offset: usize = (6 - 1) * envelope_size;
13179
13180            // Zero reserved fields.
13181            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13182
13183            // Safety:
13184            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13185            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13186            //   envelope_size bytes, there is always sufficient room.
13187            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13188            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13189            encoder, offset + cur_offset, depth
13190        )?;
13191
13192            _prev_end_offset = cur_offset + envelope_size;
13193
13194            Ok(())
13195        }
13196    }
13197
13198    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeRunner {
13199        #[inline(always)]
13200        fn new_empty() -> Self {
13201            Self::default()
13202        }
13203
13204        unsafe fn decode(
13205            &mut self,
13206            decoder: &mut fidl::encoding::Decoder<'_, D>,
13207            offset: usize,
13208            mut depth: fidl::encoding::Depth,
13209        ) -> fidl::Result<()> {
13210            decoder.debug_check_bounds::<Self>(offset);
13211            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13212                None => return Err(fidl::Error::NotNullable),
13213                Some(len) => len,
13214            };
13215            // Calling decoder.out_of_line_offset(0) is not allowed.
13216            if len == 0 {
13217                return Ok(());
13218            };
13219            depth.increment()?;
13220            let envelope_size = 8;
13221            let bytes_len = len * envelope_size;
13222            let offset = decoder.out_of_line_offset(bytes_len)?;
13223            // Decode the envelope for each type.
13224            let mut _next_ordinal_to_read = 0;
13225            let mut next_offset = offset;
13226            let end_offset = offset + bytes_len;
13227            _next_ordinal_to_read += 1;
13228            if next_offset >= end_offset {
13229                return Ok(());
13230            }
13231
13232            // Decode unknown envelopes for gaps in ordinals.
13233            while _next_ordinal_to_read < 1 {
13234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13235                _next_ordinal_to_read += 1;
13236                next_offset += envelope_size;
13237            }
13238
13239            let next_out_of_line = decoder.next_out_of_line();
13240            let handles_before = decoder.remaining_handles();
13241            if let Some((inlined, num_bytes, num_handles)) =
13242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13243            {
13244                let member_inline_size =
13245                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13246                if inlined != (member_inline_size <= 4) {
13247                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13248                }
13249                let inner_offset;
13250                let mut inner_depth = depth.clone();
13251                if inlined {
13252                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13253                    inner_offset = next_offset;
13254                } else {
13255                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13256                    inner_depth.increment()?;
13257                }
13258                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13259                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13260                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13261                {
13262                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13263                }
13264                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13265                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13266                }
13267            }
13268
13269            next_offset += envelope_size;
13270            _next_ordinal_to_read += 1;
13271            if next_offset >= end_offset {
13272                return Ok(());
13273            }
13274
13275            // Decode unknown envelopes for gaps in ordinals.
13276            while _next_ordinal_to_read < 2 {
13277                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13278                _next_ordinal_to_read += 1;
13279                next_offset += envelope_size;
13280            }
13281
13282            let next_out_of_line = decoder.next_out_of_line();
13283            let handles_before = decoder.remaining_handles();
13284            if let Some((inlined, num_bytes, num_handles)) =
13285                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13286            {
13287                let member_inline_size =
13288                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13289                        decoder.context,
13290                    );
13291                if inlined != (member_inline_size <= 4) {
13292                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13293                }
13294                let inner_offset;
13295                let mut inner_depth = depth.clone();
13296                if inlined {
13297                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13298                    inner_offset = next_offset;
13299                } else {
13300                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13301                    inner_depth.increment()?;
13302                }
13303                let val_ref = self
13304                    .source_name
13305                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13306                fidl::decode!(
13307                    fidl::encoding::BoundedString<100>,
13308                    D,
13309                    val_ref,
13310                    decoder,
13311                    inner_offset,
13312                    inner_depth
13313                )?;
13314                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13315                {
13316                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13317                }
13318                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13319                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13320                }
13321            }
13322
13323            next_offset += envelope_size;
13324            _next_ordinal_to_read += 1;
13325            if next_offset >= end_offset {
13326                return Ok(());
13327            }
13328
13329            // Decode unknown envelopes for gaps in ordinals.
13330            while _next_ordinal_to_read < 3 {
13331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13332                _next_ordinal_to_read += 1;
13333                next_offset += envelope_size;
13334            }
13335
13336            let next_out_of_line = decoder.next_out_of_line();
13337            let handles_before = decoder.remaining_handles();
13338            if let Some((inlined, num_bytes, num_handles)) =
13339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13340            {
13341                let member_inline_size =
13342                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13343                if inlined != (member_inline_size <= 4) {
13344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13345                }
13346                let inner_offset;
13347                let mut inner_depth = depth.clone();
13348                if inlined {
13349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13350                    inner_offset = next_offset;
13351                } else {
13352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13353                    inner_depth.increment()?;
13354                }
13355                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13356                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13357                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13358                {
13359                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13360                }
13361                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13362                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13363                }
13364            }
13365
13366            next_offset += envelope_size;
13367            _next_ordinal_to_read += 1;
13368            if next_offset >= end_offset {
13369                return Ok(());
13370            }
13371
13372            // Decode unknown envelopes for gaps in ordinals.
13373            while _next_ordinal_to_read < 4 {
13374                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13375                _next_ordinal_to_read += 1;
13376                next_offset += envelope_size;
13377            }
13378
13379            let next_out_of_line = decoder.next_out_of_line();
13380            let handles_before = decoder.remaining_handles();
13381            if let Some((inlined, num_bytes, num_handles)) =
13382                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13383            {
13384                let member_inline_size =
13385                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13386                        decoder.context,
13387                    );
13388                if inlined != (member_inline_size <= 4) {
13389                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13390                }
13391                let inner_offset;
13392                let mut inner_depth = depth.clone();
13393                if inlined {
13394                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13395                    inner_offset = next_offset;
13396                } else {
13397                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13398                    inner_depth.increment()?;
13399                }
13400                let val_ref = self
13401                    .target_name
13402                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13403                fidl::decode!(
13404                    fidl::encoding::BoundedString<100>,
13405                    D,
13406                    val_ref,
13407                    decoder,
13408                    inner_offset,
13409                    inner_depth
13410                )?;
13411                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13412                {
13413                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13414                }
13415                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13416                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13417                }
13418            }
13419
13420            next_offset += envelope_size;
13421            _next_ordinal_to_read += 1;
13422            if next_offset >= end_offset {
13423                return Ok(());
13424            }
13425
13426            // Decode unknown envelopes for gaps in ordinals.
13427            while _next_ordinal_to_read < 6 {
13428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13429                _next_ordinal_to_read += 1;
13430                next_offset += envelope_size;
13431            }
13432
13433            let next_out_of_line = decoder.next_out_of_line();
13434            let handles_before = decoder.remaining_handles();
13435            if let Some((inlined, num_bytes, num_handles)) =
13436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13437            {
13438                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13439                if inlined != (member_inline_size <= 4) {
13440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13441                }
13442                let inner_offset;
13443                let mut inner_depth = depth.clone();
13444                if inlined {
13445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13446                    inner_offset = next_offset;
13447                } else {
13448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13449                    inner_depth.increment()?;
13450                }
13451                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13452                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
13453                });
13454                fidl::decode!(
13455                    fidl::encoding::BoundedString<1024>,
13456                    D,
13457                    val_ref,
13458                    decoder,
13459                    inner_offset,
13460                    inner_depth
13461                )?;
13462                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13463                {
13464                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13465                }
13466                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13467                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13468                }
13469            }
13470
13471            next_offset += envelope_size;
13472
13473            // Decode the remaining unknown envelopes.
13474            while next_offset < end_offset {
13475                _next_ordinal_to_read += 1;
13476                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13477                next_offset += envelope_size;
13478            }
13479
13480            Ok(())
13481        }
13482    }
13483
13484    impl ExposeService {
13485        #[inline(always)]
13486        fn max_ordinal_present(&self) -> u64 {
13487            if let Some(_) = self.source_dictionary {
13488                return 6;
13489            }
13490            if let Some(_) = self.availability {
13491                return 5;
13492            }
13493            if let Some(_) = self.target_name {
13494                return 4;
13495            }
13496            if let Some(_) = self.target {
13497                return 3;
13498            }
13499            if let Some(_) = self.source_name {
13500                return 2;
13501            }
13502            if let Some(_) = self.source {
13503                return 1;
13504            }
13505            0
13506        }
13507    }
13508
13509    impl fidl::encoding::ValueTypeMarker for ExposeService {
13510        type Borrowed<'a> = &'a Self;
13511        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13512            value
13513        }
13514    }
13515
13516    unsafe impl fidl::encoding::TypeMarker for ExposeService {
13517        type Owned = Self;
13518
13519        #[inline(always)]
13520        fn inline_align(_context: fidl::encoding::Context) -> usize {
13521            8
13522        }
13523
13524        #[inline(always)]
13525        fn inline_size(_context: fidl::encoding::Context) -> usize {
13526            16
13527        }
13528    }
13529
13530    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposeService, D>
13531        for &ExposeService
13532    {
13533        unsafe fn encode(
13534            self,
13535            encoder: &mut fidl::encoding::Encoder<'_, D>,
13536            offset: usize,
13537            mut depth: fidl::encoding::Depth,
13538        ) -> fidl::Result<()> {
13539            encoder.debug_check_bounds::<ExposeService>(offset);
13540            // Vector header
13541            let max_ordinal: u64 = self.max_ordinal_present();
13542            encoder.write_num(max_ordinal, offset);
13543            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13544            // Calling encoder.out_of_line_offset(0) is not allowed.
13545            if max_ordinal == 0 {
13546                return Ok(());
13547            }
13548            depth.increment()?;
13549            let envelope_size = 8;
13550            let bytes_len = max_ordinal as usize * envelope_size;
13551            #[allow(unused_variables)]
13552            let offset = encoder.out_of_line_offset(bytes_len);
13553            let mut _prev_end_offset: usize = 0;
13554            if 1 > max_ordinal {
13555                return Ok(());
13556            }
13557
13558            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13559            // are envelope_size bytes.
13560            let cur_offset: usize = (1 - 1) * envelope_size;
13561
13562            // Zero reserved fields.
13563            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13564
13565            // Safety:
13566            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13567            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13568            //   envelope_size bytes, there is always sufficient room.
13569            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13570                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13571                encoder,
13572                offset + cur_offset,
13573                depth,
13574            )?;
13575
13576            _prev_end_offset = cur_offset + envelope_size;
13577            if 2 > max_ordinal {
13578                return Ok(());
13579            }
13580
13581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13582            // are envelope_size bytes.
13583            let cur_offset: usize = (2 - 1) * envelope_size;
13584
13585            // Zero reserved fields.
13586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13587
13588            // Safety:
13589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13591            //   envelope_size bytes, there is always sufficient room.
13592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13593                self.source_name.as_ref().map(
13594                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13595                ),
13596                encoder,
13597                offset + cur_offset,
13598                depth,
13599            )?;
13600
13601            _prev_end_offset = cur_offset + envelope_size;
13602            if 3 > max_ordinal {
13603                return Ok(());
13604            }
13605
13606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13607            // are envelope_size bytes.
13608            let cur_offset: usize = (3 - 1) * envelope_size;
13609
13610            // Zero reserved fields.
13611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13612
13613            // Safety:
13614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13616            //   envelope_size bytes, there is always sufficient room.
13617            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
13618                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
13619                encoder,
13620                offset + cur_offset,
13621                depth,
13622            )?;
13623
13624            _prev_end_offset = cur_offset + envelope_size;
13625            if 4 > max_ordinal {
13626                return Ok(());
13627            }
13628
13629            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13630            // are envelope_size bytes.
13631            let cur_offset: usize = (4 - 1) * envelope_size;
13632
13633            // Zero reserved fields.
13634            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13635
13636            // Safety:
13637            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13638            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13639            //   envelope_size bytes, there is always sufficient room.
13640            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
13641                self.target_name.as_ref().map(
13642                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
13643                ),
13644                encoder,
13645                offset + cur_offset,
13646                depth,
13647            )?;
13648
13649            _prev_end_offset = cur_offset + envelope_size;
13650            if 5 > max_ordinal {
13651                return Ok(());
13652            }
13653
13654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13655            // are envelope_size bytes.
13656            let cur_offset: usize = (5 - 1) * envelope_size;
13657
13658            // Zero reserved fields.
13659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13660
13661            // Safety:
13662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13664            //   envelope_size bytes, there is always sufficient room.
13665            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
13666                self.availability
13667                    .as_ref()
13668                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
13669                encoder,
13670                offset + cur_offset,
13671                depth,
13672            )?;
13673
13674            _prev_end_offset = cur_offset + envelope_size;
13675            if 6 > max_ordinal {
13676                return Ok(());
13677            }
13678
13679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13680            // are envelope_size bytes.
13681            let cur_offset: usize = (6 - 1) * envelope_size;
13682
13683            // Zero reserved fields.
13684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13685
13686            // Safety:
13687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13689            //   envelope_size bytes, there is always sufficient room.
13690            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
13691            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
13692            encoder, offset + cur_offset, depth
13693        )?;
13694
13695            _prev_end_offset = cur_offset + envelope_size;
13696
13697            Ok(())
13698        }
13699    }
13700
13701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposeService {
13702        #[inline(always)]
13703        fn new_empty() -> Self {
13704            Self::default()
13705        }
13706
13707        unsafe fn decode(
13708            &mut self,
13709            decoder: &mut fidl::encoding::Decoder<'_, D>,
13710            offset: usize,
13711            mut depth: fidl::encoding::Depth,
13712        ) -> fidl::Result<()> {
13713            decoder.debug_check_bounds::<Self>(offset);
13714            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13715                None => return Err(fidl::Error::NotNullable),
13716                Some(len) => len,
13717            };
13718            // Calling decoder.out_of_line_offset(0) is not allowed.
13719            if len == 0 {
13720                return Ok(());
13721            };
13722            depth.increment()?;
13723            let envelope_size = 8;
13724            let bytes_len = len * envelope_size;
13725            let offset = decoder.out_of_line_offset(bytes_len)?;
13726            // Decode the envelope for each type.
13727            let mut _next_ordinal_to_read = 0;
13728            let mut next_offset = offset;
13729            let end_offset = offset + bytes_len;
13730            _next_ordinal_to_read += 1;
13731            if next_offset >= end_offset {
13732                return Ok(());
13733            }
13734
13735            // Decode unknown envelopes for gaps in ordinals.
13736            while _next_ordinal_to_read < 1 {
13737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13738                _next_ordinal_to_read += 1;
13739                next_offset += envelope_size;
13740            }
13741
13742            let next_out_of_line = decoder.next_out_of_line();
13743            let handles_before = decoder.remaining_handles();
13744            if let Some((inlined, num_bytes, num_handles)) =
13745                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13746            {
13747                let member_inline_size =
13748                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13749                if inlined != (member_inline_size <= 4) {
13750                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13751                }
13752                let inner_offset;
13753                let mut inner_depth = depth.clone();
13754                if inlined {
13755                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13756                    inner_offset = next_offset;
13757                } else {
13758                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13759                    inner_depth.increment()?;
13760                }
13761                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13762                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13763                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13764                {
13765                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13766                }
13767                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13768                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13769                }
13770            }
13771
13772            next_offset += envelope_size;
13773            _next_ordinal_to_read += 1;
13774            if next_offset >= end_offset {
13775                return Ok(());
13776            }
13777
13778            // Decode unknown envelopes for gaps in ordinals.
13779            while _next_ordinal_to_read < 2 {
13780                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13781                _next_ordinal_to_read += 1;
13782                next_offset += envelope_size;
13783            }
13784
13785            let next_out_of_line = decoder.next_out_of_line();
13786            let handles_before = decoder.remaining_handles();
13787            if let Some((inlined, num_bytes, num_handles)) =
13788                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13789            {
13790                let member_inline_size =
13791                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13792                        decoder.context,
13793                    );
13794                if inlined != (member_inline_size <= 4) {
13795                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13796                }
13797                let inner_offset;
13798                let mut inner_depth = depth.clone();
13799                if inlined {
13800                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13801                    inner_offset = next_offset;
13802                } else {
13803                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13804                    inner_depth.increment()?;
13805                }
13806                let val_ref = self
13807                    .source_name
13808                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13809                fidl::decode!(
13810                    fidl::encoding::BoundedString<100>,
13811                    D,
13812                    val_ref,
13813                    decoder,
13814                    inner_offset,
13815                    inner_depth
13816                )?;
13817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13818                {
13819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13820                }
13821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13823                }
13824            }
13825
13826            next_offset += envelope_size;
13827            _next_ordinal_to_read += 1;
13828            if next_offset >= end_offset {
13829                return Ok(());
13830            }
13831
13832            // Decode unknown envelopes for gaps in ordinals.
13833            while _next_ordinal_to_read < 3 {
13834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13835                _next_ordinal_to_read += 1;
13836                next_offset += envelope_size;
13837            }
13838
13839            let next_out_of_line = decoder.next_out_of_line();
13840            let handles_before = decoder.remaining_handles();
13841            if let Some((inlined, num_bytes, num_handles)) =
13842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13843            {
13844                let member_inline_size =
13845                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13846                if inlined != (member_inline_size <= 4) {
13847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13848                }
13849                let inner_offset;
13850                let mut inner_depth = depth.clone();
13851                if inlined {
13852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13853                    inner_offset = next_offset;
13854                } else {
13855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13856                    inner_depth.increment()?;
13857                }
13858                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
13859                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
13860                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13861                {
13862                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13863                }
13864                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13865                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13866                }
13867            }
13868
13869            next_offset += envelope_size;
13870            _next_ordinal_to_read += 1;
13871            if next_offset >= end_offset {
13872                return Ok(());
13873            }
13874
13875            // Decode unknown envelopes for gaps in ordinals.
13876            while _next_ordinal_to_read < 4 {
13877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13878                _next_ordinal_to_read += 1;
13879                next_offset += envelope_size;
13880            }
13881
13882            let next_out_of_line = decoder.next_out_of_line();
13883            let handles_before = decoder.remaining_handles();
13884            if let Some((inlined, num_bytes, num_handles)) =
13885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13886            {
13887                let member_inline_size =
13888                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13889                        decoder.context,
13890                    );
13891                if inlined != (member_inline_size <= 4) {
13892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13893                }
13894                let inner_offset;
13895                let mut inner_depth = depth.clone();
13896                if inlined {
13897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13898                    inner_offset = next_offset;
13899                } else {
13900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13901                    inner_depth.increment()?;
13902                }
13903                let val_ref = self
13904                    .target_name
13905                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
13906                fidl::decode!(
13907                    fidl::encoding::BoundedString<100>,
13908                    D,
13909                    val_ref,
13910                    decoder,
13911                    inner_offset,
13912                    inner_depth
13913                )?;
13914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13915                {
13916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13917                }
13918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13920                }
13921            }
13922
13923            next_offset += envelope_size;
13924            _next_ordinal_to_read += 1;
13925            if next_offset >= end_offset {
13926                return Ok(());
13927            }
13928
13929            // Decode unknown envelopes for gaps in ordinals.
13930            while _next_ordinal_to_read < 5 {
13931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13932                _next_ordinal_to_read += 1;
13933                next_offset += envelope_size;
13934            }
13935
13936            let next_out_of_line = decoder.next_out_of_line();
13937            let handles_before = decoder.remaining_handles();
13938            if let Some((inlined, num_bytes, num_handles)) =
13939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13940            {
13941                let member_inline_size =
13942                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13943                if inlined != (member_inline_size <= 4) {
13944                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13945                }
13946                let inner_offset;
13947                let mut inner_depth = depth.clone();
13948                if inlined {
13949                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13950                    inner_offset = next_offset;
13951                } else {
13952                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13953                    inner_depth.increment()?;
13954                }
13955                let val_ref =
13956                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
13957                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
13958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13959                {
13960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13961                }
13962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13964                }
13965            }
13966
13967            next_offset += envelope_size;
13968            _next_ordinal_to_read += 1;
13969            if next_offset >= end_offset {
13970                return Ok(());
13971            }
13972
13973            // Decode unknown envelopes for gaps in ordinals.
13974            while _next_ordinal_to_read < 6 {
13975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13976                _next_ordinal_to_read += 1;
13977                next_offset += envelope_size;
13978            }
13979
13980            let next_out_of_line = decoder.next_out_of_line();
13981            let handles_before = decoder.remaining_handles();
13982            if let Some((inlined, num_bytes, num_handles)) =
13983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13984            {
13985                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13986                if inlined != (member_inline_size <= 4) {
13987                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13988                }
13989                let inner_offset;
13990                let mut inner_depth = depth.clone();
13991                if inlined {
13992                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13993                    inner_offset = next_offset;
13994                } else {
13995                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13996                    inner_depth.increment()?;
13997                }
13998                let val_ref = self.source_dictionary.get_or_insert_with(|| {
13999                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14000                });
14001                fidl::decode!(
14002                    fidl::encoding::BoundedString<1024>,
14003                    D,
14004                    val_ref,
14005                    decoder,
14006                    inner_offset,
14007                    inner_depth
14008                )?;
14009                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14010                {
14011                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14012                }
14013                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14014                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14015                }
14016            }
14017
14018            next_offset += envelope_size;
14019
14020            // Decode the remaining unknown envelopes.
14021            while next_offset < end_offset {
14022                _next_ordinal_to_read += 1;
14023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14024                next_offset += envelope_size;
14025            }
14026
14027            Ok(())
14028        }
14029    }
14030
14031    impl OfferConfiguration {
14032        #[inline(always)]
14033        fn max_ordinal_present(&self) -> u64 {
14034            if let Some(_) = self.source_dictionary {
14035                return 6;
14036            }
14037            if let Some(_) = self.availability {
14038                return 5;
14039            }
14040            if let Some(_) = self.target_name {
14041                return 4;
14042            }
14043            if let Some(_) = self.target {
14044                return 3;
14045            }
14046            if let Some(_) = self.source_name {
14047                return 2;
14048            }
14049            if let Some(_) = self.source {
14050                return 1;
14051            }
14052            0
14053        }
14054    }
14055
14056    impl fidl::encoding::ValueTypeMarker for OfferConfiguration {
14057        type Borrowed<'a> = &'a Self;
14058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14059            value
14060        }
14061    }
14062
14063    unsafe impl fidl::encoding::TypeMarker for OfferConfiguration {
14064        type Owned = Self;
14065
14066        #[inline(always)]
14067        fn inline_align(_context: fidl::encoding::Context) -> usize {
14068            8
14069        }
14070
14071        #[inline(always)]
14072        fn inline_size(_context: fidl::encoding::Context) -> usize {
14073            16
14074        }
14075    }
14076
14077    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferConfiguration, D>
14078        for &OfferConfiguration
14079    {
14080        unsafe fn encode(
14081            self,
14082            encoder: &mut fidl::encoding::Encoder<'_, D>,
14083            offset: usize,
14084            mut depth: fidl::encoding::Depth,
14085        ) -> fidl::Result<()> {
14086            encoder.debug_check_bounds::<OfferConfiguration>(offset);
14087            // Vector header
14088            let max_ordinal: u64 = self.max_ordinal_present();
14089            encoder.write_num(max_ordinal, offset);
14090            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14091            // Calling encoder.out_of_line_offset(0) is not allowed.
14092            if max_ordinal == 0 {
14093                return Ok(());
14094            }
14095            depth.increment()?;
14096            let envelope_size = 8;
14097            let bytes_len = max_ordinal as usize * envelope_size;
14098            #[allow(unused_variables)]
14099            let offset = encoder.out_of_line_offset(bytes_len);
14100            let mut _prev_end_offset: usize = 0;
14101            if 1 > max_ordinal {
14102                return Ok(());
14103            }
14104
14105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14106            // are envelope_size bytes.
14107            let cur_offset: usize = (1 - 1) * envelope_size;
14108
14109            // Zero reserved fields.
14110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14111
14112            // Safety:
14113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14115            //   envelope_size bytes, there is always sufficient room.
14116            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14117                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14118                encoder,
14119                offset + cur_offset,
14120                depth,
14121            )?;
14122
14123            _prev_end_offset = cur_offset + envelope_size;
14124            if 2 > max_ordinal {
14125                return Ok(());
14126            }
14127
14128            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14129            // are envelope_size bytes.
14130            let cur_offset: usize = (2 - 1) * envelope_size;
14131
14132            // Zero reserved fields.
14133            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14134
14135            // Safety:
14136            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14137            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14138            //   envelope_size bytes, there is always sufficient room.
14139            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14140                self.source_name.as_ref().map(
14141                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14142                ),
14143                encoder,
14144                offset + cur_offset,
14145                depth,
14146            )?;
14147
14148            _prev_end_offset = cur_offset + envelope_size;
14149            if 3 > max_ordinal {
14150                return Ok(());
14151            }
14152
14153            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14154            // are envelope_size bytes.
14155            let cur_offset: usize = (3 - 1) * envelope_size;
14156
14157            // Zero reserved fields.
14158            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14159
14160            // Safety:
14161            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14162            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14163            //   envelope_size bytes, there is always sufficient room.
14164            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14165                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14166                encoder,
14167                offset + cur_offset,
14168                depth,
14169            )?;
14170
14171            _prev_end_offset = cur_offset + envelope_size;
14172            if 4 > max_ordinal {
14173                return Ok(());
14174            }
14175
14176            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14177            // are envelope_size bytes.
14178            let cur_offset: usize = (4 - 1) * envelope_size;
14179
14180            // Zero reserved fields.
14181            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14182
14183            // Safety:
14184            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14185            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14186            //   envelope_size bytes, there is always sufficient room.
14187            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14188                self.target_name.as_ref().map(
14189                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14190                ),
14191                encoder,
14192                offset + cur_offset,
14193                depth,
14194            )?;
14195
14196            _prev_end_offset = cur_offset + envelope_size;
14197            if 5 > max_ordinal {
14198                return Ok(());
14199            }
14200
14201            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14202            // are envelope_size bytes.
14203            let cur_offset: usize = (5 - 1) * envelope_size;
14204
14205            // Zero reserved fields.
14206            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14207
14208            // Safety:
14209            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14210            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14211            //   envelope_size bytes, there is always sufficient room.
14212            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
14213                self.availability
14214                    .as_ref()
14215                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
14216                encoder,
14217                offset + cur_offset,
14218                depth,
14219            )?;
14220
14221            _prev_end_offset = cur_offset + envelope_size;
14222            if 6 > max_ordinal {
14223                return Ok(());
14224            }
14225
14226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14227            // are envelope_size bytes.
14228            let cur_offset: usize = (6 - 1) * envelope_size;
14229
14230            // Zero reserved fields.
14231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14232
14233            // Safety:
14234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14236            //   envelope_size bytes, there is always sufficient room.
14237            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
14238            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
14239            encoder, offset + cur_offset, depth
14240        )?;
14241
14242            _prev_end_offset = cur_offset + envelope_size;
14243
14244            Ok(())
14245        }
14246    }
14247
14248    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferConfiguration {
14249        #[inline(always)]
14250        fn new_empty() -> Self {
14251            Self::default()
14252        }
14253
14254        unsafe fn decode(
14255            &mut self,
14256            decoder: &mut fidl::encoding::Decoder<'_, D>,
14257            offset: usize,
14258            mut depth: fidl::encoding::Depth,
14259        ) -> fidl::Result<()> {
14260            decoder.debug_check_bounds::<Self>(offset);
14261            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14262                None => return Err(fidl::Error::NotNullable),
14263                Some(len) => len,
14264            };
14265            // Calling decoder.out_of_line_offset(0) is not allowed.
14266            if len == 0 {
14267                return Ok(());
14268            };
14269            depth.increment()?;
14270            let envelope_size = 8;
14271            let bytes_len = len * envelope_size;
14272            let offset = decoder.out_of_line_offset(bytes_len)?;
14273            // Decode the envelope for each type.
14274            let mut _next_ordinal_to_read = 0;
14275            let mut next_offset = offset;
14276            let end_offset = offset + bytes_len;
14277            _next_ordinal_to_read += 1;
14278            if next_offset >= end_offset {
14279                return Ok(());
14280            }
14281
14282            // Decode unknown envelopes for gaps in ordinals.
14283            while _next_ordinal_to_read < 1 {
14284                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14285                _next_ordinal_to_read += 1;
14286                next_offset += envelope_size;
14287            }
14288
14289            let next_out_of_line = decoder.next_out_of_line();
14290            let handles_before = decoder.remaining_handles();
14291            if let Some((inlined, num_bytes, num_handles)) =
14292                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14293            {
14294                let member_inline_size =
14295                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14296                if inlined != (member_inline_size <= 4) {
14297                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14298                }
14299                let inner_offset;
14300                let mut inner_depth = depth.clone();
14301                if inlined {
14302                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14303                    inner_offset = next_offset;
14304                } else {
14305                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14306                    inner_depth.increment()?;
14307                }
14308                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14309                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14311                {
14312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14313                }
14314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14316                }
14317            }
14318
14319            next_offset += envelope_size;
14320            _next_ordinal_to_read += 1;
14321            if next_offset >= end_offset {
14322                return Ok(());
14323            }
14324
14325            // Decode unknown envelopes for gaps in ordinals.
14326            while _next_ordinal_to_read < 2 {
14327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14328                _next_ordinal_to_read += 1;
14329                next_offset += envelope_size;
14330            }
14331
14332            let next_out_of_line = decoder.next_out_of_line();
14333            let handles_before = decoder.remaining_handles();
14334            if let Some((inlined, num_bytes, num_handles)) =
14335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14336            {
14337                let member_inline_size =
14338                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14339                        decoder.context,
14340                    );
14341                if inlined != (member_inline_size <= 4) {
14342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14343                }
14344                let inner_offset;
14345                let mut inner_depth = depth.clone();
14346                if inlined {
14347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14348                    inner_offset = next_offset;
14349                } else {
14350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14351                    inner_depth.increment()?;
14352                }
14353                let val_ref = self
14354                    .source_name
14355                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14356                fidl::decode!(
14357                    fidl::encoding::BoundedString<100>,
14358                    D,
14359                    val_ref,
14360                    decoder,
14361                    inner_offset,
14362                    inner_depth
14363                )?;
14364                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14365                {
14366                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14367                }
14368                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14369                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14370                }
14371            }
14372
14373            next_offset += envelope_size;
14374            _next_ordinal_to_read += 1;
14375            if next_offset >= end_offset {
14376                return Ok(());
14377            }
14378
14379            // Decode unknown envelopes for gaps in ordinals.
14380            while _next_ordinal_to_read < 3 {
14381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14382                _next_ordinal_to_read += 1;
14383                next_offset += envelope_size;
14384            }
14385
14386            let next_out_of_line = decoder.next_out_of_line();
14387            let handles_before = decoder.remaining_handles();
14388            if let Some((inlined, num_bytes, num_handles)) =
14389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14390            {
14391                let member_inline_size =
14392                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14393                if inlined != (member_inline_size <= 4) {
14394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14395                }
14396                let inner_offset;
14397                let mut inner_depth = depth.clone();
14398                if inlined {
14399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14400                    inner_offset = next_offset;
14401                } else {
14402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14403                    inner_depth.increment()?;
14404                }
14405                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14406                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14408                {
14409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14410                }
14411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14413                }
14414            }
14415
14416            next_offset += envelope_size;
14417            _next_ordinal_to_read += 1;
14418            if next_offset >= end_offset {
14419                return Ok(());
14420            }
14421
14422            // Decode unknown envelopes for gaps in ordinals.
14423            while _next_ordinal_to_read < 4 {
14424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14425                _next_ordinal_to_read += 1;
14426                next_offset += envelope_size;
14427            }
14428
14429            let next_out_of_line = decoder.next_out_of_line();
14430            let handles_before = decoder.remaining_handles();
14431            if let Some((inlined, num_bytes, num_handles)) =
14432                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14433            {
14434                let member_inline_size =
14435                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14436                        decoder.context,
14437                    );
14438                if inlined != (member_inline_size <= 4) {
14439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14440                }
14441                let inner_offset;
14442                let mut inner_depth = depth.clone();
14443                if inlined {
14444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14445                    inner_offset = next_offset;
14446                } else {
14447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14448                    inner_depth.increment()?;
14449                }
14450                let val_ref = self
14451                    .target_name
14452                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14453                fidl::decode!(
14454                    fidl::encoding::BoundedString<100>,
14455                    D,
14456                    val_ref,
14457                    decoder,
14458                    inner_offset,
14459                    inner_depth
14460                )?;
14461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14462                {
14463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14464                }
14465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14467                }
14468            }
14469
14470            next_offset += envelope_size;
14471            _next_ordinal_to_read += 1;
14472            if next_offset >= end_offset {
14473                return Ok(());
14474            }
14475
14476            // Decode unknown envelopes for gaps in ordinals.
14477            while _next_ordinal_to_read < 5 {
14478                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14479                _next_ordinal_to_read += 1;
14480                next_offset += envelope_size;
14481            }
14482
14483            let next_out_of_line = decoder.next_out_of_line();
14484            let handles_before = decoder.remaining_handles();
14485            if let Some((inlined, num_bytes, num_handles)) =
14486                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14487            {
14488                let member_inline_size =
14489                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14490                if inlined != (member_inline_size <= 4) {
14491                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14492                }
14493                let inner_offset;
14494                let mut inner_depth = depth.clone();
14495                if inlined {
14496                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14497                    inner_offset = next_offset;
14498                } else {
14499                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14500                    inner_depth.increment()?;
14501                }
14502                let val_ref =
14503                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
14504                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
14505                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14506                {
14507                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14508                }
14509                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14510                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14511                }
14512            }
14513
14514            next_offset += envelope_size;
14515            _next_ordinal_to_read += 1;
14516            if next_offset >= end_offset {
14517                return Ok(());
14518            }
14519
14520            // Decode unknown envelopes for gaps in ordinals.
14521            while _next_ordinal_to_read < 6 {
14522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14523                _next_ordinal_to_read += 1;
14524                next_offset += envelope_size;
14525            }
14526
14527            let next_out_of_line = decoder.next_out_of_line();
14528            let handles_before = decoder.remaining_handles();
14529            if let Some((inlined, num_bytes, num_handles)) =
14530                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14531            {
14532                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14533                if inlined != (member_inline_size <= 4) {
14534                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14535                }
14536                let inner_offset;
14537                let mut inner_depth = depth.clone();
14538                if inlined {
14539                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14540                    inner_offset = next_offset;
14541                } else {
14542                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14543                    inner_depth.increment()?;
14544                }
14545                let val_ref = self.source_dictionary.get_or_insert_with(|| {
14546                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
14547                });
14548                fidl::decode!(
14549                    fidl::encoding::BoundedString<1024>,
14550                    D,
14551                    val_ref,
14552                    decoder,
14553                    inner_offset,
14554                    inner_depth
14555                )?;
14556                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14557                {
14558                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14559                }
14560                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14561                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14562                }
14563            }
14564
14565            next_offset += envelope_size;
14566
14567            // Decode the remaining unknown envelopes.
14568            while next_offset < end_offset {
14569                _next_ordinal_to_read += 1;
14570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14571                next_offset += envelope_size;
14572            }
14573
14574            Ok(())
14575        }
14576    }
14577
14578    impl OfferDictionary {
14579        #[inline(always)]
14580        fn max_ordinal_present(&self) -> u64 {
14581            if let Some(_) = self.source_dictionary {
14582                return 7;
14583            }
14584            if let Some(_) = self.availability {
14585                return 6;
14586            }
14587            if let Some(_) = self.dependency_type {
14588                return 5;
14589            }
14590            if let Some(_) = self.target_name {
14591                return 4;
14592            }
14593            if let Some(_) = self.target {
14594                return 3;
14595            }
14596            if let Some(_) = self.source_name {
14597                return 2;
14598            }
14599            if let Some(_) = self.source {
14600                return 1;
14601            }
14602            0
14603        }
14604    }
14605
14606    impl fidl::encoding::ValueTypeMarker for OfferDictionary {
14607        type Borrowed<'a> = &'a Self;
14608        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14609            value
14610        }
14611    }
14612
14613    unsafe impl fidl::encoding::TypeMarker for OfferDictionary {
14614        type Owned = Self;
14615
14616        #[inline(always)]
14617        fn inline_align(_context: fidl::encoding::Context) -> usize {
14618            8
14619        }
14620
14621        #[inline(always)]
14622        fn inline_size(_context: fidl::encoding::Context) -> usize {
14623            16
14624        }
14625    }
14626
14627    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDictionary, D>
14628        for &OfferDictionary
14629    {
14630        unsafe fn encode(
14631            self,
14632            encoder: &mut fidl::encoding::Encoder<'_, D>,
14633            offset: usize,
14634            mut depth: fidl::encoding::Depth,
14635        ) -> fidl::Result<()> {
14636            encoder.debug_check_bounds::<OfferDictionary>(offset);
14637            // Vector header
14638            let max_ordinal: u64 = self.max_ordinal_present();
14639            encoder.write_num(max_ordinal, offset);
14640            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14641            // Calling encoder.out_of_line_offset(0) is not allowed.
14642            if max_ordinal == 0 {
14643                return Ok(());
14644            }
14645            depth.increment()?;
14646            let envelope_size = 8;
14647            let bytes_len = max_ordinal as usize * envelope_size;
14648            #[allow(unused_variables)]
14649            let offset = encoder.out_of_line_offset(bytes_len);
14650            let mut _prev_end_offset: usize = 0;
14651            if 1 > max_ordinal {
14652                return Ok(());
14653            }
14654
14655            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14656            // are envelope_size bytes.
14657            let cur_offset: usize = (1 - 1) * envelope_size;
14658
14659            // Zero reserved fields.
14660            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14661
14662            // Safety:
14663            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14664            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14665            //   envelope_size bytes, there is always sufficient room.
14666            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14667                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14668                encoder,
14669                offset + cur_offset,
14670                depth,
14671            )?;
14672
14673            _prev_end_offset = cur_offset + envelope_size;
14674            if 2 > max_ordinal {
14675                return Ok(());
14676            }
14677
14678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14679            // are envelope_size bytes.
14680            let cur_offset: usize = (2 - 1) * envelope_size;
14681
14682            // Zero reserved fields.
14683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14684
14685            // Safety:
14686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14688            //   envelope_size bytes, there is always sufficient room.
14689            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14690                self.source_name.as_ref().map(
14691                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14692                ),
14693                encoder,
14694                offset + cur_offset,
14695                depth,
14696            )?;
14697
14698            _prev_end_offset = cur_offset + envelope_size;
14699            if 3 > max_ordinal {
14700                return Ok(());
14701            }
14702
14703            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14704            // are envelope_size bytes.
14705            let cur_offset: usize = (3 - 1) * envelope_size;
14706
14707            // Zero reserved fields.
14708            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14709
14710            // Safety:
14711            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14712            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14713            //   envelope_size bytes, there is always sufficient room.
14714            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
14715                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
14716                encoder,
14717                offset + cur_offset,
14718                depth,
14719            )?;
14720
14721            _prev_end_offset = cur_offset + envelope_size;
14722            if 4 > max_ordinal {
14723                return Ok(());
14724            }
14725
14726            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14727            // are envelope_size bytes.
14728            let cur_offset: usize = (4 - 1) * envelope_size;
14729
14730            // Zero reserved fields.
14731            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14732
14733            // Safety:
14734            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14735            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14736            //   envelope_size bytes, there is always sufficient room.
14737            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
14738                self.target_name.as_ref().map(
14739                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
14740                ),
14741                encoder,
14742                offset + cur_offset,
14743                depth,
14744            )?;
14745
14746            _prev_end_offset = cur_offset + envelope_size;
14747            if 5 > max_ordinal {
14748                return Ok(());
14749            }
14750
14751            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14752            // are envelope_size bytes.
14753            let cur_offset: usize = (5 - 1) * envelope_size;
14754
14755            // Zero reserved fields.
14756            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14757
14758            // Safety:
14759            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14760            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14761            //   envelope_size bytes, there is always sufficient room.
14762            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
14763                self.dependency_type
14764                    .as_ref()
14765                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
14766                encoder,
14767                offset + cur_offset,
14768                depth,
14769            )?;
14770
14771            _prev_end_offset = cur_offset + envelope_size;
14772            if 6 > max_ordinal {
14773                return Ok(());
14774            }
14775
14776            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14777            // are envelope_size bytes.
14778            let cur_offset: usize = (6 - 1) * envelope_size;
14779
14780            // Zero reserved fields.
14781            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14782
14783            // Safety:
14784            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14785            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14786            //   envelope_size bytes, there is always sufficient room.
14787            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
14788                self.availability
14789                    .as_ref()
14790                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
14791                encoder,
14792                offset + cur_offset,
14793                depth,
14794            )?;
14795
14796            _prev_end_offset = cur_offset + envelope_size;
14797            if 7 > max_ordinal {
14798                return Ok(());
14799            }
14800
14801            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14802            // are envelope_size bytes.
14803            let cur_offset: usize = (7 - 1) * envelope_size;
14804
14805            // Zero reserved fields.
14806            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14807
14808            // Safety:
14809            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14810            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14811            //   envelope_size bytes, there is always sufficient room.
14812            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
14813            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
14814            encoder, offset + cur_offset, depth
14815        )?;
14816
14817            _prev_end_offset = cur_offset + envelope_size;
14818
14819            Ok(())
14820        }
14821    }
14822
14823    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDictionary {
14824        #[inline(always)]
14825        fn new_empty() -> Self {
14826            Self::default()
14827        }
14828
14829        unsafe fn decode(
14830            &mut self,
14831            decoder: &mut fidl::encoding::Decoder<'_, D>,
14832            offset: usize,
14833            mut depth: fidl::encoding::Depth,
14834        ) -> fidl::Result<()> {
14835            decoder.debug_check_bounds::<Self>(offset);
14836            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14837                None => return Err(fidl::Error::NotNullable),
14838                Some(len) => len,
14839            };
14840            // Calling decoder.out_of_line_offset(0) is not allowed.
14841            if len == 0 {
14842                return Ok(());
14843            };
14844            depth.increment()?;
14845            let envelope_size = 8;
14846            let bytes_len = len * envelope_size;
14847            let offset = decoder.out_of_line_offset(bytes_len)?;
14848            // Decode the envelope for each type.
14849            let mut _next_ordinal_to_read = 0;
14850            let mut next_offset = offset;
14851            let end_offset = offset + bytes_len;
14852            _next_ordinal_to_read += 1;
14853            if next_offset >= end_offset {
14854                return Ok(());
14855            }
14856
14857            // Decode unknown envelopes for gaps in ordinals.
14858            while _next_ordinal_to_read < 1 {
14859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14860                _next_ordinal_to_read += 1;
14861                next_offset += envelope_size;
14862            }
14863
14864            let next_out_of_line = decoder.next_out_of_line();
14865            let handles_before = decoder.remaining_handles();
14866            if let Some((inlined, num_bytes, num_handles)) =
14867                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14868            {
14869                let member_inline_size =
14870                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14871                if inlined != (member_inline_size <= 4) {
14872                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14873                }
14874                let inner_offset;
14875                let mut inner_depth = depth.clone();
14876                if inlined {
14877                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14878                    inner_offset = next_offset;
14879                } else {
14880                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14881                    inner_depth.increment()?;
14882                }
14883                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14884                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14885                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14886                {
14887                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14888                }
14889                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14890                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14891                }
14892            }
14893
14894            next_offset += envelope_size;
14895            _next_ordinal_to_read += 1;
14896            if next_offset >= end_offset {
14897                return Ok(());
14898            }
14899
14900            // Decode unknown envelopes for gaps in ordinals.
14901            while _next_ordinal_to_read < 2 {
14902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14903                _next_ordinal_to_read += 1;
14904                next_offset += envelope_size;
14905            }
14906
14907            let next_out_of_line = decoder.next_out_of_line();
14908            let handles_before = decoder.remaining_handles();
14909            if let Some((inlined, num_bytes, num_handles)) =
14910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14911            {
14912                let member_inline_size =
14913                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
14914                        decoder.context,
14915                    );
14916                if inlined != (member_inline_size <= 4) {
14917                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14918                }
14919                let inner_offset;
14920                let mut inner_depth = depth.clone();
14921                if inlined {
14922                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14923                    inner_offset = next_offset;
14924                } else {
14925                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14926                    inner_depth.increment()?;
14927                }
14928                let val_ref = self
14929                    .source_name
14930                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
14931                fidl::decode!(
14932                    fidl::encoding::BoundedString<100>,
14933                    D,
14934                    val_ref,
14935                    decoder,
14936                    inner_offset,
14937                    inner_depth
14938                )?;
14939                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14940                {
14941                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14942                }
14943                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14944                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14945                }
14946            }
14947
14948            next_offset += envelope_size;
14949            _next_ordinal_to_read += 1;
14950            if next_offset >= end_offset {
14951                return Ok(());
14952            }
14953
14954            // Decode unknown envelopes for gaps in ordinals.
14955            while _next_ordinal_to_read < 3 {
14956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14957                _next_ordinal_to_read += 1;
14958                next_offset += envelope_size;
14959            }
14960
14961            let next_out_of_line = decoder.next_out_of_line();
14962            let handles_before = decoder.remaining_handles();
14963            if let Some((inlined, num_bytes, num_handles)) =
14964                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14965            {
14966                let member_inline_size =
14967                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14968                if inlined != (member_inline_size <= 4) {
14969                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14970                }
14971                let inner_offset;
14972                let mut inner_depth = depth.clone();
14973                if inlined {
14974                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14975                    inner_offset = next_offset;
14976                } else {
14977                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14978                    inner_depth.increment()?;
14979                }
14980                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
14981                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
14982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14983                {
14984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14985                }
14986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14988                }
14989            }
14990
14991            next_offset += envelope_size;
14992            _next_ordinal_to_read += 1;
14993            if next_offset >= end_offset {
14994                return Ok(());
14995            }
14996
14997            // Decode unknown envelopes for gaps in ordinals.
14998            while _next_ordinal_to_read < 4 {
14999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15000                _next_ordinal_to_read += 1;
15001                next_offset += envelope_size;
15002            }
15003
15004            let next_out_of_line = decoder.next_out_of_line();
15005            let handles_before = decoder.remaining_handles();
15006            if let Some((inlined, num_bytes, num_handles)) =
15007                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15008            {
15009                let member_inline_size =
15010                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15011                        decoder.context,
15012                    );
15013                if inlined != (member_inline_size <= 4) {
15014                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15015                }
15016                let inner_offset;
15017                let mut inner_depth = depth.clone();
15018                if inlined {
15019                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15020                    inner_offset = next_offset;
15021                } else {
15022                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15023                    inner_depth.increment()?;
15024                }
15025                let val_ref = self
15026                    .target_name
15027                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15028                fidl::decode!(
15029                    fidl::encoding::BoundedString<100>,
15030                    D,
15031                    val_ref,
15032                    decoder,
15033                    inner_offset,
15034                    inner_depth
15035                )?;
15036                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15037                {
15038                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15039                }
15040                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15041                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15042                }
15043            }
15044
15045            next_offset += envelope_size;
15046            _next_ordinal_to_read += 1;
15047            if next_offset >= end_offset {
15048                return Ok(());
15049            }
15050
15051            // Decode unknown envelopes for gaps in ordinals.
15052            while _next_ordinal_to_read < 5 {
15053                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15054                _next_ordinal_to_read += 1;
15055                next_offset += envelope_size;
15056            }
15057
15058            let next_out_of_line = decoder.next_out_of_line();
15059            let handles_before = decoder.remaining_handles();
15060            if let Some((inlined, num_bytes, num_handles)) =
15061                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15062            {
15063                let member_inline_size =
15064                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15065                if inlined != (member_inline_size <= 4) {
15066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15067                }
15068                let inner_offset;
15069                let mut inner_depth = depth.clone();
15070                if inlined {
15071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15072                    inner_offset = next_offset;
15073                } else {
15074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15075                    inner_depth.increment()?;
15076                }
15077                let val_ref =
15078                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
15079                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
15080                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15081                {
15082                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15083                }
15084                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15085                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15086                }
15087            }
15088
15089            next_offset += envelope_size;
15090            _next_ordinal_to_read += 1;
15091            if next_offset >= end_offset {
15092                return Ok(());
15093            }
15094
15095            // Decode unknown envelopes for gaps in ordinals.
15096            while _next_ordinal_to_read < 6 {
15097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15098                _next_ordinal_to_read += 1;
15099                next_offset += envelope_size;
15100            }
15101
15102            let next_out_of_line = decoder.next_out_of_line();
15103            let handles_before = decoder.remaining_handles();
15104            if let Some((inlined, num_bytes, num_handles)) =
15105                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15106            {
15107                let member_inline_size =
15108                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15109                if inlined != (member_inline_size <= 4) {
15110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15111                }
15112                let inner_offset;
15113                let mut inner_depth = depth.clone();
15114                if inlined {
15115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15116                    inner_offset = next_offset;
15117                } else {
15118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15119                    inner_depth.increment()?;
15120                }
15121                let val_ref =
15122                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
15123                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
15124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15125                {
15126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15127                }
15128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15130                }
15131            }
15132
15133            next_offset += envelope_size;
15134            _next_ordinal_to_read += 1;
15135            if next_offset >= end_offset {
15136                return Ok(());
15137            }
15138
15139            // Decode unknown envelopes for gaps in ordinals.
15140            while _next_ordinal_to_read < 7 {
15141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15142                _next_ordinal_to_read += 1;
15143                next_offset += envelope_size;
15144            }
15145
15146            let next_out_of_line = decoder.next_out_of_line();
15147            let handles_before = decoder.remaining_handles();
15148            if let Some((inlined, num_bytes, num_handles)) =
15149                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15150            {
15151                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15152                if inlined != (member_inline_size <= 4) {
15153                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15154                }
15155                let inner_offset;
15156                let mut inner_depth = depth.clone();
15157                if inlined {
15158                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15159                    inner_offset = next_offset;
15160                } else {
15161                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15162                    inner_depth.increment()?;
15163                }
15164                let val_ref = self.source_dictionary.get_or_insert_with(|| {
15165                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
15166                });
15167                fidl::decode!(
15168                    fidl::encoding::BoundedString<1024>,
15169                    D,
15170                    val_ref,
15171                    decoder,
15172                    inner_offset,
15173                    inner_depth
15174                )?;
15175                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15176                {
15177                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15178                }
15179                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15180                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15181                }
15182            }
15183
15184            next_offset += envelope_size;
15185
15186            // Decode the remaining unknown envelopes.
15187            while next_offset < end_offset {
15188                _next_ordinal_to_read += 1;
15189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15190                next_offset += envelope_size;
15191            }
15192
15193            Ok(())
15194        }
15195    }
15196
15197    impl OfferDirectory {
15198        #[inline(always)]
15199        fn max_ordinal_present(&self) -> u64 {
15200            if let Some(_) = self.source_dictionary {
15201                return 9;
15202            }
15203            if let Some(_) = self.availability {
15204                return 8;
15205            }
15206            if let Some(_) = self.dependency_type {
15207                return 7;
15208            }
15209            if let Some(_) = self.subdir {
15210                return 6;
15211            }
15212            if let Some(_) = self.rights {
15213                return 5;
15214            }
15215            if let Some(_) = self.target_name {
15216                return 4;
15217            }
15218            if let Some(_) = self.target {
15219                return 3;
15220            }
15221            if let Some(_) = self.source_name {
15222                return 2;
15223            }
15224            if let Some(_) = self.source {
15225                return 1;
15226            }
15227            0
15228        }
15229    }
15230
15231    impl fidl::encoding::ValueTypeMarker for OfferDirectory {
15232        type Borrowed<'a> = &'a Self;
15233        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15234            value
15235        }
15236    }
15237
15238    unsafe impl fidl::encoding::TypeMarker for OfferDirectory {
15239        type Owned = Self;
15240
15241        #[inline(always)]
15242        fn inline_align(_context: fidl::encoding::Context) -> usize {
15243            8
15244        }
15245
15246        #[inline(always)]
15247        fn inline_size(_context: fidl::encoding::Context) -> usize {
15248            16
15249        }
15250    }
15251
15252    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferDirectory, D>
15253        for &OfferDirectory
15254    {
15255        unsafe fn encode(
15256            self,
15257            encoder: &mut fidl::encoding::Encoder<'_, D>,
15258            offset: usize,
15259            mut depth: fidl::encoding::Depth,
15260        ) -> fidl::Result<()> {
15261            encoder.debug_check_bounds::<OfferDirectory>(offset);
15262            // Vector header
15263            let max_ordinal: u64 = self.max_ordinal_present();
15264            encoder.write_num(max_ordinal, offset);
15265            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15266            // Calling encoder.out_of_line_offset(0) is not allowed.
15267            if max_ordinal == 0 {
15268                return Ok(());
15269            }
15270            depth.increment()?;
15271            let envelope_size = 8;
15272            let bytes_len = max_ordinal as usize * envelope_size;
15273            #[allow(unused_variables)]
15274            let offset = encoder.out_of_line_offset(bytes_len);
15275            let mut _prev_end_offset: usize = 0;
15276            if 1 > max_ordinal {
15277                return Ok(());
15278            }
15279
15280            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15281            // are envelope_size bytes.
15282            let cur_offset: usize = (1 - 1) * envelope_size;
15283
15284            // Zero reserved fields.
15285            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15286
15287            // Safety:
15288            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15289            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15290            //   envelope_size bytes, there is always sufficient room.
15291            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15292                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15293                encoder,
15294                offset + cur_offset,
15295                depth,
15296            )?;
15297
15298            _prev_end_offset = cur_offset + envelope_size;
15299            if 2 > max_ordinal {
15300                return Ok(());
15301            }
15302
15303            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15304            // are envelope_size bytes.
15305            let cur_offset: usize = (2 - 1) * envelope_size;
15306
15307            // Zero reserved fields.
15308            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15309
15310            // Safety:
15311            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15312            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15313            //   envelope_size bytes, there is always sufficient room.
15314            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15315                self.source_name.as_ref().map(
15316                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15317                ),
15318                encoder,
15319                offset + cur_offset,
15320                depth,
15321            )?;
15322
15323            _prev_end_offset = cur_offset + envelope_size;
15324            if 3 > max_ordinal {
15325                return Ok(());
15326            }
15327
15328            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15329            // are envelope_size bytes.
15330            let cur_offset: usize = (3 - 1) * envelope_size;
15331
15332            // Zero reserved fields.
15333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15334
15335            // Safety:
15336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15338            //   envelope_size bytes, there is always sufficient room.
15339            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
15340                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
15341                encoder,
15342                offset + cur_offset,
15343                depth,
15344            )?;
15345
15346            _prev_end_offset = cur_offset + envelope_size;
15347            if 4 > max_ordinal {
15348                return Ok(());
15349            }
15350
15351            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15352            // are envelope_size bytes.
15353            let cur_offset: usize = (4 - 1) * envelope_size;
15354
15355            // Zero reserved fields.
15356            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15357
15358            // Safety:
15359            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15360            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15361            //   envelope_size bytes, there is always sufficient room.
15362            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
15363                self.target_name.as_ref().map(
15364                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
15365                ),
15366                encoder,
15367                offset + cur_offset,
15368                depth,
15369            )?;
15370
15371            _prev_end_offset = cur_offset + envelope_size;
15372            if 5 > max_ordinal {
15373                return Ok(());
15374            }
15375
15376            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15377            // are envelope_size bytes.
15378            let cur_offset: usize = (5 - 1) * envelope_size;
15379
15380            // Zero reserved fields.
15381            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15382
15383            // Safety:
15384            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15385            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15386            //   envelope_size bytes, there is always sufficient room.
15387            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
15388            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
15389            encoder, offset + cur_offset, depth
15390        )?;
15391
15392            _prev_end_offset = cur_offset + envelope_size;
15393            if 6 > max_ordinal {
15394                return Ok(());
15395            }
15396
15397            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15398            // are envelope_size bytes.
15399            let cur_offset: usize = (6 - 1) * envelope_size;
15400
15401            // Zero reserved fields.
15402            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15403
15404            // Safety:
15405            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15406            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15407            //   envelope_size bytes, there is always sufficient room.
15408            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15409            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15410            encoder, offset + cur_offset, depth
15411        )?;
15412
15413            _prev_end_offset = cur_offset + envelope_size;
15414            if 7 > max_ordinal {
15415                return Ok(());
15416            }
15417
15418            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15419            // are envelope_size bytes.
15420            let cur_offset: usize = (7 - 1) * envelope_size;
15421
15422            // Zero reserved fields.
15423            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15424
15425            // Safety:
15426            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15427            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15428            //   envelope_size bytes, there is always sufficient room.
15429            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
15430                self.dependency_type
15431                    .as_ref()
15432                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
15433                encoder,
15434                offset + cur_offset,
15435                depth,
15436            )?;
15437
15438            _prev_end_offset = cur_offset + envelope_size;
15439            if 8 > max_ordinal {
15440                return Ok(());
15441            }
15442
15443            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15444            // are envelope_size bytes.
15445            let cur_offset: usize = (8 - 1) * envelope_size;
15446
15447            // Zero reserved fields.
15448            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15449
15450            // Safety:
15451            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15452            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15453            //   envelope_size bytes, there is always sufficient room.
15454            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
15455                self.availability
15456                    .as_ref()
15457                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
15458                encoder,
15459                offset + cur_offset,
15460                depth,
15461            )?;
15462
15463            _prev_end_offset = cur_offset + envelope_size;
15464            if 9 > max_ordinal {
15465                return Ok(());
15466            }
15467
15468            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15469            // are envelope_size bytes.
15470            let cur_offset: usize = (9 - 1) * envelope_size;
15471
15472            // Zero reserved fields.
15473            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15474
15475            // Safety:
15476            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15477            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15478            //   envelope_size bytes, there is always sufficient room.
15479            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
15480            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
15481            encoder, offset + cur_offset, depth
15482        )?;
15483
15484            _prev_end_offset = cur_offset + envelope_size;
15485
15486            Ok(())
15487        }
15488    }
15489
15490    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferDirectory {
15491        #[inline(always)]
15492        fn new_empty() -> Self {
15493            Self::default()
15494        }
15495
15496        unsafe fn decode(
15497            &mut self,
15498            decoder: &mut fidl::encoding::Decoder<'_, D>,
15499            offset: usize,
15500            mut depth: fidl::encoding::Depth,
15501        ) -> fidl::Result<()> {
15502            decoder.debug_check_bounds::<Self>(offset);
15503            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15504                None => return Err(fidl::Error::NotNullable),
15505                Some(len) => len,
15506            };
15507            // Calling decoder.out_of_line_offset(0) is not allowed.
15508            if len == 0 {
15509                return Ok(());
15510            };
15511            depth.increment()?;
15512            let envelope_size = 8;
15513            let bytes_len = len * envelope_size;
15514            let offset = decoder.out_of_line_offset(bytes_len)?;
15515            // Decode the envelope for each type.
15516            let mut _next_ordinal_to_read = 0;
15517            let mut next_offset = offset;
15518            let end_offset = offset + bytes_len;
15519            _next_ordinal_to_read += 1;
15520            if next_offset >= end_offset {
15521                return Ok(());
15522            }
15523
15524            // Decode unknown envelopes for gaps in ordinals.
15525            while _next_ordinal_to_read < 1 {
15526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15527                _next_ordinal_to_read += 1;
15528                next_offset += envelope_size;
15529            }
15530
15531            let next_out_of_line = decoder.next_out_of_line();
15532            let handles_before = decoder.remaining_handles();
15533            if let Some((inlined, num_bytes, num_handles)) =
15534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15535            {
15536                let member_inline_size =
15537                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15538                if inlined != (member_inline_size <= 4) {
15539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15540                }
15541                let inner_offset;
15542                let mut inner_depth = depth.clone();
15543                if inlined {
15544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15545                    inner_offset = next_offset;
15546                } else {
15547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15548                    inner_depth.increment()?;
15549                }
15550                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15551                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15553                {
15554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15555                }
15556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15558                }
15559            }
15560
15561            next_offset += envelope_size;
15562            _next_ordinal_to_read += 1;
15563            if next_offset >= end_offset {
15564                return Ok(());
15565            }
15566
15567            // Decode unknown envelopes for gaps in ordinals.
15568            while _next_ordinal_to_read < 2 {
15569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15570                _next_ordinal_to_read += 1;
15571                next_offset += envelope_size;
15572            }
15573
15574            let next_out_of_line = decoder.next_out_of_line();
15575            let handles_before = decoder.remaining_handles();
15576            if let Some((inlined, num_bytes, num_handles)) =
15577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15578            {
15579                let member_inline_size =
15580                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15581                        decoder.context,
15582                    );
15583                if inlined != (member_inline_size <= 4) {
15584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15585                }
15586                let inner_offset;
15587                let mut inner_depth = depth.clone();
15588                if inlined {
15589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15590                    inner_offset = next_offset;
15591                } else {
15592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15593                    inner_depth.increment()?;
15594                }
15595                let val_ref = self
15596                    .source_name
15597                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15598                fidl::decode!(
15599                    fidl::encoding::BoundedString<100>,
15600                    D,
15601                    val_ref,
15602                    decoder,
15603                    inner_offset,
15604                    inner_depth
15605                )?;
15606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15607                {
15608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15609                }
15610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15612                }
15613            }
15614
15615            next_offset += envelope_size;
15616            _next_ordinal_to_read += 1;
15617            if next_offset >= end_offset {
15618                return Ok(());
15619            }
15620
15621            // Decode unknown envelopes for gaps in ordinals.
15622            while _next_ordinal_to_read < 3 {
15623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15624                _next_ordinal_to_read += 1;
15625                next_offset += envelope_size;
15626            }
15627
15628            let next_out_of_line = decoder.next_out_of_line();
15629            let handles_before = decoder.remaining_handles();
15630            if let Some((inlined, num_bytes, num_handles)) =
15631                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15632            {
15633                let member_inline_size =
15634                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15635                if inlined != (member_inline_size <= 4) {
15636                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15637                }
15638                let inner_offset;
15639                let mut inner_depth = depth.clone();
15640                if inlined {
15641                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15642                    inner_offset = next_offset;
15643                } else {
15644                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15645                    inner_depth.increment()?;
15646                }
15647                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
15648                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
15649                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15650                {
15651                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15652                }
15653                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15654                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15655                }
15656            }
15657
15658            next_offset += envelope_size;
15659            _next_ordinal_to_read += 1;
15660            if next_offset >= end_offset {
15661                return Ok(());
15662            }
15663
15664            // Decode unknown envelopes for gaps in ordinals.
15665            while _next_ordinal_to_read < 4 {
15666                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15667                _next_ordinal_to_read += 1;
15668                next_offset += envelope_size;
15669            }
15670
15671            let next_out_of_line = decoder.next_out_of_line();
15672            let handles_before = decoder.remaining_handles();
15673            if let Some((inlined, num_bytes, num_handles)) =
15674                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15675            {
15676                let member_inline_size =
15677                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
15678                        decoder.context,
15679                    );
15680                if inlined != (member_inline_size <= 4) {
15681                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15682                }
15683                let inner_offset;
15684                let mut inner_depth = depth.clone();
15685                if inlined {
15686                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15687                    inner_offset = next_offset;
15688                } else {
15689                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15690                    inner_depth.increment()?;
15691                }
15692                let val_ref = self
15693                    .target_name
15694                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
15695                fidl::decode!(
15696                    fidl::encoding::BoundedString<100>,
15697                    D,
15698                    val_ref,
15699                    decoder,
15700                    inner_offset,
15701                    inner_depth
15702                )?;
15703                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15704                {
15705                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15706                }
15707                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15708                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15709                }
15710            }
15711
15712            next_offset += envelope_size;
15713            _next_ordinal_to_read += 1;
15714            if next_offset >= end_offset {
15715                return Ok(());
15716            }
15717
15718            // Decode unknown envelopes for gaps in ordinals.
15719            while _next_ordinal_to_read < 5 {
15720                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15721                _next_ordinal_to_read += 1;
15722                next_offset += envelope_size;
15723            }
15724
15725            let next_out_of_line = decoder.next_out_of_line();
15726            let handles_before = decoder.remaining_handles();
15727            if let Some((inlined, num_bytes, num_handles)) =
15728                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15729            {
15730                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15731                if inlined != (member_inline_size <= 4) {
15732                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15733                }
15734                let inner_offset;
15735                let mut inner_depth = depth.clone();
15736                if inlined {
15737                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15738                    inner_offset = next_offset;
15739                } else {
15740                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15741                    inner_depth.increment()?;
15742                }
15743                let val_ref = self.rights.get_or_insert_with(|| {
15744                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
15745                });
15746                fidl::decode!(
15747                    fidl_fuchsia_io__common::Operations,
15748                    D,
15749                    val_ref,
15750                    decoder,
15751                    inner_offset,
15752                    inner_depth
15753                )?;
15754                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15755                {
15756                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15757                }
15758                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15759                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15760                }
15761            }
15762
15763            next_offset += envelope_size;
15764            _next_ordinal_to_read += 1;
15765            if next_offset >= end_offset {
15766                return Ok(());
15767            }
15768
15769            // Decode unknown envelopes for gaps in ordinals.
15770            while _next_ordinal_to_read < 6 {
15771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15772                _next_ordinal_to_read += 1;
15773                next_offset += envelope_size;
15774            }
15775
15776            let next_out_of_line = decoder.next_out_of_line();
15777            let handles_before = decoder.remaining_handles();
15778            if let Some((inlined, num_bytes, num_handles)) =
15779                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15780            {
15781                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15782                if inlined != (member_inline_size <= 4) {
15783                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15784                }
15785                let inner_offset;
15786                let mut inner_depth = depth.clone();
15787                if inlined {
15788                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15789                    inner_offset = next_offset;
15790                } else {
15791                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15792                    inner_depth.increment()?;
15793                }
15794                let val_ref = self.subdir.get_or_insert_with(|| {
15795                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
15796                });
15797                fidl::decode!(
15798                    fidl::encoding::BoundedString<1024>,
15799                    D,
15800                    val_ref,
15801                    decoder,
15802                    inner_offset,
15803                    inner_depth
15804                )?;
15805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15806                {
15807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15808                }
15809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15811                }
15812            }
15813
15814            next_offset += envelope_size;
15815            _next_ordinal_to_read += 1;
15816            if next_offset >= end_offset {
15817                return Ok(());
15818            }
15819
15820            // Decode unknown envelopes for gaps in ordinals.
15821            while _next_ordinal_to_read < 7 {
15822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15823                _next_ordinal_to_read += 1;
15824                next_offset += envelope_size;
15825            }
15826
15827            let next_out_of_line = decoder.next_out_of_line();
15828            let handles_before = decoder.remaining_handles();
15829            if let Some((inlined, num_bytes, num_handles)) =
15830                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15831            {
15832                let member_inline_size =
15833                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15834                if inlined != (member_inline_size <= 4) {
15835                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15836                }
15837                let inner_offset;
15838                let mut inner_depth = depth.clone();
15839                if inlined {
15840                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15841                    inner_offset = next_offset;
15842                } else {
15843                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15844                    inner_depth.increment()?;
15845                }
15846                let val_ref =
15847                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
15848                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
15849                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15850                {
15851                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15852                }
15853                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15854                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15855                }
15856            }
15857
15858            next_offset += envelope_size;
15859            _next_ordinal_to_read += 1;
15860            if next_offset >= end_offset {
15861                return Ok(());
15862            }
15863
15864            // Decode unknown envelopes for gaps in ordinals.
15865            while _next_ordinal_to_read < 8 {
15866                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15867                _next_ordinal_to_read += 1;
15868                next_offset += envelope_size;
15869            }
15870
15871            let next_out_of_line = decoder.next_out_of_line();
15872            let handles_before = decoder.remaining_handles();
15873            if let Some((inlined, num_bytes, num_handles)) =
15874                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15875            {
15876                let member_inline_size =
15877                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15878                if inlined != (member_inline_size <= 4) {
15879                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15880                }
15881                let inner_offset;
15882                let mut inner_depth = depth.clone();
15883                if inlined {
15884                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15885                    inner_offset = next_offset;
15886                } else {
15887                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15888                    inner_depth.increment()?;
15889                }
15890                let val_ref =
15891                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
15892                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
15893                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15894                {
15895                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15896                }
15897                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15898                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15899                }
15900            }
15901
15902            next_offset += envelope_size;
15903            _next_ordinal_to_read += 1;
15904            if next_offset >= end_offset {
15905                return Ok(());
15906            }
15907
15908            // Decode unknown envelopes for gaps in ordinals.
15909            while _next_ordinal_to_read < 9 {
15910                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15911                _next_ordinal_to_read += 1;
15912                next_offset += envelope_size;
15913            }
15914
15915            let next_out_of_line = decoder.next_out_of_line();
15916            let handles_before = decoder.remaining_handles();
15917            if let Some((inlined, num_bytes, num_handles)) =
15918                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15919            {
15920                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15921                if inlined != (member_inline_size <= 4) {
15922                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15923                }
15924                let inner_offset;
15925                let mut inner_depth = depth.clone();
15926                if inlined {
15927                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15928                    inner_offset = next_offset;
15929                } else {
15930                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15931                    inner_depth.increment()?;
15932                }
15933                let val_ref = self.source_dictionary.get_or_insert_with(|| {
15934                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
15935                });
15936                fidl::decode!(
15937                    fidl::encoding::BoundedString<1024>,
15938                    D,
15939                    val_ref,
15940                    decoder,
15941                    inner_offset,
15942                    inner_depth
15943                )?;
15944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15945                {
15946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15947                }
15948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15950                }
15951            }
15952
15953            next_offset += envelope_size;
15954
15955            // Decode the remaining unknown envelopes.
15956            while next_offset < end_offset {
15957                _next_ordinal_to_read += 1;
15958                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15959                next_offset += envelope_size;
15960            }
15961
15962            Ok(())
15963        }
15964    }
15965
15966    impl OfferEventStream {
15967        #[inline(always)]
15968        fn max_ordinal_present(&self) -> u64 {
15969            if let Some(_) = self.availability {
15970                return 7;
15971            }
15972            if let Some(_) = self.target_name {
15973                return 5;
15974            }
15975            if let Some(_) = self.target {
15976                return 4;
15977            }
15978            if let Some(_) = self.scope {
15979                return 3;
15980            }
15981            if let Some(_) = self.source_name {
15982                return 2;
15983            }
15984            if let Some(_) = self.source {
15985                return 1;
15986            }
15987            0
15988        }
15989    }
15990
15991    impl fidl::encoding::ValueTypeMarker for OfferEventStream {
15992        type Borrowed<'a> = &'a Self;
15993        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15994            value
15995        }
15996    }
15997
15998    unsafe impl fidl::encoding::TypeMarker for OfferEventStream {
15999        type Owned = Self;
16000
16001        #[inline(always)]
16002        fn inline_align(_context: fidl::encoding::Context) -> usize {
16003            8
16004        }
16005
16006        #[inline(always)]
16007        fn inline_size(_context: fidl::encoding::Context) -> usize {
16008            16
16009        }
16010    }
16011
16012    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferEventStream, D>
16013        for &OfferEventStream
16014    {
16015        unsafe fn encode(
16016            self,
16017            encoder: &mut fidl::encoding::Encoder<'_, D>,
16018            offset: usize,
16019            mut depth: fidl::encoding::Depth,
16020        ) -> fidl::Result<()> {
16021            encoder.debug_check_bounds::<OfferEventStream>(offset);
16022            // Vector header
16023            let max_ordinal: u64 = self.max_ordinal_present();
16024            encoder.write_num(max_ordinal, offset);
16025            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16026            // Calling encoder.out_of_line_offset(0) is not allowed.
16027            if max_ordinal == 0 {
16028                return Ok(());
16029            }
16030            depth.increment()?;
16031            let envelope_size = 8;
16032            let bytes_len = max_ordinal as usize * envelope_size;
16033            #[allow(unused_variables)]
16034            let offset = encoder.out_of_line_offset(bytes_len);
16035            let mut _prev_end_offset: usize = 0;
16036            if 1 > max_ordinal {
16037                return Ok(());
16038            }
16039
16040            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16041            // are envelope_size bytes.
16042            let cur_offset: usize = (1 - 1) * envelope_size;
16043
16044            // Zero reserved fields.
16045            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16046
16047            // Safety:
16048            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16049            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16050            //   envelope_size bytes, there is always sufficient room.
16051            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16052                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16053                encoder,
16054                offset + cur_offset,
16055                depth,
16056            )?;
16057
16058            _prev_end_offset = cur_offset + envelope_size;
16059            if 2 > max_ordinal {
16060                return Ok(());
16061            }
16062
16063            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16064            // are envelope_size bytes.
16065            let cur_offset: usize = (2 - 1) * envelope_size;
16066
16067            // Zero reserved fields.
16068            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16069
16070            // Safety:
16071            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16072            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16073            //   envelope_size bytes, there is always sufficient room.
16074            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16075                self.source_name.as_ref().map(
16076                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16077                ),
16078                encoder,
16079                offset + cur_offset,
16080                depth,
16081            )?;
16082
16083            _prev_end_offset = cur_offset + envelope_size;
16084            if 3 > max_ordinal {
16085                return Ok(());
16086            }
16087
16088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16089            // are envelope_size bytes.
16090            let cur_offset: usize = (3 - 1) * envelope_size;
16091
16092            // Zero reserved fields.
16093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16094
16095            // Safety:
16096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16098            //   envelope_size bytes, there is always sufficient room.
16099            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Ref>, D>(
16100            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
16101            encoder, offset + cur_offset, depth
16102        )?;
16103
16104            _prev_end_offset = cur_offset + envelope_size;
16105            if 4 > max_ordinal {
16106                return Ok(());
16107            }
16108
16109            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16110            // are envelope_size bytes.
16111            let cur_offset: usize = (4 - 1) * envelope_size;
16112
16113            // Zero reserved fields.
16114            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16115
16116            // Safety:
16117            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16118            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16119            //   envelope_size bytes, there is always sufficient room.
16120            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16121                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16122                encoder,
16123                offset + cur_offset,
16124                depth,
16125            )?;
16126
16127            _prev_end_offset = cur_offset + envelope_size;
16128            if 5 > max_ordinal {
16129                return Ok(());
16130            }
16131
16132            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16133            // are envelope_size bytes.
16134            let cur_offset: usize = (5 - 1) * envelope_size;
16135
16136            // Zero reserved fields.
16137            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16138
16139            // Safety:
16140            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16141            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16142            //   envelope_size bytes, there is always sufficient room.
16143            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16144                self.target_name.as_ref().map(
16145                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16146                ),
16147                encoder,
16148                offset + cur_offset,
16149                depth,
16150            )?;
16151
16152            _prev_end_offset = cur_offset + envelope_size;
16153            if 7 > max_ordinal {
16154                return Ok(());
16155            }
16156
16157            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16158            // are envelope_size bytes.
16159            let cur_offset: usize = (7 - 1) * envelope_size;
16160
16161            // Zero reserved fields.
16162            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16163
16164            // Safety:
16165            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16166            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16167            //   envelope_size bytes, there is always sufficient room.
16168            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
16169                self.availability
16170                    .as_ref()
16171                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
16172                encoder,
16173                offset + cur_offset,
16174                depth,
16175            )?;
16176
16177            _prev_end_offset = cur_offset + envelope_size;
16178
16179            Ok(())
16180        }
16181    }
16182
16183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferEventStream {
16184        #[inline(always)]
16185        fn new_empty() -> Self {
16186            Self::default()
16187        }
16188
16189        unsafe fn decode(
16190            &mut self,
16191            decoder: &mut fidl::encoding::Decoder<'_, D>,
16192            offset: usize,
16193            mut depth: fidl::encoding::Depth,
16194        ) -> fidl::Result<()> {
16195            decoder.debug_check_bounds::<Self>(offset);
16196            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16197                None => return Err(fidl::Error::NotNullable),
16198                Some(len) => len,
16199            };
16200            // Calling decoder.out_of_line_offset(0) is not allowed.
16201            if len == 0 {
16202                return Ok(());
16203            };
16204            depth.increment()?;
16205            let envelope_size = 8;
16206            let bytes_len = len * envelope_size;
16207            let offset = decoder.out_of_line_offset(bytes_len)?;
16208            // Decode the envelope for each type.
16209            let mut _next_ordinal_to_read = 0;
16210            let mut next_offset = offset;
16211            let end_offset = offset + bytes_len;
16212            _next_ordinal_to_read += 1;
16213            if next_offset >= end_offset {
16214                return Ok(());
16215            }
16216
16217            // Decode unknown envelopes for gaps in ordinals.
16218            while _next_ordinal_to_read < 1 {
16219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16220                _next_ordinal_to_read += 1;
16221                next_offset += envelope_size;
16222            }
16223
16224            let next_out_of_line = decoder.next_out_of_line();
16225            let handles_before = decoder.remaining_handles();
16226            if let Some((inlined, num_bytes, num_handles)) =
16227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16228            {
16229                let member_inline_size =
16230                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16231                if inlined != (member_inline_size <= 4) {
16232                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16233                }
16234                let inner_offset;
16235                let mut inner_depth = depth.clone();
16236                if inlined {
16237                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16238                    inner_offset = next_offset;
16239                } else {
16240                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16241                    inner_depth.increment()?;
16242                }
16243                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16244                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16245                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16246                {
16247                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16248                }
16249                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16250                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16251                }
16252            }
16253
16254            next_offset += envelope_size;
16255            _next_ordinal_to_read += 1;
16256            if next_offset >= end_offset {
16257                return Ok(());
16258            }
16259
16260            // Decode unknown envelopes for gaps in ordinals.
16261            while _next_ordinal_to_read < 2 {
16262                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16263                _next_ordinal_to_read += 1;
16264                next_offset += envelope_size;
16265            }
16266
16267            let next_out_of_line = decoder.next_out_of_line();
16268            let handles_before = decoder.remaining_handles();
16269            if let Some((inlined, num_bytes, num_handles)) =
16270                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16271            {
16272                let member_inline_size =
16273                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16274                        decoder.context,
16275                    );
16276                if inlined != (member_inline_size <= 4) {
16277                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16278                }
16279                let inner_offset;
16280                let mut inner_depth = depth.clone();
16281                if inlined {
16282                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16283                    inner_offset = next_offset;
16284                } else {
16285                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16286                    inner_depth.increment()?;
16287                }
16288                let val_ref = self
16289                    .source_name
16290                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16291                fidl::decode!(
16292                    fidl::encoding::BoundedString<100>,
16293                    D,
16294                    val_ref,
16295                    decoder,
16296                    inner_offset,
16297                    inner_depth
16298                )?;
16299                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16300                {
16301                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16302                }
16303                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16304                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16305                }
16306            }
16307
16308            next_offset += envelope_size;
16309            _next_ordinal_to_read += 1;
16310            if next_offset >= end_offset {
16311                return Ok(());
16312            }
16313
16314            // Decode unknown envelopes for gaps in ordinals.
16315            while _next_ordinal_to_read < 3 {
16316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16317                _next_ordinal_to_read += 1;
16318                next_offset += envelope_size;
16319            }
16320
16321            let next_out_of_line = decoder.next_out_of_line();
16322            let handles_before = decoder.remaining_handles();
16323            if let Some((inlined, num_bytes, num_handles)) =
16324                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16325            {
16326                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16327                if inlined != (member_inline_size <= 4) {
16328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16329                }
16330                let inner_offset;
16331                let mut inner_depth = depth.clone();
16332                if inlined {
16333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16334                    inner_offset = next_offset;
16335                } else {
16336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16337                    inner_depth.increment()?;
16338                }
16339                let val_ref = self.scope.get_or_insert_with(|| {
16340                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
16341                });
16342                fidl::decode!(
16343                    fidl::encoding::UnboundedVector<Ref>,
16344                    D,
16345                    val_ref,
16346                    decoder,
16347                    inner_offset,
16348                    inner_depth
16349                )?;
16350                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16351                {
16352                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16353                }
16354                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16355                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16356                }
16357            }
16358
16359            next_offset += envelope_size;
16360            _next_ordinal_to_read += 1;
16361            if next_offset >= end_offset {
16362                return Ok(());
16363            }
16364
16365            // Decode unknown envelopes for gaps in ordinals.
16366            while _next_ordinal_to_read < 4 {
16367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16368                _next_ordinal_to_read += 1;
16369                next_offset += envelope_size;
16370            }
16371
16372            let next_out_of_line = decoder.next_out_of_line();
16373            let handles_before = decoder.remaining_handles();
16374            if let Some((inlined, num_bytes, num_handles)) =
16375                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16376            {
16377                let member_inline_size =
16378                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16379                if inlined != (member_inline_size <= 4) {
16380                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16381                }
16382                let inner_offset;
16383                let mut inner_depth = depth.clone();
16384                if inlined {
16385                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16386                    inner_offset = next_offset;
16387                } else {
16388                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16389                    inner_depth.increment()?;
16390                }
16391                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16392                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16393                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16394                {
16395                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16396                }
16397                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16398                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16399                }
16400            }
16401
16402            next_offset += envelope_size;
16403            _next_ordinal_to_read += 1;
16404            if next_offset >= end_offset {
16405                return Ok(());
16406            }
16407
16408            // Decode unknown envelopes for gaps in ordinals.
16409            while _next_ordinal_to_read < 5 {
16410                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16411                _next_ordinal_to_read += 1;
16412                next_offset += envelope_size;
16413            }
16414
16415            let next_out_of_line = decoder.next_out_of_line();
16416            let handles_before = decoder.remaining_handles();
16417            if let Some((inlined, num_bytes, num_handles)) =
16418                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16419            {
16420                let member_inline_size =
16421                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16422                        decoder.context,
16423                    );
16424                if inlined != (member_inline_size <= 4) {
16425                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16426                }
16427                let inner_offset;
16428                let mut inner_depth = depth.clone();
16429                if inlined {
16430                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16431                    inner_offset = next_offset;
16432                } else {
16433                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16434                    inner_depth.increment()?;
16435                }
16436                let val_ref = self
16437                    .target_name
16438                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16439                fidl::decode!(
16440                    fidl::encoding::BoundedString<100>,
16441                    D,
16442                    val_ref,
16443                    decoder,
16444                    inner_offset,
16445                    inner_depth
16446                )?;
16447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16448                {
16449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16450                }
16451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16453                }
16454            }
16455
16456            next_offset += envelope_size;
16457            _next_ordinal_to_read += 1;
16458            if next_offset >= end_offset {
16459                return Ok(());
16460            }
16461
16462            // Decode unknown envelopes for gaps in ordinals.
16463            while _next_ordinal_to_read < 7 {
16464                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16465                _next_ordinal_to_read += 1;
16466                next_offset += envelope_size;
16467            }
16468
16469            let next_out_of_line = decoder.next_out_of_line();
16470            let handles_before = decoder.remaining_handles();
16471            if let Some((inlined, num_bytes, num_handles)) =
16472                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16473            {
16474                let member_inline_size =
16475                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16476                if inlined != (member_inline_size <= 4) {
16477                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16478                }
16479                let inner_offset;
16480                let mut inner_depth = depth.clone();
16481                if inlined {
16482                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16483                    inner_offset = next_offset;
16484                } else {
16485                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16486                    inner_depth.increment()?;
16487                }
16488                let val_ref =
16489                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
16490                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
16491                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16492                {
16493                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16494                }
16495                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16496                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16497                }
16498            }
16499
16500            next_offset += envelope_size;
16501
16502            // Decode the remaining unknown envelopes.
16503            while next_offset < end_offset {
16504                _next_ordinal_to_read += 1;
16505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16506                next_offset += envelope_size;
16507            }
16508
16509            Ok(())
16510        }
16511    }
16512
16513    impl OfferProtocol {
16514        #[inline(always)]
16515        fn max_ordinal_present(&self) -> u64 {
16516            if let Some(_) = self.source_dictionary {
16517                return 7;
16518            }
16519            if let Some(_) = self.availability {
16520                return 6;
16521            }
16522            if let Some(_) = self.dependency_type {
16523                return 5;
16524            }
16525            if let Some(_) = self.target_name {
16526                return 4;
16527            }
16528            if let Some(_) = self.target {
16529                return 3;
16530            }
16531            if let Some(_) = self.source_name {
16532                return 2;
16533            }
16534            if let Some(_) = self.source {
16535                return 1;
16536            }
16537            0
16538        }
16539    }
16540
16541    impl fidl::encoding::ValueTypeMarker for OfferProtocol {
16542        type Borrowed<'a> = &'a Self;
16543        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16544            value
16545        }
16546    }
16547
16548    unsafe impl fidl::encoding::TypeMarker for OfferProtocol {
16549        type Owned = Self;
16550
16551        #[inline(always)]
16552        fn inline_align(_context: fidl::encoding::Context) -> usize {
16553            8
16554        }
16555
16556        #[inline(always)]
16557        fn inline_size(_context: fidl::encoding::Context) -> usize {
16558            16
16559        }
16560    }
16561
16562    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferProtocol, D>
16563        for &OfferProtocol
16564    {
16565        unsafe fn encode(
16566            self,
16567            encoder: &mut fidl::encoding::Encoder<'_, D>,
16568            offset: usize,
16569            mut depth: fidl::encoding::Depth,
16570        ) -> fidl::Result<()> {
16571            encoder.debug_check_bounds::<OfferProtocol>(offset);
16572            // Vector header
16573            let max_ordinal: u64 = self.max_ordinal_present();
16574            encoder.write_num(max_ordinal, offset);
16575            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16576            // Calling encoder.out_of_line_offset(0) is not allowed.
16577            if max_ordinal == 0 {
16578                return Ok(());
16579            }
16580            depth.increment()?;
16581            let envelope_size = 8;
16582            let bytes_len = max_ordinal as usize * envelope_size;
16583            #[allow(unused_variables)]
16584            let offset = encoder.out_of_line_offset(bytes_len);
16585            let mut _prev_end_offset: usize = 0;
16586            if 1 > max_ordinal {
16587                return Ok(());
16588            }
16589
16590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16591            // are envelope_size bytes.
16592            let cur_offset: usize = (1 - 1) * envelope_size;
16593
16594            // Zero reserved fields.
16595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16596
16597            // Safety:
16598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16600            //   envelope_size bytes, there is always sufficient room.
16601            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16602                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16603                encoder,
16604                offset + cur_offset,
16605                depth,
16606            )?;
16607
16608            _prev_end_offset = cur_offset + envelope_size;
16609            if 2 > max_ordinal {
16610                return Ok(());
16611            }
16612
16613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16614            // are envelope_size bytes.
16615            let cur_offset: usize = (2 - 1) * envelope_size;
16616
16617            // Zero reserved fields.
16618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16619
16620            // Safety:
16621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16623            //   envelope_size bytes, there is always sufficient room.
16624            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16625                self.source_name.as_ref().map(
16626                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16627                ),
16628                encoder,
16629                offset + cur_offset,
16630                depth,
16631            )?;
16632
16633            _prev_end_offset = cur_offset + envelope_size;
16634            if 3 > max_ordinal {
16635                return Ok(());
16636            }
16637
16638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16639            // are envelope_size bytes.
16640            let cur_offset: usize = (3 - 1) * envelope_size;
16641
16642            // Zero reserved fields.
16643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16644
16645            // Safety:
16646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16648            //   envelope_size bytes, there is always sufficient room.
16649            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
16650                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
16651                encoder,
16652                offset + cur_offset,
16653                depth,
16654            )?;
16655
16656            _prev_end_offset = cur_offset + envelope_size;
16657            if 4 > max_ordinal {
16658                return Ok(());
16659            }
16660
16661            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16662            // are envelope_size bytes.
16663            let cur_offset: usize = (4 - 1) * envelope_size;
16664
16665            // Zero reserved fields.
16666            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16667
16668            // Safety:
16669            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16670            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16671            //   envelope_size bytes, there is always sufficient room.
16672            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
16673                self.target_name.as_ref().map(
16674                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
16675                ),
16676                encoder,
16677                offset + cur_offset,
16678                depth,
16679            )?;
16680
16681            _prev_end_offset = cur_offset + envelope_size;
16682            if 5 > max_ordinal {
16683                return Ok(());
16684            }
16685
16686            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16687            // are envelope_size bytes.
16688            let cur_offset: usize = (5 - 1) * envelope_size;
16689
16690            // Zero reserved fields.
16691            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16692
16693            // Safety:
16694            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16695            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16696            //   envelope_size bytes, there is always sufficient room.
16697            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
16698                self.dependency_type
16699                    .as_ref()
16700                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
16701                encoder,
16702                offset + cur_offset,
16703                depth,
16704            )?;
16705
16706            _prev_end_offset = cur_offset + envelope_size;
16707            if 6 > max_ordinal {
16708                return Ok(());
16709            }
16710
16711            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16712            // are envelope_size bytes.
16713            let cur_offset: usize = (6 - 1) * envelope_size;
16714
16715            // Zero reserved fields.
16716            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16717
16718            // Safety:
16719            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16720            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16721            //   envelope_size bytes, there is always sufficient room.
16722            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
16723                self.availability
16724                    .as_ref()
16725                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
16726                encoder,
16727                offset + cur_offset,
16728                depth,
16729            )?;
16730
16731            _prev_end_offset = cur_offset + envelope_size;
16732            if 7 > max_ordinal {
16733                return Ok(());
16734            }
16735
16736            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16737            // are envelope_size bytes.
16738            let cur_offset: usize = (7 - 1) * envelope_size;
16739
16740            // Zero reserved fields.
16741            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16742
16743            // Safety:
16744            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16745            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16746            //   envelope_size bytes, there is always sufficient room.
16747            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
16748            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
16749            encoder, offset + cur_offset, depth
16750        )?;
16751
16752            _prev_end_offset = cur_offset + envelope_size;
16753
16754            Ok(())
16755        }
16756    }
16757
16758    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferProtocol {
16759        #[inline(always)]
16760        fn new_empty() -> Self {
16761            Self::default()
16762        }
16763
16764        unsafe fn decode(
16765            &mut self,
16766            decoder: &mut fidl::encoding::Decoder<'_, D>,
16767            offset: usize,
16768            mut depth: fidl::encoding::Depth,
16769        ) -> fidl::Result<()> {
16770            decoder.debug_check_bounds::<Self>(offset);
16771            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16772                None => return Err(fidl::Error::NotNullable),
16773                Some(len) => len,
16774            };
16775            // Calling decoder.out_of_line_offset(0) is not allowed.
16776            if len == 0 {
16777                return Ok(());
16778            };
16779            depth.increment()?;
16780            let envelope_size = 8;
16781            let bytes_len = len * envelope_size;
16782            let offset = decoder.out_of_line_offset(bytes_len)?;
16783            // Decode the envelope for each type.
16784            let mut _next_ordinal_to_read = 0;
16785            let mut next_offset = offset;
16786            let end_offset = offset + bytes_len;
16787            _next_ordinal_to_read += 1;
16788            if next_offset >= end_offset {
16789                return Ok(());
16790            }
16791
16792            // Decode unknown envelopes for gaps in ordinals.
16793            while _next_ordinal_to_read < 1 {
16794                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16795                _next_ordinal_to_read += 1;
16796                next_offset += envelope_size;
16797            }
16798
16799            let next_out_of_line = decoder.next_out_of_line();
16800            let handles_before = decoder.remaining_handles();
16801            if let Some((inlined, num_bytes, num_handles)) =
16802                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16803            {
16804                let member_inline_size =
16805                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16806                if inlined != (member_inline_size <= 4) {
16807                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16808                }
16809                let inner_offset;
16810                let mut inner_depth = depth.clone();
16811                if inlined {
16812                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16813                    inner_offset = next_offset;
16814                } else {
16815                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16816                    inner_depth.increment()?;
16817                }
16818                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16819                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16820                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16821                {
16822                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16823                }
16824                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16825                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16826                }
16827            }
16828
16829            next_offset += envelope_size;
16830            _next_ordinal_to_read += 1;
16831            if next_offset >= end_offset {
16832                return Ok(());
16833            }
16834
16835            // Decode unknown envelopes for gaps in ordinals.
16836            while _next_ordinal_to_read < 2 {
16837                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16838                _next_ordinal_to_read += 1;
16839                next_offset += envelope_size;
16840            }
16841
16842            let next_out_of_line = decoder.next_out_of_line();
16843            let handles_before = decoder.remaining_handles();
16844            if let Some((inlined, num_bytes, num_handles)) =
16845                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16846            {
16847                let member_inline_size =
16848                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16849                        decoder.context,
16850                    );
16851                if inlined != (member_inline_size <= 4) {
16852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16853                }
16854                let inner_offset;
16855                let mut inner_depth = depth.clone();
16856                if inlined {
16857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16858                    inner_offset = next_offset;
16859                } else {
16860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16861                    inner_depth.increment()?;
16862                }
16863                let val_ref = self
16864                    .source_name
16865                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16866                fidl::decode!(
16867                    fidl::encoding::BoundedString<100>,
16868                    D,
16869                    val_ref,
16870                    decoder,
16871                    inner_offset,
16872                    inner_depth
16873                )?;
16874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16875                {
16876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16877                }
16878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16880                }
16881            }
16882
16883            next_offset += envelope_size;
16884            _next_ordinal_to_read += 1;
16885            if next_offset >= end_offset {
16886                return Ok(());
16887            }
16888
16889            // Decode unknown envelopes for gaps in ordinals.
16890            while _next_ordinal_to_read < 3 {
16891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16892                _next_ordinal_to_read += 1;
16893                next_offset += envelope_size;
16894            }
16895
16896            let next_out_of_line = decoder.next_out_of_line();
16897            let handles_before = decoder.remaining_handles();
16898            if let Some((inlined, num_bytes, num_handles)) =
16899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16900            {
16901                let member_inline_size =
16902                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16903                if inlined != (member_inline_size <= 4) {
16904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16905                }
16906                let inner_offset;
16907                let mut inner_depth = depth.clone();
16908                if inlined {
16909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16910                    inner_offset = next_offset;
16911                } else {
16912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16913                    inner_depth.increment()?;
16914                }
16915                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
16916                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
16917                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16918                {
16919                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16920                }
16921                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16922                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16923                }
16924            }
16925
16926            next_offset += envelope_size;
16927            _next_ordinal_to_read += 1;
16928            if next_offset >= end_offset {
16929                return Ok(());
16930            }
16931
16932            // Decode unknown envelopes for gaps in ordinals.
16933            while _next_ordinal_to_read < 4 {
16934                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16935                _next_ordinal_to_read += 1;
16936                next_offset += envelope_size;
16937            }
16938
16939            let next_out_of_line = decoder.next_out_of_line();
16940            let handles_before = decoder.remaining_handles();
16941            if let Some((inlined, num_bytes, num_handles)) =
16942                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16943            {
16944                let member_inline_size =
16945                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
16946                        decoder.context,
16947                    );
16948                if inlined != (member_inline_size <= 4) {
16949                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16950                }
16951                let inner_offset;
16952                let mut inner_depth = depth.clone();
16953                if inlined {
16954                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16955                    inner_offset = next_offset;
16956                } else {
16957                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16958                    inner_depth.increment()?;
16959                }
16960                let val_ref = self
16961                    .target_name
16962                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
16963                fidl::decode!(
16964                    fidl::encoding::BoundedString<100>,
16965                    D,
16966                    val_ref,
16967                    decoder,
16968                    inner_offset,
16969                    inner_depth
16970                )?;
16971                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16972                {
16973                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16974                }
16975                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16976                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16977                }
16978            }
16979
16980            next_offset += envelope_size;
16981            _next_ordinal_to_read += 1;
16982            if next_offset >= end_offset {
16983                return Ok(());
16984            }
16985
16986            // Decode unknown envelopes for gaps in ordinals.
16987            while _next_ordinal_to_read < 5 {
16988                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16989                _next_ordinal_to_read += 1;
16990                next_offset += envelope_size;
16991            }
16992
16993            let next_out_of_line = decoder.next_out_of_line();
16994            let handles_before = decoder.remaining_handles();
16995            if let Some((inlined, num_bytes, num_handles)) =
16996                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16997            {
16998                let member_inline_size =
16999                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17000                if inlined != (member_inline_size <= 4) {
17001                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17002                }
17003                let inner_offset;
17004                let mut inner_depth = depth.clone();
17005                if inlined {
17006                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17007                    inner_offset = next_offset;
17008                } else {
17009                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17010                    inner_depth.increment()?;
17011                }
17012                let val_ref =
17013                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
17014                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
17015                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17016                {
17017                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17018                }
17019                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17020                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17021                }
17022            }
17023
17024            next_offset += envelope_size;
17025            _next_ordinal_to_read += 1;
17026            if next_offset >= end_offset {
17027                return Ok(());
17028            }
17029
17030            // Decode unknown envelopes for gaps in ordinals.
17031            while _next_ordinal_to_read < 6 {
17032                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17033                _next_ordinal_to_read += 1;
17034                next_offset += envelope_size;
17035            }
17036
17037            let next_out_of_line = decoder.next_out_of_line();
17038            let handles_before = decoder.remaining_handles();
17039            if let Some((inlined, num_bytes, num_handles)) =
17040                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17041            {
17042                let member_inline_size =
17043                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17044                if inlined != (member_inline_size <= 4) {
17045                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17046                }
17047                let inner_offset;
17048                let mut inner_depth = depth.clone();
17049                if inlined {
17050                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17051                    inner_offset = next_offset;
17052                } else {
17053                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17054                    inner_depth.increment()?;
17055                }
17056                let val_ref =
17057                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
17058                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
17059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17060                {
17061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17062                }
17063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17065                }
17066            }
17067
17068            next_offset += envelope_size;
17069            _next_ordinal_to_read += 1;
17070            if next_offset >= end_offset {
17071                return Ok(());
17072            }
17073
17074            // Decode unknown envelopes for gaps in ordinals.
17075            while _next_ordinal_to_read < 7 {
17076                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17077                _next_ordinal_to_read += 1;
17078                next_offset += envelope_size;
17079            }
17080
17081            let next_out_of_line = decoder.next_out_of_line();
17082            let handles_before = decoder.remaining_handles();
17083            if let Some((inlined, num_bytes, num_handles)) =
17084                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17085            {
17086                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17087                if inlined != (member_inline_size <= 4) {
17088                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17089                }
17090                let inner_offset;
17091                let mut inner_depth = depth.clone();
17092                if inlined {
17093                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17094                    inner_offset = next_offset;
17095                } else {
17096                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17097                    inner_depth.increment()?;
17098                }
17099                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17100                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17101                });
17102                fidl::decode!(
17103                    fidl::encoding::BoundedString<1024>,
17104                    D,
17105                    val_ref,
17106                    decoder,
17107                    inner_offset,
17108                    inner_depth
17109                )?;
17110                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17111                {
17112                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17113                }
17114                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17115                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17116                }
17117            }
17118
17119            next_offset += envelope_size;
17120
17121            // Decode the remaining unknown envelopes.
17122            while next_offset < end_offset {
17123                _next_ordinal_to_read += 1;
17124                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17125                next_offset += envelope_size;
17126            }
17127
17128            Ok(())
17129        }
17130    }
17131
17132    impl OfferResolver {
17133        #[inline(always)]
17134        fn max_ordinal_present(&self) -> u64 {
17135            if let Some(_) = self.source_dictionary {
17136                return 5;
17137            }
17138            if let Some(_) = self.target_name {
17139                return 4;
17140            }
17141            if let Some(_) = self.target {
17142                return 3;
17143            }
17144            if let Some(_) = self.source_name {
17145                return 2;
17146            }
17147            if let Some(_) = self.source {
17148                return 1;
17149            }
17150            0
17151        }
17152    }
17153
17154    impl fidl::encoding::ValueTypeMarker for OfferResolver {
17155        type Borrowed<'a> = &'a Self;
17156        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17157            value
17158        }
17159    }
17160
17161    unsafe impl fidl::encoding::TypeMarker for OfferResolver {
17162        type Owned = Self;
17163
17164        #[inline(always)]
17165        fn inline_align(_context: fidl::encoding::Context) -> usize {
17166            8
17167        }
17168
17169        #[inline(always)]
17170        fn inline_size(_context: fidl::encoding::Context) -> usize {
17171            16
17172        }
17173    }
17174
17175    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferResolver, D>
17176        for &OfferResolver
17177    {
17178        unsafe fn encode(
17179            self,
17180            encoder: &mut fidl::encoding::Encoder<'_, D>,
17181            offset: usize,
17182            mut depth: fidl::encoding::Depth,
17183        ) -> fidl::Result<()> {
17184            encoder.debug_check_bounds::<OfferResolver>(offset);
17185            // Vector header
17186            let max_ordinal: u64 = self.max_ordinal_present();
17187            encoder.write_num(max_ordinal, offset);
17188            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17189            // Calling encoder.out_of_line_offset(0) is not allowed.
17190            if max_ordinal == 0 {
17191                return Ok(());
17192            }
17193            depth.increment()?;
17194            let envelope_size = 8;
17195            let bytes_len = max_ordinal as usize * envelope_size;
17196            #[allow(unused_variables)]
17197            let offset = encoder.out_of_line_offset(bytes_len);
17198            let mut _prev_end_offset: usize = 0;
17199            if 1 > max_ordinal {
17200                return Ok(());
17201            }
17202
17203            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17204            // are envelope_size bytes.
17205            let cur_offset: usize = (1 - 1) * envelope_size;
17206
17207            // Zero reserved fields.
17208            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17209
17210            // Safety:
17211            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17212            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17213            //   envelope_size bytes, there is always sufficient room.
17214            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17215                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17216                encoder,
17217                offset + cur_offset,
17218                depth,
17219            )?;
17220
17221            _prev_end_offset = cur_offset + envelope_size;
17222            if 2 > max_ordinal {
17223                return Ok(());
17224            }
17225
17226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17227            // are envelope_size bytes.
17228            let cur_offset: usize = (2 - 1) * envelope_size;
17229
17230            // Zero reserved fields.
17231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17232
17233            // Safety:
17234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17236            //   envelope_size bytes, there is always sufficient room.
17237            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17238                self.source_name.as_ref().map(
17239                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17240                ),
17241                encoder,
17242                offset + cur_offset,
17243                depth,
17244            )?;
17245
17246            _prev_end_offset = cur_offset + envelope_size;
17247            if 3 > max_ordinal {
17248                return Ok(());
17249            }
17250
17251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17252            // are envelope_size bytes.
17253            let cur_offset: usize = (3 - 1) * envelope_size;
17254
17255            // Zero reserved fields.
17256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17257
17258            // Safety:
17259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17261            //   envelope_size bytes, there is always sufficient room.
17262            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17263                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17264                encoder,
17265                offset + cur_offset,
17266                depth,
17267            )?;
17268
17269            _prev_end_offset = cur_offset + envelope_size;
17270            if 4 > max_ordinal {
17271                return Ok(());
17272            }
17273
17274            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17275            // are envelope_size bytes.
17276            let cur_offset: usize = (4 - 1) * envelope_size;
17277
17278            // Zero reserved fields.
17279            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17280
17281            // Safety:
17282            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17283            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17284            //   envelope_size bytes, there is always sufficient room.
17285            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17286                self.target_name.as_ref().map(
17287                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17288                ),
17289                encoder,
17290                offset + cur_offset,
17291                depth,
17292            )?;
17293
17294            _prev_end_offset = cur_offset + envelope_size;
17295            if 5 > max_ordinal {
17296                return Ok(());
17297            }
17298
17299            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17300            // are envelope_size bytes.
17301            let cur_offset: usize = (5 - 1) * envelope_size;
17302
17303            // Zero reserved fields.
17304            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17305
17306            // Safety:
17307            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17308            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17309            //   envelope_size bytes, there is always sufficient room.
17310            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17311            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17312            encoder, offset + cur_offset, depth
17313        )?;
17314
17315            _prev_end_offset = cur_offset + envelope_size;
17316
17317            Ok(())
17318        }
17319    }
17320
17321    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferResolver {
17322        #[inline(always)]
17323        fn new_empty() -> Self {
17324            Self::default()
17325        }
17326
17327        unsafe fn decode(
17328            &mut self,
17329            decoder: &mut fidl::encoding::Decoder<'_, D>,
17330            offset: usize,
17331            mut depth: fidl::encoding::Depth,
17332        ) -> fidl::Result<()> {
17333            decoder.debug_check_bounds::<Self>(offset);
17334            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17335                None => return Err(fidl::Error::NotNullable),
17336                Some(len) => len,
17337            };
17338            // Calling decoder.out_of_line_offset(0) is not allowed.
17339            if len == 0 {
17340                return Ok(());
17341            };
17342            depth.increment()?;
17343            let envelope_size = 8;
17344            let bytes_len = len * envelope_size;
17345            let offset = decoder.out_of_line_offset(bytes_len)?;
17346            // Decode the envelope for each type.
17347            let mut _next_ordinal_to_read = 0;
17348            let mut next_offset = offset;
17349            let end_offset = offset + bytes_len;
17350            _next_ordinal_to_read += 1;
17351            if next_offset >= end_offset {
17352                return Ok(());
17353            }
17354
17355            // Decode unknown envelopes for gaps in ordinals.
17356            while _next_ordinal_to_read < 1 {
17357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17358                _next_ordinal_to_read += 1;
17359                next_offset += envelope_size;
17360            }
17361
17362            let next_out_of_line = decoder.next_out_of_line();
17363            let handles_before = decoder.remaining_handles();
17364            if let Some((inlined, num_bytes, num_handles)) =
17365                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17366            {
17367                let member_inline_size =
17368                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17369                if inlined != (member_inline_size <= 4) {
17370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17371                }
17372                let inner_offset;
17373                let mut inner_depth = depth.clone();
17374                if inlined {
17375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17376                    inner_offset = next_offset;
17377                } else {
17378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17379                    inner_depth.increment()?;
17380                }
17381                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17382                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17383                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17384                {
17385                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17386                }
17387                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17388                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17389                }
17390            }
17391
17392            next_offset += envelope_size;
17393            _next_ordinal_to_read += 1;
17394            if next_offset >= end_offset {
17395                return Ok(());
17396            }
17397
17398            // Decode unknown envelopes for gaps in ordinals.
17399            while _next_ordinal_to_read < 2 {
17400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17401                _next_ordinal_to_read += 1;
17402                next_offset += envelope_size;
17403            }
17404
17405            let next_out_of_line = decoder.next_out_of_line();
17406            let handles_before = decoder.remaining_handles();
17407            if let Some((inlined, num_bytes, num_handles)) =
17408                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17409            {
17410                let member_inline_size =
17411                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17412                        decoder.context,
17413                    );
17414                if inlined != (member_inline_size <= 4) {
17415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17416                }
17417                let inner_offset;
17418                let mut inner_depth = depth.clone();
17419                if inlined {
17420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17421                    inner_offset = next_offset;
17422                } else {
17423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17424                    inner_depth.increment()?;
17425                }
17426                let val_ref = self
17427                    .source_name
17428                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17429                fidl::decode!(
17430                    fidl::encoding::BoundedString<100>,
17431                    D,
17432                    val_ref,
17433                    decoder,
17434                    inner_offset,
17435                    inner_depth
17436                )?;
17437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17438                {
17439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17440                }
17441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17443                }
17444            }
17445
17446            next_offset += envelope_size;
17447            _next_ordinal_to_read += 1;
17448            if next_offset >= end_offset {
17449                return Ok(());
17450            }
17451
17452            // Decode unknown envelopes for gaps in ordinals.
17453            while _next_ordinal_to_read < 3 {
17454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17455                _next_ordinal_to_read += 1;
17456                next_offset += envelope_size;
17457            }
17458
17459            let next_out_of_line = decoder.next_out_of_line();
17460            let handles_before = decoder.remaining_handles();
17461            if let Some((inlined, num_bytes, num_handles)) =
17462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17463            {
17464                let member_inline_size =
17465                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17466                if inlined != (member_inline_size <= 4) {
17467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17468                }
17469                let inner_offset;
17470                let mut inner_depth = depth.clone();
17471                if inlined {
17472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17473                    inner_offset = next_offset;
17474                } else {
17475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17476                    inner_depth.increment()?;
17477                }
17478                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17479                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17481                {
17482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17483                }
17484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17486                }
17487            }
17488
17489            next_offset += envelope_size;
17490            _next_ordinal_to_read += 1;
17491            if next_offset >= end_offset {
17492                return Ok(());
17493            }
17494
17495            // Decode unknown envelopes for gaps in ordinals.
17496            while _next_ordinal_to_read < 4 {
17497                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17498                _next_ordinal_to_read += 1;
17499                next_offset += envelope_size;
17500            }
17501
17502            let next_out_of_line = decoder.next_out_of_line();
17503            let handles_before = decoder.remaining_handles();
17504            if let Some((inlined, num_bytes, num_handles)) =
17505                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17506            {
17507                let member_inline_size =
17508                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17509                        decoder.context,
17510                    );
17511                if inlined != (member_inline_size <= 4) {
17512                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17513                }
17514                let inner_offset;
17515                let mut inner_depth = depth.clone();
17516                if inlined {
17517                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17518                    inner_offset = next_offset;
17519                } else {
17520                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17521                    inner_depth.increment()?;
17522                }
17523                let val_ref = self
17524                    .target_name
17525                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17526                fidl::decode!(
17527                    fidl::encoding::BoundedString<100>,
17528                    D,
17529                    val_ref,
17530                    decoder,
17531                    inner_offset,
17532                    inner_depth
17533                )?;
17534                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17535                {
17536                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17537                }
17538                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17539                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17540                }
17541            }
17542
17543            next_offset += envelope_size;
17544            _next_ordinal_to_read += 1;
17545            if next_offset >= end_offset {
17546                return Ok(());
17547            }
17548
17549            // Decode unknown envelopes for gaps in ordinals.
17550            while _next_ordinal_to_read < 5 {
17551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17552                _next_ordinal_to_read += 1;
17553                next_offset += envelope_size;
17554            }
17555
17556            let next_out_of_line = decoder.next_out_of_line();
17557            let handles_before = decoder.remaining_handles();
17558            if let Some((inlined, num_bytes, num_handles)) =
17559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17560            {
17561                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17562                if inlined != (member_inline_size <= 4) {
17563                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17564                }
17565                let inner_offset;
17566                let mut inner_depth = depth.clone();
17567                if inlined {
17568                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17569                    inner_offset = next_offset;
17570                } else {
17571                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17572                    inner_depth.increment()?;
17573                }
17574                let val_ref = self.source_dictionary.get_or_insert_with(|| {
17575                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
17576                });
17577                fidl::decode!(
17578                    fidl::encoding::BoundedString<1024>,
17579                    D,
17580                    val_ref,
17581                    decoder,
17582                    inner_offset,
17583                    inner_depth
17584                )?;
17585                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17586                {
17587                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17588                }
17589                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17590                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17591                }
17592            }
17593
17594            next_offset += envelope_size;
17595
17596            // Decode the remaining unknown envelopes.
17597            while next_offset < end_offset {
17598                _next_ordinal_to_read += 1;
17599                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17600                next_offset += envelope_size;
17601            }
17602
17603            Ok(())
17604        }
17605    }
17606
17607    impl OfferRunner {
17608        #[inline(always)]
17609        fn max_ordinal_present(&self) -> u64 {
17610            if let Some(_) = self.source_dictionary {
17611                return 5;
17612            }
17613            if let Some(_) = self.target_name {
17614                return 4;
17615            }
17616            if let Some(_) = self.target {
17617                return 3;
17618            }
17619            if let Some(_) = self.source_name {
17620                return 2;
17621            }
17622            if let Some(_) = self.source {
17623                return 1;
17624            }
17625            0
17626        }
17627    }
17628
17629    impl fidl::encoding::ValueTypeMarker for OfferRunner {
17630        type Borrowed<'a> = &'a Self;
17631        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17632            value
17633        }
17634    }
17635
17636    unsafe impl fidl::encoding::TypeMarker for OfferRunner {
17637        type Owned = Self;
17638
17639        #[inline(always)]
17640        fn inline_align(_context: fidl::encoding::Context) -> usize {
17641            8
17642        }
17643
17644        #[inline(always)]
17645        fn inline_size(_context: fidl::encoding::Context) -> usize {
17646            16
17647        }
17648    }
17649
17650    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferRunner, D>
17651        for &OfferRunner
17652    {
17653        unsafe fn encode(
17654            self,
17655            encoder: &mut fidl::encoding::Encoder<'_, D>,
17656            offset: usize,
17657            mut depth: fidl::encoding::Depth,
17658        ) -> fidl::Result<()> {
17659            encoder.debug_check_bounds::<OfferRunner>(offset);
17660            // Vector header
17661            let max_ordinal: u64 = self.max_ordinal_present();
17662            encoder.write_num(max_ordinal, offset);
17663            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17664            // Calling encoder.out_of_line_offset(0) is not allowed.
17665            if max_ordinal == 0 {
17666                return Ok(());
17667            }
17668            depth.increment()?;
17669            let envelope_size = 8;
17670            let bytes_len = max_ordinal as usize * envelope_size;
17671            #[allow(unused_variables)]
17672            let offset = encoder.out_of_line_offset(bytes_len);
17673            let mut _prev_end_offset: usize = 0;
17674            if 1 > max_ordinal {
17675                return Ok(());
17676            }
17677
17678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17679            // are envelope_size bytes.
17680            let cur_offset: usize = (1 - 1) * envelope_size;
17681
17682            // Zero reserved fields.
17683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17684
17685            // Safety:
17686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17688            //   envelope_size bytes, there is always sufficient room.
17689            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17690                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17691                encoder,
17692                offset + cur_offset,
17693                depth,
17694            )?;
17695
17696            _prev_end_offset = cur_offset + envelope_size;
17697            if 2 > max_ordinal {
17698                return Ok(());
17699            }
17700
17701            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17702            // are envelope_size bytes.
17703            let cur_offset: usize = (2 - 1) * envelope_size;
17704
17705            // Zero reserved fields.
17706            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17707
17708            // Safety:
17709            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17710            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17711            //   envelope_size bytes, there is always sufficient room.
17712            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17713                self.source_name.as_ref().map(
17714                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17715                ),
17716                encoder,
17717                offset + cur_offset,
17718                depth,
17719            )?;
17720
17721            _prev_end_offset = cur_offset + envelope_size;
17722            if 3 > max_ordinal {
17723                return Ok(());
17724            }
17725
17726            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17727            // are envelope_size bytes.
17728            let cur_offset: usize = (3 - 1) * envelope_size;
17729
17730            // Zero reserved fields.
17731            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17732
17733            // Safety:
17734            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17735            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17736            //   envelope_size bytes, there is always sufficient room.
17737            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
17738                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
17739                encoder,
17740                offset + cur_offset,
17741                depth,
17742            )?;
17743
17744            _prev_end_offset = cur_offset + envelope_size;
17745            if 4 > max_ordinal {
17746                return Ok(());
17747            }
17748
17749            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17750            // are envelope_size bytes.
17751            let cur_offset: usize = (4 - 1) * envelope_size;
17752
17753            // Zero reserved fields.
17754            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17755
17756            // Safety:
17757            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17758            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17759            //   envelope_size bytes, there is always sufficient room.
17760            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
17761                self.target_name.as_ref().map(
17762                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
17763                ),
17764                encoder,
17765                offset + cur_offset,
17766                depth,
17767            )?;
17768
17769            _prev_end_offset = cur_offset + envelope_size;
17770            if 5 > max_ordinal {
17771                return Ok(());
17772            }
17773
17774            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17775            // are envelope_size bytes.
17776            let cur_offset: usize = (5 - 1) * envelope_size;
17777
17778            // Zero reserved fields.
17779            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17780
17781            // Safety:
17782            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17783            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17784            //   envelope_size bytes, there is always sufficient room.
17785            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
17786            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
17787            encoder, offset + cur_offset, depth
17788        )?;
17789
17790            _prev_end_offset = cur_offset + envelope_size;
17791
17792            Ok(())
17793        }
17794    }
17795
17796    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferRunner {
17797        #[inline(always)]
17798        fn new_empty() -> Self {
17799            Self::default()
17800        }
17801
17802        unsafe fn decode(
17803            &mut self,
17804            decoder: &mut fidl::encoding::Decoder<'_, D>,
17805            offset: usize,
17806            mut depth: fidl::encoding::Depth,
17807        ) -> fidl::Result<()> {
17808            decoder.debug_check_bounds::<Self>(offset);
17809            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17810                None => return Err(fidl::Error::NotNullable),
17811                Some(len) => len,
17812            };
17813            // Calling decoder.out_of_line_offset(0) is not allowed.
17814            if len == 0 {
17815                return Ok(());
17816            };
17817            depth.increment()?;
17818            let envelope_size = 8;
17819            let bytes_len = len * envelope_size;
17820            let offset = decoder.out_of_line_offset(bytes_len)?;
17821            // Decode the envelope for each type.
17822            let mut _next_ordinal_to_read = 0;
17823            let mut next_offset = offset;
17824            let end_offset = offset + bytes_len;
17825            _next_ordinal_to_read += 1;
17826            if next_offset >= end_offset {
17827                return Ok(());
17828            }
17829
17830            // Decode unknown envelopes for gaps in ordinals.
17831            while _next_ordinal_to_read < 1 {
17832                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17833                _next_ordinal_to_read += 1;
17834                next_offset += envelope_size;
17835            }
17836
17837            let next_out_of_line = decoder.next_out_of_line();
17838            let handles_before = decoder.remaining_handles();
17839            if let Some((inlined, num_bytes, num_handles)) =
17840                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17841            {
17842                let member_inline_size =
17843                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17844                if inlined != (member_inline_size <= 4) {
17845                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17846                }
17847                let inner_offset;
17848                let mut inner_depth = depth.clone();
17849                if inlined {
17850                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17851                    inner_offset = next_offset;
17852                } else {
17853                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17854                    inner_depth.increment()?;
17855                }
17856                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17857                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17858                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17859                {
17860                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17861                }
17862                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17863                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17864                }
17865            }
17866
17867            next_offset += envelope_size;
17868            _next_ordinal_to_read += 1;
17869            if next_offset >= end_offset {
17870                return Ok(());
17871            }
17872
17873            // Decode unknown envelopes for gaps in ordinals.
17874            while _next_ordinal_to_read < 2 {
17875                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17876                _next_ordinal_to_read += 1;
17877                next_offset += envelope_size;
17878            }
17879
17880            let next_out_of_line = decoder.next_out_of_line();
17881            let handles_before = decoder.remaining_handles();
17882            if let Some((inlined, num_bytes, num_handles)) =
17883                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17884            {
17885                let member_inline_size =
17886                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17887                        decoder.context,
17888                    );
17889                if inlined != (member_inline_size <= 4) {
17890                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17891                }
17892                let inner_offset;
17893                let mut inner_depth = depth.clone();
17894                if inlined {
17895                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17896                    inner_offset = next_offset;
17897                } else {
17898                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17899                    inner_depth.increment()?;
17900                }
17901                let val_ref = self
17902                    .source_name
17903                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
17904                fidl::decode!(
17905                    fidl::encoding::BoundedString<100>,
17906                    D,
17907                    val_ref,
17908                    decoder,
17909                    inner_offset,
17910                    inner_depth
17911                )?;
17912                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17913                {
17914                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17915                }
17916                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17917                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17918                }
17919            }
17920
17921            next_offset += envelope_size;
17922            _next_ordinal_to_read += 1;
17923            if next_offset >= end_offset {
17924                return Ok(());
17925            }
17926
17927            // Decode unknown envelopes for gaps in ordinals.
17928            while _next_ordinal_to_read < 3 {
17929                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17930                _next_ordinal_to_read += 1;
17931                next_offset += envelope_size;
17932            }
17933
17934            let next_out_of_line = decoder.next_out_of_line();
17935            let handles_before = decoder.remaining_handles();
17936            if let Some((inlined, num_bytes, num_handles)) =
17937                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17938            {
17939                let member_inline_size =
17940                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17941                if inlined != (member_inline_size <= 4) {
17942                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17943                }
17944                let inner_offset;
17945                let mut inner_depth = depth.clone();
17946                if inlined {
17947                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17948                    inner_offset = next_offset;
17949                } else {
17950                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17951                    inner_depth.increment()?;
17952                }
17953                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
17954                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
17955                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17956                {
17957                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17958                }
17959                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17960                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17961                }
17962            }
17963
17964            next_offset += envelope_size;
17965            _next_ordinal_to_read += 1;
17966            if next_offset >= end_offset {
17967                return Ok(());
17968            }
17969
17970            // Decode unknown envelopes for gaps in ordinals.
17971            while _next_ordinal_to_read < 4 {
17972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17973                _next_ordinal_to_read += 1;
17974                next_offset += envelope_size;
17975            }
17976
17977            let next_out_of_line = decoder.next_out_of_line();
17978            let handles_before = decoder.remaining_handles();
17979            if let Some((inlined, num_bytes, num_handles)) =
17980                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17981            {
17982                let member_inline_size =
17983                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
17984                        decoder.context,
17985                    );
17986                if inlined != (member_inline_size <= 4) {
17987                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17988                }
17989                let inner_offset;
17990                let mut inner_depth = depth.clone();
17991                if inlined {
17992                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17993                    inner_offset = next_offset;
17994                } else {
17995                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17996                    inner_depth.increment()?;
17997                }
17998                let val_ref = self
17999                    .target_name
18000                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18001                fidl::decode!(
18002                    fidl::encoding::BoundedString<100>,
18003                    D,
18004                    val_ref,
18005                    decoder,
18006                    inner_offset,
18007                    inner_depth
18008                )?;
18009                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18010                {
18011                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18012                }
18013                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18014                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18015                }
18016            }
18017
18018            next_offset += envelope_size;
18019            _next_ordinal_to_read += 1;
18020            if next_offset >= end_offset {
18021                return Ok(());
18022            }
18023
18024            // Decode unknown envelopes for gaps in ordinals.
18025            while _next_ordinal_to_read < 5 {
18026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18027                _next_ordinal_to_read += 1;
18028                next_offset += envelope_size;
18029            }
18030
18031            let next_out_of_line = decoder.next_out_of_line();
18032            let handles_before = decoder.remaining_handles();
18033            if let Some((inlined, num_bytes, num_handles)) =
18034                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18035            {
18036                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18037                if inlined != (member_inline_size <= 4) {
18038                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18039                }
18040                let inner_offset;
18041                let mut inner_depth = depth.clone();
18042                if inlined {
18043                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18044                    inner_offset = next_offset;
18045                } else {
18046                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18047                    inner_depth.increment()?;
18048                }
18049                let val_ref = self.source_dictionary.get_or_insert_with(|| {
18050                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
18051                });
18052                fidl::decode!(
18053                    fidl::encoding::BoundedString<1024>,
18054                    D,
18055                    val_ref,
18056                    decoder,
18057                    inner_offset,
18058                    inner_depth
18059                )?;
18060                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18061                {
18062                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18063                }
18064                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18065                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18066                }
18067            }
18068
18069            next_offset += envelope_size;
18070
18071            // Decode the remaining unknown envelopes.
18072            while next_offset < end_offset {
18073                _next_ordinal_to_read += 1;
18074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18075                next_offset += envelope_size;
18076            }
18077
18078            Ok(())
18079        }
18080    }
18081
18082    impl OfferService {
18083        #[inline(always)]
18084        fn max_ordinal_present(&self) -> u64 {
18085            if let Some(_) = self.dependency_type {
18086                return 9;
18087            }
18088            if let Some(_) = self.source_dictionary {
18089                return 8;
18090            }
18091            if let Some(_) = self.availability {
18092                return 7;
18093            }
18094            if let Some(_) = self.renamed_instances {
18095                return 6;
18096            }
18097            if let Some(_) = self.source_instance_filter {
18098                return 5;
18099            }
18100            if let Some(_) = self.target_name {
18101                return 4;
18102            }
18103            if let Some(_) = self.target {
18104                return 3;
18105            }
18106            if let Some(_) = self.source_name {
18107                return 2;
18108            }
18109            if let Some(_) = self.source {
18110                return 1;
18111            }
18112            0
18113        }
18114    }
18115
18116    impl fidl::encoding::ValueTypeMarker for OfferService {
18117        type Borrowed<'a> = &'a Self;
18118        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18119            value
18120        }
18121    }
18122
18123    unsafe impl fidl::encoding::TypeMarker for OfferService {
18124        type Owned = Self;
18125
18126        #[inline(always)]
18127        fn inline_align(_context: fidl::encoding::Context) -> usize {
18128            8
18129        }
18130
18131        #[inline(always)]
18132        fn inline_size(_context: fidl::encoding::Context) -> usize {
18133            16
18134        }
18135    }
18136
18137    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferService, D>
18138        for &OfferService
18139    {
18140        unsafe fn encode(
18141            self,
18142            encoder: &mut fidl::encoding::Encoder<'_, D>,
18143            offset: usize,
18144            mut depth: fidl::encoding::Depth,
18145        ) -> fidl::Result<()> {
18146            encoder.debug_check_bounds::<OfferService>(offset);
18147            // Vector header
18148            let max_ordinal: u64 = self.max_ordinal_present();
18149            encoder.write_num(max_ordinal, offset);
18150            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18151            // Calling encoder.out_of_line_offset(0) is not allowed.
18152            if max_ordinal == 0 {
18153                return Ok(());
18154            }
18155            depth.increment()?;
18156            let envelope_size = 8;
18157            let bytes_len = max_ordinal as usize * envelope_size;
18158            #[allow(unused_variables)]
18159            let offset = encoder.out_of_line_offset(bytes_len);
18160            let mut _prev_end_offset: usize = 0;
18161            if 1 > max_ordinal {
18162                return Ok(());
18163            }
18164
18165            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18166            // are envelope_size bytes.
18167            let cur_offset: usize = (1 - 1) * envelope_size;
18168
18169            // Zero reserved fields.
18170            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18171
18172            // Safety:
18173            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18174            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18175            //   envelope_size bytes, there is always sufficient room.
18176            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18177                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18178                encoder,
18179                offset + cur_offset,
18180                depth,
18181            )?;
18182
18183            _prev_end_offset = cur_offset + envelope_size;
18184            if 2 > max_ordinal {
18185                return Ok(());
18186            }
18187
18188            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18189            // are envelope_size bytes.
18190            let cur_offset: usize = (2 - 1) * envelope_size;
18191
18192            // Zero reserved fields.
18193            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18194
18195            // Safety:
18196            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18197            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18198            //   envelope_size bytes, there is always sufficient room.
18199            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18200                self.source_name.as_ref().map(
18201                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18202                ),
18203                encoder,
18204                offset + cur_offset,
18205                depth,
18206            )?;
18207
18208            _prev_end_offset = cur_offset + envelope_size;
18209            if 3 > max_ordinal {
18210                return Ok(());
18211            }
18212
18213            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18214            // are envelope_size bytes.
18215            let cur_offset: usize = (3 - 1) * envelope_size;
18216
18217            // Zero reserved fields.
18218            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18219
18220            // Safety:
18221            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18222            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18223            //   envelope_size bytes, there is always sufficient room.
18224            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18225                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18226                encoder,
18227                offset + cur_offset,
18228                depth,
18229            )?;
18230
18231            _prev_end_offset = cur_offset + envelope_size;
18232            if 4 > max_ordinal {
18233                return Ok(());
18234            }
18235
18236            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18237            // are envelope_size bytes.
18238            let cur_offset: usize = (4 - 1) * envelope_size;
18239
18240            // Zero reserved fields.
18241            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18242
18243            // Safety:
18244            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18245            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18246            //   envelope_size bytes, there is always sufficient room.
18247            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18248                self.target_name.as_ref().map(
18249                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18250                ),
18251                encoder,
18252                offset + cur_offset,
18253                depth,
18254            )?;
18255
18256            _prev_end_offset = cur_offset + envelope_size;
18257            if 5 > max_ordinal {
18258                return Ok(());
18259            }
18260
18261            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18262            // are envelope_size bytes.
18263            let cur_offset: usize = (5 - 1) * envelope_size;
18264
18265            // Zero reserved fields.
18266            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18267
18268            // Safety:
18269            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18270            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18271            //   envelope_size bytes, there is always sufficient room.
18272            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>, D>(
18273            self.source_instance_filter.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>> as fidl::encoding::ValueTypeMarker>::borrow),
18274            encoder, offset + cur_offset, depth
18275        )?;
18276
18277            _prev_end_offset = cur_offset + envelope_size;
18278            if 6 > max_ordinal {
18279                return Ok(());
18280            }
18281
18282            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18283            // are envelope_size bytes.
18284            let cur_offset: usize = (6 - 1) * envelope_size;
18285
18286            // Zero reserved fields.
18287            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18288
18289            // Safety:
18290            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18291            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18292            //   envelope_size bytes, there is always sufficient room.
18293            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NameMapping>, D>(
18294            self.renamed_instances.as_ref().map(<fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::ValueTypeMarker>::borrow),
18295            encoder, offset + cur_offset, depth
18296        )?;
18297
18298            _prev_end_offset = cur_offset + envelope_size;
18299            if 7 > max_ordinal {
18300                return Ok(());
18301            }
18302
18303            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18304            // are envelope_size bytes.
18305            let cur_offset: usize = (7 - 1) * envelope_size;
18306
18307            // Zero reserved fields.
18308            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18309
18310            // Safety:
18311            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18312            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18313            //   envelope_size bytes, there is always sufficient room.
18314            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
18315                self.availability
18316                    .as_ref()
18317                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
18318                encoder,
18319                offset + cur_offset,
18320                depth,
18321            )?;
18322
18323            _prev_end_offset = cur_offset + envelope_size;
18324            if 8 > max_ordinal {
18325                return Ok(());
18326            }
18327
18328            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18329            // are envelope_size bytes.
18330            let cur_offset: usize = (8 - 1) * envelope_size;
18331
18332            // Zero reserved fields.
18333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18334
18335            // Safety:
18336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18338            //   envelope_size bytes, there is always sufficient room.
18339            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
18340            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
18341            encoder, offset + cur_offset, depth
18342        )?;
18343
18344            _prev_end_offset = cur_offset + envelope_size;
18345            if 9 > max_ordinal {
18346                return Ok(());
18347            }
18348
18349            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18350            // are envelope_size bytes.
18351            let cur_offset: usize = (9 - 1) * envelope_size;
18352
18353            // Zero reserved fields.
18354            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18355
18356            // Safety:
18357            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18358            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18359            //   envelope_size bytes, there is always sufficient room.
18360            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
18361                self.dependency_type
18362                    .as_ref()
18363                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
18364                encoder,
18365                offset + cur_offset,
18366                depth,
18367            )?;
18368
18369            _prev_end_offset = cur_offset + envelope_size;
18370
18371            Ok(())
18372        }
18373    }
18374
18375    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferService {
18376        #[inline(always)]
18377        fn new_empty() -> Self {
18378            Self::default()
18379        }
18380
18381        unsafe fn decode(
18382            &mut self,
18383            decoder: &mut fidl::encoding::Decoder<'_, D>,
18384            offset: usize,
18385            mut depth: fidl::encoding::Depth,
18386        ) -> fidl::Result<()> {
18387            decoder.debug_check_bounds::<Self>(offset);
18388            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18389                None => return Err(fidl::Error::NotNullable),
18390                Some(len) => len,
18391            };
18392            // Calling decoder.out_of_line_offset(0) is not allowed.
18393            if len == 0 {
18394                return Ok(());
18395            };
18396            depth.increment()?;
18397            let envelope_size = 8;
18398            let bytes_len = len * envelope_size;
18399            let offset = decoder.out_of_line_offset(bytes_len)?;
18400            // Decode the envelope for each type.
18401            let mut _next_ordinal_to_read = 0;
18402            let mut next_offset = offset;
18403            let end_offset = offset + bytes_len;
18404            _next_ordinal_to_read += 1;
18405            if next_offset >= end_offset {
18406                return Ok(());
18407            }
18408
18409            // Decode unknown envelopes for gaps in ordinals.
18410            while _next_ordinal_to_read < 1 {
18411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18412                _next_ordinal_to_read += 1;
18413                next_offset += envelope_size;
18414            }
18415
18416            let next_out_of_line = decoder.next_out_of_line();
18417            let handles_before = decoder.remaining_handles();
18418            if let Some((inlined, num_bytes, num_handles)) =
18419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18420            {
18421                let member_inline_size =
18422                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18423                if inlined != (member_inline_size <= 4) {
18424                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18425                }
18426                let inner_offset;
18427                let mut inner_depth = depth.clone();
18428                if inlined {
18429                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18430                    inner_offset = next_offset;
18431                } else {
18432                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18433                    inner_depth.increment()?;
18434                }
18435                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18436                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18438                {
18439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18440                }
18441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18443                }
18444            }
18445
18446            next_offset += envelope_size;
18447            _next_ordinal_to_read += 1;
18448            if next_offset >= end_offset {
18449                return Ok(());
18450            }
18451
18452            // Decode unknown envelopes for gaps in ordinals.
18453            while _next_ordinal_to_read < 2 {
18454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18455                _next_ordinal_to_read += 1;
18456                next_offset += envelope_size;
18457            }
18458
18459            let next_out_of_line = decoder.next_out_of_line();
18460            let handles_before = decoder.remaining_handles();
18461            if let Some((inlined, num_bytes, num_handles)) =
18462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18463            {
18464                let member_inline_size =
18465                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18466                        decoder.context,
18467                    );
18468                if inlined != (member_inline_size <= 4) {
18469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18470                }
18471                let inner_offset;
18472                let mut inner_depth = depth.clone();
18473                if inlined {
18474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18475                    inner_offset = next_offset;
18476                } else {
18477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18478                    inner_depth.increment()?;
18479                }
18480                let val_ref = self
18481                    .source_name
18482                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18483                fidl::decode!(
18484                    fidl::encoding::BoundedString<100>,
18485                    D,
18486                    val_ref,
18487                    decoder,
18488                    inner_offset,
18489                    inner_depth
18490                )?;
18491                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18492                {
18493                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18494                }
18495                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18496                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18497                }
18498            }
18499
18500            next_offset += envelope_size;
18501            _next_ordinal_to_read += 1;
18502            if next_offset >= end_offset {
18503                return Ok(());
18504            }
18505
18506            // Decode unknown envelopes for gaps in ordinals.
18507            while _next_ordinal_to_read < 3 {
18508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18509                _next_ordinal_to_read += 1;
18510                next_offset += envelope_size;
18511            }
18512
18513            let next_out_of_line = decoder.next_out_of_line();
18514            let handles_before = decoder.remaining_handles();
18515            if let Some((inlined, num_bytes, num_handles)) =
18516                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18517            {
18518                let member_inline_size =
18519                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18520                if inlined != (member_inline_size <= 4) {
18521                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18522                }
18523                let inner_offset;
18524                let mut inner_depth = depth.clone();
18525                if inlined {
18526                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18527                    inner_offset = next_offset;
18528                } else {
18529                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18530                    inner_depth.increment()?;
18531                }
18532                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
18533                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
18534                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18535                {
18536                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18537                }
18538                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18539                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18540                }
18541            }
18542
18543            next_offset += envelope_size;
18544            _next_ordinal_to_read += 1;
18545            if next_offset >= end_offset {
18546                return Ok(());
18547            }
18548
18549            // Decode unknown envelopes for gaps in ordinals.
18550            while _next_ordinal_to_read < 4 {
18551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18552                _next_ordinal_to_read += 1;
18553                next_offset += envelope_size;
18554            }
18555
18556            let next_out_of_line = decoder.next_out_of_line();
18557            let handles_before = decoder.remaining_handles();
18558            if let Some((inlined, num_bytes, num_handles)) =
18559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18560            {
18561                let member_inline_size =
18562                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
18563                        decoder.context,
18564                    );
18565                if inlined != (member_inline_size <= 4) {
18566                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18567                }
18568                let inner_offset;
18569                let mut inner_depth = depth.clone();
18570                if inlined {
18571                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18572                    inner_offset = next_offset;
18573                } else {
18574                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18575                    inner_depth.increment()?;
18576                }
18577                let val_ref = self
18578                    .target_name
18579                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
18580                fidl::decode!(
18581                    fidl::encoding::BoundedString<100>,
18582                    D,
18583                    val_ref,
18584                    decoder,
18585                    inner_offset,
18586                    inner_depth
18587                )?;
18588                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18589                {
18590                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18591                }
18592                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18593                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18594                }
18595            }
18596
18597            next_offset += envelope_size;
18598            _next_ordinal_to_read += 1;
18599            if next_offset >= end_offset {
18600                return Ok(());
18601            }
18602
18603            // Decode unknown envelopes for gaps in ordinals.
18604            while _next_ordinal_to_read < 5 {
18605                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18606                _next_ordinal_to_read += 1;
18607                next_offset += envelope_size;
18608            }
18609
18610            let next_out_of_line = decoder.next_out_of_line();
18611            let handles_before = decoder.remaining_handles();
18612            if let Some((inlined, num_bytes, num_handles)) =
18613                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18614            {
18615                let member_inline_size = <fidl::encoding::UnboundedVector<
18616                    fidl::encoding::BoundedString<100>,
18617                > as fidl::encoding::TypeMarker>::inline_size(
18618                    decoder.context
18619                );
18620                if inlined != (member_inline_size <= 4) {
18621                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18622                }
18623                let inner_offset;
18624                let mut inner_depth = depth.clone();
18625                if inlined {
18626                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18627                    inner_offset = next_offset;
18628                } else {
18629                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18630                    inner_depth.increment()?;
18631                }
18632                let val_ref = self.source_instance_filter.get_or_insert_with(|| {
18633                    fidl::new_empty!(
18634                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18635                        D
18636                    )
18637                });
18638                fidl::decode!(
18639                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<100>>,
18640                    D,
18641                    val_ref,
18642                    decoder,
18643                    inner_offset,
18644                    inner_depth
18645                )?;
18646                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18647                {
18648                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18649                }
18650                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18651                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18652                }
18653            }
18654
18655            next_offset += envelope_size;
18656            _next_ordinal_to_read += 1;
18657            if next_offset >= end_offset {
18658                return Ok(());
18659            }
18660
18661            // Decode unknown envelopes for gaps in ordinals.
18662            while _next_ordinal_to_read < 6 {
18663                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18664                _next_ordinal_to_read += 1;
18665                next_offset += envelope_size;
18666            }
18667
18668            let next_out_of_line = decoder.next_out_of_line();
18669            let handles_before = decoder.remaining_handles();
18670            if let Some((inlined, num_bytes, num_handles)) =
18671                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18672            {
18673                let member_inline_size = <fidl::encoding::UnboundedVector<NameMapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18674                if inlined != (member_inline_size <= 4) {
18675                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18676                }
18677                let inner_offset;
18678                let mut inner_depth = depth.clone();
18679                if inlined {
18680                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18681                    inner_offset = next_offset;
18682                } else {
18683                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18684                    inner_depth.increment()?;
18685                }
18686                let val_ref = self.renamed_instances.get_or_insert_with(|| {
18687                    fidl::new_empty!(fidl::encoding::UnboundedVector<NameMapping>, D)
18688                });
18689                fidl::decode!(
18690                    fidl::encoding::UnboundedVector<NameMapping>,
18691                    D,
18692                    val_ref,
18693                    decoder,
18694                    inner_offset,
18695                    inner_depth
18696                )?;
18697                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18698                {
18699                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18700                }
18701                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18702                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18703                }
18704            }
18705
18706            next_offset += envelope_size;
18707            _next_ordinal_to_read += 1;
18708            if next_offset >= end_offset {
18709                return Ok(());
18710            }
18711
18712            // Decode unknown envelopes for gaps in ordinals.
18713            while _next_ordinal_to_read < 7 {
18714                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18715                _next_ordinal_to_read += 1;
18716                next_offset += envelope_size;
18717            }
18718
18719            let next_out_of_line = decoder.next_out_of_line();
18720            let handles_before = decoder.remaining_handles();
18721            if let Some((inlined, num_bytes, num_handles)) =
18722                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18723            {
18724                let member_inline_size =
18725                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18726                if inlined != (member_inline_size <= 4) {
18727                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18728                }
18729                let inner_offset;
18730                let mut inner_depth = depth.clone();
18731                if inlined {
18732                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18733                    inner_offset = next_offset;
18734                } else {
18735                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18736                    inner_depth.increment()?;
18737                }
18738                let val_ref =
18739                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
18740                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
18741                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18742                {
18743                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18744                }
18745                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18746                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18747                }
18748            }
18749
18750            next_offset += envelope_size;
18751            _next_ordinal_to_read += 1;
18752            if next_offset >= end_offset {
18753                return Ok(());
18754            }
18755
18756            // Decode unknown envelopes for gaps in ordinals.
18757            while _next_ordinal_to_read < 8 {
18758                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18759                _next_ordinal_to_read += 1;
18760                next_offset += envelope_size;
18761            }
18762
18763            let next_out_of_line = decoder.next_out_of_line();
18764            let handles_before = decoder.remaining_handles();
18765            if let Some((inlined, num_bytes, num_handles)) =
18766                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18767            {
18768                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18769                if inlined != (member_inline_size <= 4) {
18770                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18771                }
18772                let inner_offset;
18773                let mut inner_depth = depth.clone();
18774                if inlined {
18775                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18776                    inner_offset = next_offset;
18777                } else {
18778                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18779                    inner_depth.increment()?;
18780                }
18781                let val_ref = self.source_dictionary.get_or_insert_with(|| {
18782                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
18783                });
18784                fidl::decode!(
18785                    fidl::encoding::BoundedString<1024>,
18786                    D,
18787                    val_ref,
18788                    decoder,
18789                    inner_offset,
18790                    inner_depth
18791                )?;
18792                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18793                {
18794                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18795                }
18796                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18797                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18798                }
18799            }
18800
18801            next_offset += envelope_size;
18802            _next_ordinal_to_read += 1;
18803            if next_offset >= end_offset {
18804                return Ok(());
18805            }
18806
18807            // Decode unknown envelopes for gaps in ordinals.
18808            while _next_ordinal_to_read < 9 {
18809                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18810                _next_ordinal_to_read += 1;
18811                next_offset += envelope_size;
18812            }
18813
18814            let next_out_of_line = decoder.next_out_of_line();
18815            let handles_before = decoder.remaining_handles();
18816            if let Some((inlined, num_bytes, num_handles)) =
18817                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18818            {
18819                let member_inline_size =
18820                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18821                if inlined != (member_inline_size <= 4) {
18822                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18823                }
18824                let inner_offset;
18825                let mut inner_depth = depth.clone();
18826                if inlined {
18827                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18828                    inner_offset = next_offset;
18829                } else {
18830                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18831                    inner_depth.increment()?;
18832                }
18833                let val_ref =
18834                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
18835                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
18836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18837                {
18838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18839                }
18840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18842                }
18843            }
18844
18845            next_offset += envelope_size;
18846
18847            // Decode the remaining unknown envelopes.
18848            while next_offset < end_offset {
18849                _next_ordinal_to_read += 1;
18850                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18851                next_offset += envelope_size;
18852            }
18853
18854            Ok(())
18855        }
18856    }
18857
18858    impl OfferStorage {
18859        #[inline(always)]
18860        fn max_ordinal_present(&self) -> u64 {
18861            if let Some(_) = self.availability {
18862                return 5;
18863            }
18864            if let Some(_) = self.target_name {
18865                return 4;
18866            }
18867            if let Some(_) = self.target {
18868                return 3;
18869            }
18870            if let Some(_) = self.source {
18871                return 2;
18872            }
18873            if let Some(_) = self.source_name {
18874                return 1;
18875            }
18876            0
18877        }
18878    }
18879
18880    impl fidl::encoding::ValueTypeMarker for OfferStorage {
18881        type Borrowed<'a> = &'a Self;
18882        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18883            value
18884        }
18885    }
18886
18887    unsafe impl fidl::encoding::TypeMarker for OfferStorage {
18888        type Owned = Self;
18889
18890        #[inline(always)]
18891        fn inline_align(_context: fidl::encoding::Context) -> usize {
18892            8
18893        }
18894
18895        #[inline(always)]
18896        fn inline_size(_context: fidl::encoding::Context) -> usize {
18897            16
18898        }
18899    }
18900
18901    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OfferStorage, D>
18902        for &OfferStorage
18903    {
18904        unsafe fn encode(
18905            self,
18906            encoder: &mut fidl::encoding::Encoder<'_, D>,
18907            offset: usize,
18908            mut depth: fidl::encoding::Depth,
18909        ) -> fidl::Result<()> {
18910            encoder.debug_check_bounds::<OfferStorage>(offset);
18911            // Vector header
18912            let max_ordinal: u64 = self.max_ordinal_present();
18913            encoder.write_num(max_ordinal, offset);
18914            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18915            // Calling encoder.out_of_line_offset(0) is not allowed.
18916            if max_ordinal == 0 {
18917                return Ok(());
18918            }
18919            depth.increment()?;
18920            let envelope_size = 8;
18921            let bytes_len = max_ordinal as usize * envelope_size;
18922            #[allow(unused_variables)]
18923            let offset = encoder.out_of_line_offset(bytes_len);
18924            let mut _prev_end_offset: usize = 0;
18925            if 1 > max_ordinal {
18926                return Ok(());
18927            }
18928
18929            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18930            // are envelope_size bytes.
18931            let cur_offset: usize = (1 - 1) * envelope_size;
18932
18933            // Zero reserved fields.
18934            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18935
18936            // Safety:
18937            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18938            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18939            //   envelope_size bytes, there is always sufficient room.
18940            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
18941                self.source_name.as_ref().map(
18942                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
18943                ),
18944                encoder,
18945                offset + cur_offset,
18946                depth,
18947            )?;
18948
18949            _prev_end_offset = cur_offset + envelope_size;
18950            if 2 > max_ordinal {
18951                return Ok(());
18952            }
18953
18954            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18955            // are envelope_size bytes.
18956            let cur_offset: usize = (2 - 1) * envelope_size;
18957
18958            // Zero reserved fields.
18959            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18960
18961            // Safety:
18962            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18963            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18964            //   envelope_size bytes, there is always sufficient room.
18965            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18966                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18967                encoder,
18968                offset + cur_offset,
18969                depth,
18970            )?;
18971
18972            _prev_end_offset = cur_offset + envelope_size;
18973            if 3 > max_ordinal {
18974                return Ok(());
18975            }
18976
18977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18978            // are envelope_size bytes.
18979            let cur_offset: usize = (3 - 1) * envelope_size;
18980
18981            // Zero reserved fields.
18982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18983
18984            // Safety:
18985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18987            //   envelope_size bytes, there is always sufficient room.
18988            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
18989                self.target.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
18990                encoder,
18991                offset + cur_offset,
18992                depth,
18993            )?;
18994
18995            _prev_end_offset = cur_offset + envelope_size;
18996            if 4 > max_ordinal {
18997                return Ok(());
18998            }
18999
19000            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19001            // are envelope_size bytes.
19002            let cur_offset: usize = (4 - 1) * envelope_size;
19003
19004            // Zero reserved fields.
19005            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19006
19007            // Safety:
19008            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19009            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19010            //   envelope_size bytes, there is always sufficient room.
19011            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19012                self.target_name.as_ref().map(
19013                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19014                ),
19015                encoder,
19016                offset + cur_offset,
19017                depth,
19018            )?;
19019
19020            _prev_end_offset = cur_offset + envelope_size;
19021            if 5 > max_ordinal {
19022                return Ok(());
19023            }
19024
19025            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19026            // are envelope_size bytes.
19027            let cur_offset: usize = (5 - 1) * envelope_size;
19028
19029            // Zero reserved fields.
19030            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19031
19032            // Safety:
19033            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19034            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19035            //   envelope_size bytes, there is always sufficient room.
19036            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
19037                self.availability
19038                    .as_ref()
19039                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
19040                encoder,
19041                offset + cur_offset,
19042                depth,
19043            )?;
19044
19045            _prev_end_offset = cur_offset + envelope_size;
19046
19047            Ok(())
19048        }
19049    }
19050
19051    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OfferStorage {
19052        #[inline(always)]
19053        fn new_empty() -> Self {
19054            Self::default()
19055        }
19056
19057        unsafe fn decode(
19058            &mut self,
19059            decoder: &mut fidl::encoding::Decoder<'_, D>,
19060            offset: usize,
19061            mut depth: fidl::encoding::Depth,
19062        ) -> fidl::Result<()> {
19063            decoder.debug_check_bounds::<Self>(offset);
19064            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19065                None => return Err(fidl::Error::NotNullable),
19066                Some(len) => len,
19067            };
19068            // Calling decoder.out_of_line_offset(0) is not allowed.
19069            if len == 0 {
19070                return Ok(());
19071            };
19072            depth.increment()?;
19073            let envelope_size = 8;
19074            let bytes_len = len * envelope_size;
19075            let offset = decoder.out_of_line_offset(bytes_len)?;
19076            // Decode the envelope for each type.
19077            let mut _next_ordinal_to_read = 0;
19078            let mut next_offset = offset;
19079            let end_offset = offset + bytes_len;
19080            _next_ordinal_to_read += 1;
19081            if next_offset >= end_offset {
19082                return Ok(());
19083            }
19084
19085            // Decode unknown envelopes for gaps in ordinals.
19086            while _next_ordinal_to_read < 1 {
19087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19088                _next_ordinal_to_read += 1;
19089                next_offset += envelope_size;
19090            }
19091
19092            let next_out_of_line = decoder.next_out_of_line();
19093            let handles_before = decoder.remaining_handles();
19094            if let Some((inlined, num_bytes, num_handles)) =
19095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19096            {
19097                let member_inline_size =
19098                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19099                        decoder.context,
19100                    );
19101                if inlined != (member_inline_size <= 4) {
19102                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19103                }
19104                let inner_offset;
19105                let mut inner_depth = depth.clone();
19106                if inlined {
19107                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19108                    inner_offset = next_offset;
19109                } else {
19110                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19111                    inner_depth.increment()?;
19112                }
19113                let val_ref = self
19114                    .source_name
19115                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19116                fidl::decode!(
19117                    fidl::encoding::BoundedString<100>,
19118                    D,
19119                    val_ref,
19120                    decoder,
19121                    inner_offset,
19122                    inner_depth
19123                )?;
19124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19125                {
19126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19127                }
19128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19130                }
19131            }
19132
19133            next_offset += envelope_size;
19134            _next_ordinal_to_read += 1;
19135            if next_offset >= end_offset {
19136                return Ok(());
19137            }
19138
19139            // Decode unknown envelopes for gaps in ordinals.
19140            while _next_ordinal_to_read < 2 {
19141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19142                _next_ordinal_to_read += 1;
19143                next_offset += envelope_size;
19144            }
19145
19146            let next_out_of_line = decoder.next_out_of_line();
19147            let handles_before = decoder.remaining_handles();
19148            if let Some((inlined, num_bytes, num_handles)) =
19149                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19150            {
19151                let member_inline_size =
19152                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19153                if inlined != (member_inline_size <= 4) {
19154                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19155                }
19156                let inner_offset;
19157                let mut inner_depth = depth.clone();
19158                if inlined {
19159                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19160                    inner_offset = next_offset;
19161                } else {
19162                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19163                    inner_depth.increment()?;
19164                }
19165                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19166                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19168                {
19169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19170                }
19171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19173                }
19174            }
19175
19176            next_offset += envelope_size;
19177            _next_ordinal_to_read += 1;
19178            if next_offset >= end_offset {
19179                return Ok(());
19180            }
19181
19182            // Decode unknown envelopes for gaps in ordinals.
19183            while _next_ordinal_to_read < 3 {
19184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19185                _next_ordinal_to_read += 1;
19186                next_offset += envelope_size;
19187            }
19188
19189            let next_out_of_line = decoder.next_out_of_line();
19190            let handles_before = decoder.remaining_handles();
19191            if let Some((inlined, num_bytes, num_handles)) =
19192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19193            {
19194                let member_inline_size =
19195                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19196                if inlined != (member_inline_size <= 4) {
19197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19198                }
19199                let inner_offset;
19200                let mut inner_depth = depth.clone();
19201                if inlined {
19202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19203                    inner_offset = next_offset;
19204                } else {
19205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19206                    inner_depth.increment()?;
19207                }
19208                let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Ref, D));
19209                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
19210                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19211                {
19212                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19213                }
19214                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19215                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19216                }
19217            }
19218
19219            next_offset += envelope_size;
19220            _next_ordinal_to_read += 1;
19221            if next_offset >= end_offset {
19222                return Ok(());
19223            }
19224
19225            // Decode unknown envelopes for gaps in ordinals.
19226            while _next_ordinal_to_read < 4 {
19227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19228                _next_ordinal_to_read += 1;
19229                next_offset += envelope_size;
19230            }
19231
19232            let next_out_of_line = decoder.next_out_of_line();
19233            let handles_before = decoder.remaining_handles();
19234            if let Some((inlined, num_bytes, num_handles)) =
19235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19236            {
19237                let member_inline_size =
19238                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19239                        decoder.context,
19240                    );
19241                if inlined != (member_inline_size <= 4) {
19242                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19243                }
19244                let inner_offset;
19245                let mut inner_depth = depth.clone();
19246                if inlined {
19247                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19248                    inner_offset = next_offset;
19249                } else {
19250                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19251                    inner_depth.increment()?;
19252                }
19253                let val_ref = self
19254                    .target_name
19255                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19256                fidl::decode!(
19257                    fidl::encoding::BoundedString<100>,
19258                    D,
19259                    val_ref,
19260                    decoder,
19261                    inner_offset,
19262                    inner_depth
19263                )?;
19264                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19265                {
19266                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19267                }
19268                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19269                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19270                }
19271            }
19272
19273            next_offset += envelope_size;
19274            _next_ordinal_to_read += 1;
19275            if next_offset >= end_offset {
19276                return Ok(());
19277            }
19278
19279            // Decode unknown envelopes for gaps in ordinals.
19280            while _next_ordinal_to_read < 5 {
19281                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19282                _next_ordinal_to_read += 1;
19283                next_offset += envelope_size;
19284            }
19285
19286            let next_out_of_line = decoder.next_out_of_line();
19287            let handles_before = decoder.remaining_handles();
19288            if let Some((inlined, num_bytes, num_handles)) =
19289                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19290            {
19291                let member_inline_size =
19292                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19293                if inlined != (member_inline_size <= 4) {
19294                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19295                }
19296                let inner_offset;
19297                let mut inner_depth = depth.clone();
19298                if inlined {
19299                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19300                    inner_offset = next_offset;
19301                } else {
19302                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19303                    inner_depth.increment()?;
19304                }
19305                let val_ref =
19306                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
19307                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
19308                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19309                {
19310                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19311                }
19312                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19313                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19314                }
19315            }
19316
19317            next_offset += envelope_size;
19318
19319            // Decode the remaining unknown envelopes.
19320            while next_offset < end_offset {
19321                _next_ordinal_to_read += 1;
19322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19323                next_offset += envelope_size;
19324            }
19325
19326            Ok(())
19327        }
19328    }
19329
19330    impl Program {
19331        #[inline(always)]
19332        fn max_ordinal_present(&self) -> u64 {
19333            if let Some(_) = self.info {
19334                return 2;
19335            }
19336            if let Some(_) = self.runner {
19337                return 1;
19338            }
19339            0
19340        }
19341    }
19342
19343    impl fidl::encoding::ValueTypeMarker for Program {
19344        type Borrowed<'a> = &'a Self;
19345        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19346            value
19347        }
19348    }
19349
19350    unsafe impl fidl::encoding::TypeMarker for Program {
19351        type Owned = Self;
19352
19353        #[inline(always)]
19354        fn inline_align(_context: fidl::encoding::Context) -> usize {
19355            8
19356        }
19357
19358        #[inline(always)]
19359        fn inline_size(_context: fidl::encoding::Context) -> usize {
19360            16
19361        }
19362    }
19363
19364    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Program, D> for &Program {
19365        unsafe fn encode(
19366            self,
19367            encoder: &mut fidl::encoding::Encoder<'_, D>,
19368            offset: usize,
19369            mut depth: fidl::encoding::Depth,
19370        ) -> fidl::Result<()> {
19371            encoder.debug_check_bounds::<Program>(offset);
19372            // Vector header
19373            let max_ordinal: u64 = self.max_ordinal_present();
19374            encoder.write_num(max_ordinal, offset);
19375            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19376            // Calling encoder.out_of_line_offset(0) is not allowed.
19377            if max_ordinal == 0 {
19378                return Ok(());
19379            }
19380            depth.increment()?;
19381            let envelope_size = 8;
19382            let bytes_len = max_ordinal as usize * envelope_size;
19383            #[allow(unused_variables)]
19384            let offset = encoder.out_of_line_offset(bytes_len);
19385            let mut _prev_end_offset: usize = 0;
19386            if 1 > max_ordinal {
19387                return Ok(());
19388            }
19389
19390            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19391            // are envelope_size bytes.
19392            let cur_offset: usize = (1 - 1) * envelope_size;
19393
19394            // Zero reserved fields.
19395            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19396
19397            // Safety:
19398            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19399            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19400            //   envelope_size bytes, there is always sufficient room.
19401            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19402                self.runner.as_ref().map(
19403                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19404                ),
19405                encoder,
19406                offset + cur_offset,
19407                depth,
19408            )?;
19409
19410            _prev_end_offset = cur_offset + envelope_size;
19411            if 2 > max_ordinal {
19412                return Ok(());
19413            }
19414
19415            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19416            // are envelope_size bytes.
19417            let cur_offset: usize = (2 - 1) * envelope_size;
19418
19419            // Zero reserved fields.
19420            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19421
19422            // Safety:
19423            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19424            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19425            //   envelope_size bytes, there is always sufficient room.
19426            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
19427            self.info.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
19428            encoder, offset + cur_offset, depth
19429        )?;
19430
19431            _prev_end_offset = cur_offset + envelope_size;
19432
19433            Ok(())
19434        }
19435    }
19436
19437    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Program {
19438        #[inline(always)]
19439        fn new_empty() -> Self {
19440            Self::default()
19441        }
19442
19443        unsafe fn decode(
19444            &mut self,
19445            decoder: &mut fidl::encoding::Decoder<'_, D>,
19446            offset: usize,
19447            mut depth: fidl::encoding::Depth,
19448        ) -> fidl::Result<()> {
19449            decoder.debug_check_bounds::<Self>(offset);
19450            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19451                None => return Err(fidl::Error::NotNullable),
19452                Some(len) => len,
19453            };
19454            // Calling decoder.out_of_line_offset(0) is not allowed.
19455            if len == 0 {
19456                return Ok(());
19457            };
19458            depth.increment()?;
19459            let envelope_size = 8;
19460            let bytes_len = len * envelope_size;
19461            let offset = decoder.out_of_line_offset(bytes_len)?;
19462            // Decode the envelope for each type.
19463            let mut _next_ordinal_to_read = 0;
19464            let mut next_offset = offset;
19465            let end_offset = offset + bytes_len;
19466            _next_ordinal_to_read += 1;
19467            if next_offset >= end_offset {
19468                return Ok(());
19469            }
19470
19471            // Decode unknown envelopes for gaps in ordinals.
19472            while _next_ordinal_to_read < 1 {
19473                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19474                _next_ordinal_to_read += 1;
19475                next_offset += envelope_size;
19476            }
19477
19478            let next_out_of_line = decoder.next_out_of_line();
19479            let handles_before = decoder.remaining_handles();
19480            if let Some((inlined, num_bytes, num_handles)) =
19481                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19482            {
19483                let member_inline_size =
19484                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19485                        decoder.context,
19486                    );
19487                if inlined != (member_inline_size <= 4) {
19488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19489                }
19490                let inner_offset;
19491                let mut inner_depth = depth.clone();
19492                if inlined {
19493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19494                    inner_offset = next_offset;
19495                } else {
19496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19497                    inner_depth.increment()?;
19498                }
19499                let val_ref = self
19500                    .runner
19501                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19502                fidl::decode!(
19503                    fidl::encoding::BoundedString<100>,
19504                    D,
19505                    val_ref,
19506                    decoder,
19507                    inner_offset,
19508                    inner_depth
19509                )?;
19510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19511                {
19512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19513                }
19514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19516                }
19517            }
19518
19519            next_offset += envelope_size;
19520            _next_ordinal_to_read += 1;
19521            if next_offset >= end_offset {
19522                return Ok(());
19523            }
19524
19525            // Decode unknown envelopes for gaps in ordinals.
19526            while _next_ordinal_to_read < 2 {
19527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19528                _next_ordinal_to_read += 1;
19529                next_offset += envelope_size;
19530            }
19531
19532            let next_out_of_line = decoder.next_out_of_line();
19533            let handles_before = decoder.remaining_handles();
19534            if let Some((inlined, num_bytes, num_handles)) =
19535                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19536            {
19537                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19538                if inlined != (member_inline_size <= 4) {
19539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19540                }
19541                let inner_offset;
19542                let mut inner_depth = depth.clone();
19543                if inlined {
19544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19545                    inner_offset = next_offset;
19546                } else {
19547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19548                    inner_depth.increment()?;
19549                }
19550                let val_ref = self.info.get_or_insert_with(|| {
19551                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
19552                });
19553                fidl::decode!(
19554                    fidl_fuchsia_data__common::Dictionary,
19555                    D,
19556                    val_ref,
19557                    decoder,
19558                    inner_offset,
19559                    inner_depth
19560                )?;
19561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19562                {
19563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19564                }
19565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19567                }
19568            }
19569
19570            next_offset += envelope_size;
19571
19572            // Decode the remaining unknown envelopes.
19573            while next_offset < end_offset {
19574                _next_ordinal_to_read += 1;
19575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19576                next_offset += envelope_size;
19577            }
19578
19579            Ok(())
19580        }
19581    }
19582
19583    impl Protocol {
19584        #[inline(always)]
19585        fn max_ordinal_present(&self) -> u64 {
19586            if let Some(_) = self.delivery {
19587                return 3;
19588            }
19589            if let Some(_) = self.source_path {
19590                return 2;
19591            }
19592            if let Some(_) = self.name {
19593                return 1;
19594            }
19595            0
19596        }
19597    }
19598
19599    impl fidl::encoding::ValueTypeMarker for Protocol {
19600        type Borrowed<'a> = &'a Self;
19601        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19602            value
19603        }
19604    }
19605
19606    unsafe impl fidl::encoding::TypeMarker for Protocol {
19607        type Owned = Self;
19608
19609        #[inline(always)]
19610        fn inline_align(_context: fidl::encoding::Context) -> usize {
19611            8
19612        }
19613
19614        #[inline(always)]
19615        fn inline_size(_context: fidl::encoding::Context) -> usize {
19616            16
19617        }
19618    }
19619
19620    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Protocol, D> for &Protocol {
19621        unsafe fn encode(
19622            self,
19623            encoder: &mut fidl::encoding::Encoder<'_, D>,
19624            offset: usize,
19625            mut depth: fidl::encoding::Depth,
19626        ) -> fidl::Result<()> {
19627            encoder.debug_check_bounds::<Protocol>(offset);
19628            // Vector header
19629            let max_ordinal: u64 = self.max_ordinal_present();
19630            encoder.write_num(max_ordinal, offset);
19631            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19632            // Calling encoder.out_of_line_offset(0) is not allowed.
19633            if max_ordinal == 0 {
19634                return Ok(());
19635            }
19636            depth.increment()?;
19637            let envelope_size = 8;
19638            let bytes_len = max_ordinal as usize * envelope_size;
19639            #[allow(unused_variables)]
19640            let offset = encoder.out_of_line_offset(bytes_len);
19641            let mut _prev_end_offset: usize = 0;
19642            if 1 > max_ordinal {
19643                return Ok(());
19644            }
19645
19646            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19647            // are envelope_size bytes.
19648            let cur_offset: usize = (1 - 1) * envelope_size;
19649
19650            // Zero reserved fields.
19651            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19652
19653            // Safety:
19654            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19655            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19656            //   envelope_size bytes, there is always sufficient room.
19657            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19658                self.name.as_ref().map(
19659                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19660                ),
19661                encoder,
19662                offset + cur_offset,
19663                depth,
19664            )?;
19665
19666            _prev_end_offset = cur_offset + envelope_size;
19667            if 2 > max_ordinal {
19668                return Ok(());
19669            }
19670
19671            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19672            // are envelope_size bytes.
19673            let cur_offset: usize = (2 - 1) * envelope_size;
19674
19675            // Zero reserved fields.
19676            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19677
19678            // Safety:
19679            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19680            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19681            //   envelope_size bytes, there is always sufficient room.
19682            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
19683            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
19684            encoder, offset + cur_offset, depth
19685        )?;
19686
19687            _prev_end_offset = cur_offset + envelope_size;
19688            if 3 > max_ordinal {
19689                return Ok(());
19690            }
19691
19692            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19693            // are envelope_size bytes.
19694            let cur_offset: usize = (3 - 1) * envelope_size;
19695
19696            // Zero reserved fields.
19697            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19698
19699            // Safety:
19700            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19701            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19702            //   envelope_size bytes, there is always sufficient room.
19703            fidl::encoding::encode_in_envelope_optional::<DeliveryType, D>(
19704                self.delivery
19705                    .as_ref()
19706                    .map(<DeliveryType as fidl::encoding::ValueTypeMarker>::borrow),
19707                encoder,
19708                offset + cur_offset,
19709                depth,
19710            )?;
19711
19712            _prev_end_offset = cur_offset + envelope_size;
19713
19714            Ok(())
19715        }
19716    }
19717
19718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Protocol {
19719        #[inline(always)]
19720        fn new_empty() -> Self {
19721            Self::default()
19722        }
19723
19724        unsafe fn decode(
19725            &mut self,
19726            decoder: &mut fidl::encoding::Decoder<'_, D>,
19727            offset: usize,
19728            mut depth: fidl::encoding::Depth,
19729        ) -> fidl::Result<()> {
19730            decoder.debug_check_bounds::<Self>(offset);
19731            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19732                None => return Err(fidl::Error::NotNullable),
19733                Some(len) => len,
19734            };
19735            // Calling decoder.out_of_line_offset(0) is not allowed.
19736            if len == 0 {
19737                return Ok(());
19738            };
19739            depth.increment()?;
19740            let envelope_size = 8;
19741            let bytes_len = len * envelope_size;
19742            let offset = decoder.out_of_line_offset(bytes_len)?;
19743            // Decode the envelope for each type.
19744            let mut _next_ordinal_to_read = 0;
19745            let mut next_offset = offset;
19746            let end_offset = offset + bytes_len;
19747            _next_ordinal_to_read += 1;
19748            if next_offset >= end_offset {
19749                return Ok(());
19750            }
19751
19752            // Decode unknown envelopes for gaps in ordinals.
19753            while _next_ordinal_to_read < 1 {
19754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19755                _next_ordinal_to_read += 1;
19756                next_offset += envelope_size;
19757            }
19758
19759            let next_out_of_line = decoder.next_out_of_line();
19760            let handles_before = decoder.remaining_handles();
19761            if let Some((inlined, num_bytes, num_handles)) =
19762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19763            {
19764                let member_inline_size =
19765                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
19766                        decoder.context,
19767                    );
19768                if inlined != (member_inline_size <= 4) {
19769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19770                }
19771                let inner_offset;
19772                let mut inner_depth = depth.clone();
19773                if inlined {
19774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19775                    inner_offset = next_offset;
19776                } else {
19777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19778                    inner_depth.increment()?;
19779                }
19780                let val_ref = self
19781                    .name
19782                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
19783                fidl::decode!(
19784                    fidl::encoding::BoundedString<100>,
19785                    D,
19786                    val_ref,
19787                    decoder,
19788                    inner_offset,
19789                    inner_depth
19790                )?;
19791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19792                {
19793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19794                }
19795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19797                }
19798            }
19799
19800            next_offset += envelope_size;
19801            _next_ordinal_to_read += 1;
19802            if next_offset >= end_offset {
19803                return Ok(());
19804            }
19805
19806            // Decode unknown envelopes for gaps in ordinals.
19807            while _next_ordinal_to_read < 2 {
19808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19809                _next_ordinal_to_read += 1;
19810                next_offset += envelope_size;
19811            }
19812
19813            let next_out_of_line = decoder.next_out_of_line();
19814            let handles_before = decoder.remaining_handles();
19815            if let Some((inlined, num_bytes, num_handles)) =
19816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19817            {
19818                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19819                if inlined != (member_inline_size <= 4) {
19820                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19821                }
19822                let inner_offset;
19823                let mut inner_depth = depth.clone();
19824                if inlined {
19825                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19826                    inner_offset = next_offset;
19827                } else {
19828                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19829                    inner_depth.increment()?;
19830                }
19831                let val_ref = self.source_path.get_or_insert_with(|| {
19832                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
19833                });
19834                fidl::decode!(
19835                    fidl::encoding::BoundedString<1024>,
19836                    D,
19837                    val_ref,
19838                    decoder,
19839                    inner_offset,
19840                    inner_depth
19841                )?;
19842                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19843                {
19844                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19845                }
19846                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19847                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19848                }
19849            }
19850
19851            next_offset += envelope_size;
19852            _next_ordinal_to_read += 1;
19853            if next_offset >= end_offset {
19854                return Ok(());
19855            }
19856
19857            // Decode unknown envelopes for gaps in ordinals.
19858            while _next_ordinal_to_read < 3 {
19859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19860                _next_ordinal_to_read += 1;
19861                next_offset += envelope_size;
19862            }
19863
19864            let next_out_of_line = decoder.next_out_of_line();
19865            let handles_before = decoder.remaining_handles();
19866            if let Some((inlined, num_bytes, num_handles)) =
19867                fidl::encoding::decode_envelope_header(decoder, next_offset)?
19868            {
19869                let member_inline_size =
19870                    <DeliveryType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19871                if inlined != (member_inline_size <= 4) {
19872                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
19873                }
19874                let inner_offset;
19875                let mut inner_depth = depth.clone();
19876                if inlined {
19877                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19878                    inner_offset = next_offset;
19879                } else {
19880                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19881                    inner_depth.increment()?;
19882                }
19883                let val_ref =
19884                    self.delivery.get_or_insert_with(|| fidl::new_empty!(DeliveryType, D));
19885                fidl::decode!(DeliveryType, D, val_ref, decoder, inner_offset, inner_depth)?;
19886                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19887                {
19888                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
19889                }
19890                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19891                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19892                }
19893            }
19894
19895            next_offset += envelope_size;
19896
19897            // Decode the remaining unknown envelopes.
19898            while next_offset < end_offset {
19899                _next_ordinal_to_read += 1;
19900                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19901                next_offset += envelope_size;
19902            }
19903
19904            Ok(())
19905        }
19906    }
19907
19908    impl Resolver {
19909        #[inline(always)]
19910        fn max_ordinal_present(&self) -> u64 {
19911            if let Some(_) = self.source_path {
19912                return 2;
19913            }
19914            if let Some(_) = self.name {
19915                return 1;
19916            }
19917            0
19918        }
19919    }
19920
19921    impl fidl::encoding::ValueTypeMarker for Resolver {
19922        type Borrowed<'a> = &'a Self;
19923        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19924            value
19925        }
19926    }
19927
19928    unsafe impl fidl::encoding::TypeMarker for Resolver {
19929        type Owned = Self;
19930
19931        #[inline(always)]
19932        fn inline_align(_context: fidl::encoding::Context) -> usize {
19933            8
19934        }
19935
19936        #[inline(always)]
19937        fn inline_size(_context: fidl::encoding::Context) -> usize {
19938            16
19939        }
19940    }
19941
19942    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Resolver, D> for &Resolver {
19943        unsafe fn encode(
19944            self,
19945            encoder: &mut fidl::encoding::Encoder<'_, D>,
19946            offset: usize,
19947            mut depth: fidl::encoding::Depth,
19948        ) -> fidl::Result<()> {
19949            encoder.debug_check_bounds::<Resolver>(offset);
19950            // Vector header
19951            let max_ordinal: u64 = self.max_ordinal_present();
19952            encoder.write_num(max_ordinal, offset);
19953            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19954            // Calling encoder.out_of_line_offset(0) is not allowed.
19955            if max_ordinal == 0 {
19956                return Ok(());
19957            }
19958            depth.increment()?;
19959            let envelope_size = 8;
19960            let bytes_len = max_ordinal as usize * envelope_size;
19961            #[allow(unused_variables)]
19962            let offset = encoder.out_of_line_offset(bytes_len);
19963            let mut _prev_end_offset: usize = 0;
19964            if 1 > max_ordinal {
19965                return Ok(());
19966            }
19967
19968            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19969            // are envelope_size bytes.
19970            let cur_offset: usize = (1 - 1) * envelope_size;
19971
19972            // Zero reserved fields.
19973            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19974
19975            // Safety:
19976            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
19977            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
19978            //   envelope_size bytes, there is always sufficient room.
19979            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
19980                self.name.as_ref().map(
19981                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
19982                ),
19983                encoder,
19984                offset + cur_offset,
19985                depth,
19986            )?;
19987
19988            _prev_end_offset = cur_offset + envelope_size;
19989            if 2 > max_ordinal {
19990                return Ok(());
19991            }
19992
19993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
19994            // are envelope_size bytes.
19995            let cur_offset: usize = (2 - 1) * envelope_size;
19996
19997            // Zero reserved fields.
19998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19999
20000            // Safety:
20001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20003            //   envelope_size bytes, there is always sufficient room.
20004            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20005            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20006            encoder, offset + cur_offset, depth
20007        )?;
20008
20009            _prev_end_offset = cur_offset + envelope_size;
20010
20011            Ok(())
20012        }
20013    }
20014
20015    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Resolver {
20016        #[inline(always)]
20017        fn new_empty() -> Self {
20018            Self::default()
20019        }
20020
20021        unsafe fn decode(
20022            &mut self,
20023            decoder: &mut fidl::encoding::Decoder<'_, D>,
20024            offset: usize,
20025            mut depth: fidl::encoding::Depth,
20026        ) -> fidl::Result<()> {
20027            decoder.debug_check_bounds::<Self>(offset);
20028            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20029                None => return Err(fidl::Error::NotNullable),
20030                Some(len) => len,
20031            };
20032            // Calling decoder.out_of_line_offset(0) is not allowed.
20033            if len == 0 {
20034                return Ok(());
20035            };
20036            depth.increment()?;
20037            let envelope_size = 8;
20038            let bytes_len = len * envelope_size;
20039            let offset = decoder.out_of_line_offset(bytes_len)?;
20040            // Decode the envelope for each type.
20041            let mut _next_ordinal_to_read = 0;
20042            let mut next_offset = offset;
20043            let end_offset = offset + bytes_len;
20044            _next_ordinal_to_read += 1;
20045            if next_offset >= end_offset {
20046                return Ok(());
20047            }
20048
20049            // Decode unknown envelopes for gaps in ordinals.
20050            while _next_ordinal_to_read < 1 {
20051                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20052                _next_ordinal_to_read += 1;
20053                next_offset += envelope_size;
20054            }
20055
20056            let next_out_of_line = decoder.next_out_of_line();
20057            let handles_before = decoder.remaining_handles();
20058            if let Some((inlined, num_bytes, num_handles)) =
20059                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20060            {
20061                let member_inline_size =
20062                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20063                        decoder.context,
20064                    );
20065                if inlined != (member_inline_size <= 4) {
20066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20067                }
20068                let inner_offset;
20069                let mut inner_depth = depth.clone();
20070                if inlined {
20071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20072                    inner_offset = next_offset;
20073                } else {
20074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20075                    inner_depth.increment()?;
20076                }
20077                let val_ref = self
20078                    .name
20079                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20080                fidl::decode!(
20081                    fidl::encoding::BoundedString<100>,
20082                    D,
20083                    val_ref,
20084                    decoder,
20085                    inner_offset,
20086                    inner_depth
20087                )?;
20088                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20089                {
20090                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20091                }
20092                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20093                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20094                }
20095            }
20096
20097            next_offset += envelope_size;
20098            _next_ordinal_to_read += 1;
20099            if next_offset >= end_offset {
20100                return Ok(());
20101            }
20102
20103            // Decode unknown envelopes for gaps in ordinals.
20104            while _next_ordinal_to_read < 2 {
20105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20106                _next_ordinal_to_read += 1;
20107                next_offset += envelope_size;
20108            }
20109
20110            let next_out_of_line = decoder.next_out_of_line();
20111            let handles_before = decoder.remaining_handles();
20112            if let Some((inlined, num_bytes, num_handles)) =
20113                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20114            {
20115                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20116                if inlined != (member_inline_size <= 4) {
20117                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20118                }
20119                let inner_offset;
20120                let mut inner_depth = depth.clone();
20121                if inlined {
20122                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20123                    inner_offset = next_offset;
20124                } else {
20125                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20126                    inner_depth.increment()?;
20127                }
20128                let val_ref = self.source_path.get_or_insert_with(|| {
20129                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20130                });
20131                fidl::decode!(
20132                    fidl::encoding::BoundedString<1024>,
20133                    D,
20134                    val_ref,
20135                    decoder,
20136                    inner_offset,
20137                    inner_depth
20138                )?;
20139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20140                {
20141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20142                }
20143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20145                }
20146            }
20147
20148            next_offset += envelope_size;
20149
20150            // Decode the remaining unknown envelopes.
20151            while next_offset < end_offset {
20152                _next_ordinal_to_read += 1;
20153                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20154                next_offset += envelope_size;
20155            }
20156
20157            Ok(())
20158        }
20159    }
20160
20161    impl ResolverRegistration {
20162        #[inline(always)]
20163        fn max_ordinal_present(&self) -> u64 {
20164            if let Some(_) = self.scheme {
20165                return 3;
20166            }
20167            if let Some(_) = self.source {
20168                return 2;
20169            }
20170            if let Some(_) = self.resolver {
20171                return 1;
20172            }
20173            0
20174        }
20175    }
20176
20177    impl fidl::encoding::ValueTypeMarker for ResolverRegistration {
20178        type Borrowed<'a> = &'a Self;
20179        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20180            value
20181        }
20182    }
20183
20184    unsafe impl fidl::encoding::TypeMarker for ResolverRegistration {
20185        type Owned = Self;
20186
20187        #[inline(always)]
20188        fn inline_align(_context: fidl::encoding::Context) -> usize {
20189            8
20190        }
20191
20192        #[inline(always)]
20193        fn inline_size(_context: fidl::encoding::Context) -> usize {
20194            16
20195        }
20196    }
20197
20198    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResolverRegistration, D>
20199        for &ResolverRegistration
20200    {
20201        unsafe fn encode(
20202            self,
20203            encoder: &mut fidl::encoding::Encoder<'_, D>,
20204            offset: usize,
20205            mut depth: fidl::encoding::Depth,
20206        ) -> fidl::Result<()> {
20207            encoder.debug_check_bounds::<ResolverRegistration>(offset);
20208            // Vector header
20209            let max_ordinal: u64 = self.max_ordinal_present();
20210            encoder.write_num(max_ordinal, offset);
20211            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20212            // Calling encoder.out_of_line_offset(0) is not allowed.
20213            if max_ordinal == 0 {
20214                return Ok(());
20215            }
20216            depth.increment()?;
20217            let envelope_size = 8;
20218            let bytes_len = max_ordinal as usize * envelope_size;
20219            #[allow(unused_variables)]
20220            let offset = encoder.out_of_line_offset(bytes_len);
20221            let mut _prev_end_offset: usize = 0;
20222            if 1 > max_ordinal {
20223                return Ok(());
20224            }
20225
20226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20227            // are envelope_size bytes.
20228            let cur_offset: usize = (1 - 1) * envelope_size;
20229
20230            // Zero reserved fields.
20231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20232
20233            // Safety:
20234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20236            //   envelope_size bytes, there is always sufficient room.
20237            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20238                self.resolver.as_ref().map(
20239                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20240                ),
20241                encoder,
20242                offset + cur_offset,
20243                depth,
20244            )?;
20245
20246            _prev_end_offset = cur_offset + envelope_size;
20247            if 2 > max_ordinal {
20248                return Ok(());
20249            }
20250
20251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20252            // are envelope_size bytes.
20253            let cur_offset: usize = (2 - 1) * envelope_size;
20254
20255            // Zero reserved fields.
20256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20257
20258            // Safety:
20259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20261            //   envelope_size bytes, there is always sufficient room.
20262            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
20263                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
20264                encoder,
20265                offset + cur_offset,
20266                depth,
20267            )?;
20268
20269            _prev_end_offset = cur_offset + envelope_size;
20270            if 3 > max_ordinal {
20271                return Ok(());
20272            }
20273
20274            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20275            // are envelope_size bytes.
20276            let cur_offset: usize = (3 - 1) * envelope_size;
20277
20278            // Zero reserved fields.
20279            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20280
20281            // Safety:
20282            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20283            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20284            //   envelope_size bytes, there is always sufficient room.
20285            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20286                self.scheme.as_ref().map(
20287                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20288                ),
20289                encoder,
20290                offset + cur_offset,
20291                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 ResolverRegistration {
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                    .resolver
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 =
20401                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20402                if inlined != (member_inline_size <= 4) {
20403                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20404                }
20405                let inner_offset;
20406                let mut inner_depth = depth.clone();
20407                if inlined {
20408                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20409                    inner_offset = next_offset;
20410                } else {
20411                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20412                    inner_depth.increment()?;
20413                }
20414                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
20415                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
20416                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20417                {
20418                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20419                }
20420                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20421                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20422                }
20423            }
20424
20425            next_offset += envelope_size;
20426            _next_ordinal_to_read += 1;
20427            if next_offset >= end_offset {
20428                return Ok(());
20429            }
20430
20431            // Decode unknown envelopes for gaps in ordinals.
20432            while _next_ordinal_to_read < 3 {
20433                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20434                _next_ordinal_to_read += 1;
20435                next_offset += envelope_size;
20436            }
20437
20438            let next_out_of_line = decoder.next_out_of_line();
20439            let handles_before = decoder.remaining_handles();
20440            if let Some((inlined, num_bytes, num_handles)) =
20441                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20442            {
20443                let member_inline_size =
20444                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20445                        decoder.context,
20446                    );
20447                if inlined != (member_inline_size <= 4) {
20448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20449                }
20450                let inner_offset;
20451                let mut inner_depth = depth.clone();
20452                if inlined {
20453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20454                    inner_offset = next_offset;
20455                } else {
20456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20457                    inner_depth.increment()?;
20458                }
20459                let val_ref = self
20460                    .scheme
20461                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20462                fidl::decode!(
20463                    fidl::encoding::BoundedString<100>,
20464                    D,
20465                    val_ref,
20466                    decoder,
20467                    inner_offset,
20468                    inner_depth
20469                )?;
20470                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20471                {
20472                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20473                }
20474                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20475                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20476                }
20477            }
20478
20479            next_offset += envelope_size;
20480
20481            // Decode the remaining unknown envelopes.
20482            while next_offset < end_offset {
20483                _next_ordinal_to_read += 1;
20484                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20485                next_offset += envelope_size;
20486            }
20487
20488            Ok(())
20489        }
20490    }
20491
20492    impl Runner {
20493        #[inline(always)]
20494        fn max_ordinal_present(&self) -> u64 {
20495            if let Some(_) = self.source_path {
20496                return 2;
20497            }
20498            if let Some(_) = self.name {
20499                return 1;
20500            }
20501            0
20502        }
20503    }
20504
20505    impl fidl::encoding::ValueTypeMarker for Runner {
20506        type Borrowed<'a> = &'a Self;
20507        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20508            value
20509        }
20510    }
20511
20512    unsafe impl fidl::encoding::TypeMarker for Runner {
20513        type Owned = Self;
20514
20515        #[inline(always)]
20516        fn inline_align(_context: fidl::encoding::Context) -> usize {
20517            8
20518        }
20519
20520        #[inline(always)]
20521        fn inline_size(_context: fidl::encoding::Context) -> usize {
20522            16
20523        }
20524    }
20525
20526    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Runner, D> for &Runner {
20527        unsafe fn encode(
20528            self,
20529            encoder: &mut fidl::encoding::Encoder<'_, D>,
20530            offset: usize,
20531            mut depth: fidl::encoding::Depth,
20532        ) -> fidl::Result<()> {
20533            encoder.debug_check_bounds::<Runner>(offset);
20534            // Vector header
20535            let max_ordinal: u64 = self.max_ordinal_present();
20536            encoder.write_num(max_ordinal, offset);
20537            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20538            // Calling encoder.out_of_line_offset(0) is not allowed.
20539            if max_ordinal == 0 {
20540                return Ok(());
20541            }
20542            depth.increment()?;
20543            let envelope_size = 8;
20544            let bytes_len = max_ordinal as usize * envelope_size;
20545            #[allow(unused_variables)]
20546            let offset = encoder.out_of_line_offset(bytes_len);
20547            let mut _prev_end_offset: usize = 0;
20548            if 1 > max_ordinal {
20549                return Ok(());
20550            }
20551
20552            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20553            // are envelope_size bytes.
20554            let cur_offset: usize = (1 - 1) * envelope_size;
20555
20556            // Zero reserved fields.
20557            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20558
20559            // Safety:
20560            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20561            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20562            //   envelope_size bytes, there is always sufficient room.
20563            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20564                self.name.as_ref().map(
20565                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20566                ),
20567                encoder,
20568                offset + cur_offset,
20569                depth,
20570            )?;
20571
20572            _prev_end_offset = cur_offset + envelope_size;
20573            if 2 > max_ordinal {
20574                return Ok(());
20575            }
20576
20577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20578            // are envelope_size bytes.
20579            let cur_offset: usize = (2 - 1) * envelope_size;
20580
20581            // Zero reserved fields.
20582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20583
20584            // Safety:
20585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20587            //   envelope_size bytes, there is always sufficient room.
20588            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
20589            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
20590            encoder, offset + cur_offset, depth
20591        )?;
20592
20593            _prev_end_offset = cur_offset + envelope_size;
20594
20595            Ok(())
20596        }
20597    }
20598
20599    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Runner {
20600        #[inline(always)]
20601        fn new_empty() -> Self {
20602            Self::default()
20603        }
20604
20605        unsafe fn decode(
20606            &mut self,
20607            decoder: &mut fidl::encoding::Decoder<'_, D>,
20608            offset: usize,
20609            mut depth: fidl::encoding::Depth,
20610        ) -> fidl::Result<()> {
20611            decoder.debug_check_bounds::<Self>(offset);
20612            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20613                None => return Err(fidl::Error::NotNullable),
20614                Some(len) => len,
20615            };
20616            // Calling decoder.out_of_line_offset(0) is not allowed.
20617            if len == 0 {
20618                return Ok(());
20619            };
20620            depth.increment()?;
20621            let envelope_size = 8;
20622            let bytes_len = len * envelope_size;
20623            let offset = decoder.out_of_line_offset(bytes_len)?;
20624            // Decode the envelope for each type.
20625            let mut _next_ordinal_to_read = 0;
20626            let mut next_offset = offset;
20627            let end_offset = offset + bytes_len;
20628            _next_ordinal_to_read += 1;
20629            if next_offset >= end_offset {
20630                return Ok(());
20631            }
20632
20633            // Decode unknown envelopes for gaps in ordinals.
20634            while _next_ordinal_to_read < 1 {
20635                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20636                _next_ordinal_to_read += 1;
20637                next_offset += envelope_size;
20638            }
20639
20640            let next_out_of_line = decoder.next_out_of_line();
20641            let handles_before = decoder.remaining_handles();
20642            if let Some((inlined, num_bytes, num_handles)) =
20643                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20644            {
20645                let member_inline_size =
20646                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
20647                        decoder.context,
20648                    );
20649                if inlined != (member_inline_size <= 4) {
20650                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20651                }
20652                let inner_offset;
20653                let mut inner_depth = depth.clone();
20654                if inlined {
20655                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20656                    inner_offset = next_offset;
20657                } else {
20658                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20659                    inner_depth.increment()?;
20660                }
20661                let val_ref = self
20662                    .name
20663                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
20664                fidl::decode!(
20665                    fidl::encoding::BoundedString<100>,
20666                    D,
20667                    val_ref,
20668                    decoder,
20669                    inner_offset,
20670                    inner_depth
20671                )?;
20672                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20673                {
20674                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20675                }
20676                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20677                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20678                }
20679            }
20680
20681            next_offset += envelope_size;
20682            _next_ordinal_to_read += 1;
20683            if next_offset >= end_offset {
20684                return Ok(());
20685            }
20686
20687            // Decode unknown envelopes for gaps in ordinals.
20688            while _next_ordinal_to_read < 2 {
20689                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20690                _next_ordinal_to_read += 1;
20691                next_offset += envelope_size;
20692            }
20693
20694            let next_out_of_line = decoder.next_out_of_line();
20695            let handles_before = decoder.remaining_handles();
20696            if let Some((inlined, num_bytes, num_handles)) =
20697                fidl::encoding::decode_envelope_header(decoder, next_offset)?
20698            {
20699                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20700                if inlined != (member_inline_size <= 4) {
20701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20702                }
20703                let inner_offset;
20704                let mut inner_depth = depth.clone();
20705                if inlined {
20706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20707                    inner_offset = next_offset;
20708                } else {
20709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20710                    inner_depth.increment()?;
20711                }
20712                let val_ref = self.source_path.get_or_insert_with(|| {
20713                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
20714                });
20715                fidl::decode!(
20716                    fidl::encoding::BoundedString<1024>,
20717                    D,
20718                    val_ref,
20719                    decoder,
20720                    inner_offset,
20721                    inner_depth
20722                )?;
20723                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20724                {
20725                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
20726                }
20727                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20728                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20729                }
20730            }
20731
20732            next_offset += envelope_size;
20733
20734            // Decode the remaining unknown envelopes.
20735            while next_offset < end_offset {
20736                _next_ordinal_to_read += 1;
20737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20738                next_offset += envelope_size;
20739            }
20740
20741            Ok(())
20742        }
20743    }
20744
20745    impl RunnerRegistration {
20746        #[inline(always)]
20747        fn max_ordinal_present(&self) -> u64 {
20748            if let Some(_) = self.target_name {
20749                return 3;
20750            }
20751            if let Some(_) = self.source {
20752                return 2;
20753            }
20754            if let Some(_) = self.source_name {
20755                return 1;
20756            }
20757            0
20758        }
20759    }
20760
20761    impl fidl::encoding::ValueTypeMarker for RunnerRegistration {
20762        type Borrowed<'a> = &'a Self;
20763        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20764            value
20765        }
20766    }
20767
20768    unsafe impl fidl::encoding::TypeMarker for RunnerRegistration {
20769        type Owned = Self;
20770
20771        #[inline(always)]
20772        fn inline_align(_context: fidl::encoding::Context) -> usize {
20773            8
20774        }
20775
20776        #[inline(always)]
20777        fn inline_size(_context: fidl::encoding::Context) -> usize {
20778            16
20779        }
20780    }
20781
20782    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RunnerRegistration, D>
20783        for &RunnerRegistration
20784    {
20785        unsafe fn encode(
20786            self,
20787            encoder: &mut fidl::encoding::Encoder<'_, D>,
20788            offset: usize,
20789            mut depth: fidl::encoding::Depth,
20790        ) -> fidl::Result<()> {
20791            encoder.debug_check_bounds::<RunnerRegistration>(offset);
20792            // Vector header
20793            let max_ordinal: u64 = self.max_ordinal_present();
20794            encoder.write_num(max_ordinal, offset);
20795            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20796            // Calling encoder.out_of_line_offset(0) is not allowed.
20797            if max_ordinal == 0 {
20798                return Ok(());
20799            }
20800            depth.increment()?;
20801            let envelope_size = 8;
20802            let bytes_len = max_ordinal as usize * envelope_size;
20803            #[allow(unused_variables)]
20804            let offset = encoder.out_of_line_offset(bytes_len);
20805            let mut _prev_end_offset: usize = 0;
20806            if 1 > max_ordinal {
20807                return Ok(());
20808            }
20809
20810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20811            // are envelope_size bytes.
20812            let cur_offset: usize = (1 - 1) * envelope_size;
20813
20814            // Zero reserved fields.
20815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20816
20817            // Safety:
20818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20820            //   envelope_size bytes, there is always sufficient room.
20821            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20822                self.source_name.as_ref().map(
20823                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20824                ),
20825                encoder,
20826                offset + cur_offset,
20827                depth,
20828            )?;
20829
20830            _prev_end_offset = cur_offset + envelope_size;
20831            if 2 > max_ordinal {
20832                return Ok(());
20833            }
20834
20835            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20836            // are envelope_size bytes.
20837            let cur_offset: usize = (2 - 1) * envelope_size;
20838
20839            // Zero reserved fields.
20840            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20841
20842            // Safety:
20843            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20844            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20845            //   envelope_size bytes, there is always sufficient room.
20846            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
20847                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
20848                encoder,
20849                offset + cur_offset,
20850                depth,
20851            )?;
20852
20853            _prev_end_offset = cur_offset + envelope_size;
20854            if 3 > max_ordinal {
20855                return Ok(());
20856            }
20857
20858            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
20859            // are envelope_size bytes.
20860            let cur_offset: usize = (3 - 1) * envelope_size;
20861
20862            // Zero reserved fields.
20863            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20864
20865            // Safety:
20866            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
20867            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
20868            //   envelope_size bytes, there is always sufficient room.
20869            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
20870                self.target_name.as_ref().map(
20871                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
20872                ),
20873                encoder,
20874                offset + cur_offset,
20875                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 RunnerRegistration {
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                    .source_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 =
20985                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20986                if inlined != (member_inline_size <= 4) {
20987                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
20988                }
20989                let inner_offset;
20990                let mut inner_depth = depth.clone();
20991                if inlined {
20992                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20993                    inner_offset = next_offset;
20994                } else {
20995                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20996                    inner_depth.increment()?;
20997                }
20998                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
20999                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21000                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21001                {
21002                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21003                }
21004                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21005                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21006                }
21007            }
21008
21009            next_offset += envelope_size;
21010            _next_ordinal_to_read += 1;
21011            if next_offset >= end_offset {
21012                return Ok(());
21013            }
21014
21015            // Decode unknown envelopes for gaps in ordinals.
21016            while _next_ordinal_to_read < 3 {
21017                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21018                _next_ordinal_to_read += 1;
21019                next_offset += envelope_size;
21020            }
21021
21022            let next_out_of_line = decoder.next_out_of_line();
21023            let handles_before = decoder.remaining_handles();
21024            if let Some((inlined, num_bytes, num_handles)) =
21025                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21026            {
21027                let member_inline_size =
21028                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21029                        decoder.context,
21030                    );
21031                if inlined != (member_inline_size <= 4) {
21032                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21033                }
21034                let inner_offset;
21035                let mut inner_depth = depth.clone();
21036                if inlined {
21037                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21038                    inner_offset = next_offset;
21039                } else {
21040                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21041                    inner_depth.increment()?;
21042                }
21043                let val_ref = self
21044                    .target_name
21045                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21046                fidl::decode!(
21047                    fidl::encoding::BoundedString<100>,
21048                    D,
21049                    val_ref,
21050                    decoder,
21051                    inner_offset,
21052                    inner_depth
21053                )?;
21054                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21055                {
21056                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21057                }
21058                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21059                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21060                }
21061            }
21062
21063            next_offset += envelope_size;
21064
21065            // Decode the remaining unknown envelopes.
21066            while next_offset < end_offset {
21067                _next_ordinal_to_read += 1;
21068                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21069                next_offset += envelope_size;
21070            }
21071
21072            Ok(())
21073        }
21074    }
21075
21076    impl Service {
21077        #[inline(always)]
21078        fn max_ordinal_present(&self) -> u64 {
21079            if let Some(_) = self.source_path {
21080                return 2;
21081            }
21082            if let Some(_) = self.name {
21083                return 1;
21084            }
21085            0
21086        }
21087    }
21088
21089    impl fidl::encoding::ValueTypeMarker for Service {
21090        type Borrowed<'a> = &'a Self;
21091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21092            value
21093        }
21094    }
21095
21096    unsafe impl fidl::encoding::TypeMarker for Service {
21097        type Owned = Self;
21098
21099        #[inline(always)]
21100        fn inline_align(_context: fidl::encoding::Context) -> usize {
21101            8
21102        }
21103
21104        #[inline(always)]
21105        fn inline_size(_context: fidl::encoding::Context) -> usize {
21106            16
21107        }
21108    }
21109
21110    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Service, D> for &Service {
21111        unsafe fn encode(
21112            self,
21113            encoder: &mut fidl::encoding::Encoder<'_, D>,
21114            offset: usize,
21115            mut depth: fidl::encoding::Depth,
21116        ) -> fidl::Result<()> {
21117            encoder.debug_check_bounds::<Service>(offset);
21118            // Vector header
21119            let max_ordinal: u64 = self.max_ordinal_present();
21120            encoder.write_num(max_ordinal, offset);
21121            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21122            // Calling encoder.out_of_line_offset(0) is not allowed.
21123            if max_ordinal == 0 {
21124                return Ok(());
21125            }
21126            depth.increment()?;
21127            let envelope_size = 8;
21128            let bytes_len = max_ordinal as usize * envelope_size;
21129            #[allow(unused_variables)]
21130            let offset = encoder.out_of_line_offset(bytes_len);
21131            let mut _prev_end_offset: usize = 0;
21132            if 1 > max_ordinal {
21133                return Ok(());
21134            }
21135
21136            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21137            // are envelope_size bytes.
21138            let cur_offset: usize = (1 - 1) * envelope_size;
21139
21140            // Zero reserved fields.
21141            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21142
21143            // Safety:
21144            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21145            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21146            //   envelope_size bytes, there is always sufficient room.
21147            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21148                self.name.as_ref().map(
21149                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21150                ),
21151                encoder,
21152                offset + cur_offset,
21153                depth,
21154            )?;
21155
21156            _prev_end_offset = cur_offset + envelope_size;
21157            if 2 > max_ordinal {
21158                return Ok(());
21159            }
21160
21161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21162            // are envelope_size bytes.
21163            let cur_offset: usize = (2 - 1) * envelope_size;
21164
21165            // Zero reserved fields.
21166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21167
21168            // Safety:
21169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21171            //   envelope_size bytes, there is always sufficient room.
21172            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
21173            self.source_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21174            encoder, offset + cur_offset, depth
21175        )?;
21176
21177            _prev_end_offset = cur_offset + envelope_size;
21178
21179            Ok(())
21180        }
21181    }
21182
21183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Service {
21184        #[inline(always)]
21185        fn new_empty() -> Self {
21186            Self::default()
21187        }
21188
21189        unsafe fn decode(
21190            &mut self,
21191            decoder: &mut fidl::encoding::Decoder<'_, D>,
21192            offset: usize,
21193            mut depth: fidl::encoding::Depth,
21194        ) -> fidl::Result<()> {
21195            decoder.debug_check_bounds::<Self>(offset);
21196            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21197                None => return Err(fidl::Error::NotNullable),
21198                Some(len) => len,
21199            };
21200            // Calling decoder.out_of_line_offset(0) is not allowed.
21201            if len == 0 {
21202                return Ok(());
21203            };
21204            depth.increment()?;
21205            let envelope_size = 8;
21206            let bytes_len = len * envelope_size;
21207            let offset = decoder.out_of_line_offset(bytes_len)?;
21208            // Decode the envelope for each type.
21209            let mut _next_ordinal_to_read = 0;
21210            let mut next_offset = offset;
21211            let end_offset = offset + bytes_len;
21212            _next_ordinal_to_read += 1;
21213            if next_offset >= end_offset {
21214                return Ok(());
21215            }
21216
21217            // Decode unknown envelopes for gaps in ordinals.
21218            while _next_ordinal_to_read < 1 {
21219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21220                _next_ordinal_to_read += 1;
21221                next_offset += envelope_size;
21222            }
21223
21224            let next_out_of_line = decoder.next_out_of_line();
21225            let handles_before = decoder.remaining_handles();
21226            if let Some((inlined, num_bytes, num_handles)) =
21227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21228            {
21229                let member_inline_size =
21230                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21231                        decoder.context,
21232                    );
21233                if inlined != (member_inline_size <= 4) {
21234                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21235                }
21236                let inner_offset;
21237                let mut inner_depth = depth.clone();
21238                if inlined {
21239                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21240                    inner_offset = next_offset;
21241                } else {
21242                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21243                    inner_depth.increment()?;
21244                }
21245                let val_ref = self
21246                    .name
21247                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21248                fidl::decode!(
21249                    fidl::encoding::BoundedString<100>,
21250                    D,
21251                    val_ref,
21252                    decoder,
21253                    inner_offset,
21254                    inner_depth
21255                )?;
21256                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21257                {
21258                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21259                }
21260                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21261                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21262                }
21263            }
21264
21265            next_offset += envelope_size;
21266            _next_ordinal_to_read += 1;
21267            if next_offset >= end_offset {
21268                return Ok(());
21269            }
21270
21271            // Decode unknown envelopes for gaps in ordinals.
21272            while _next_ordinal_to_read < 2 {
21273                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21274                _next_ordinal_to_read += 1;
21275                next_offset += envelope_size;
21276            }
21277
21278            let next_out_of_line = decoder.next_out_of_line();
21279            let handles_before = decoder.remaining_handles();
21280            if let Some((inlined, num_bytes, num_handles)) =
21281                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21282            {
21283                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21284                if inlined != (member_inline_size <= 4) {
21285                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21286                }
21287                let inner_offset;
21288                let mut inner_depth = depth.clone();
21289                if inlined {
21290                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21291                    inner_offset = next_offset;
21292                } else {
21293                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21294                    inner_depth.increment()?;
21295                }
21296                let val_ref = self.source_path.get_or_insert_with(|| {
21297                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
21298                });
21299                fidl::decode!(
21300                    fidl::encoding::BoundedString<1024>,
21301                    D,
21302                    val_ref,
21303                    decoder,
21304                    inner_offset,
21305                    inner_depth
21306                )?;
21307                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21308                {
21309                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21310                }
21311                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21312                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21313                }
21314            }
21315
21316            next_offset += envelope_size;
21317
21318            // Decode the remaining unknown envelopes.
21319            while next_offset < end_offset {
21320                _next_ordinal_to_read += 1;
21321                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21322                next_offset += envelope_size;
21323            }
21324
21325            Ok(())
21326        }
21327    }
21328
21329    impl Storage {
21330        #[inline(always)]
21331        fn max_ordinal_present(&self) -> u64 {
21332            if let Some(_) = self.storage_id {
21333                return 5;
21334            }
21335            if let Some(_) = self.subdir {
21336                return 4;
21337            }
21338            if let Some(_) = self.backing_dir {
21339                return 3;
21340            }
21341            if let Some(_) = self.source {
21342                return 2;
21343            }
21344            if let Some(_) = self.name {
21345                return 1;
21346            }
21347            0
21348        }
21349    }
21350
21351    impl fidl::encoding::ValueTypeMarker for Storage {
21352        type Borrowed<'a> = &'a Self;
21353        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21354            value
21355        }
21356    }
21357
21358    unsafe impl fidl::encoding::TypeMarker for Storage {
21359        type Owned = Self;
21360
21361        #[inline(always)]
21362        fn inline_align(_context: fidl::encoding::Context) -> usize {
21363            8
21364        }
21365
21366        #[inline(always)]
21367        fn inline_size(_context: fidl::encoding::Context) -> usize {
21368            16
21369        }
21370    }
21371
21372    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Storage, D> for &Storage {
21373        unsafe fn encode(
21374            self,
21375            encoder: &mut fidl::encoding::Encoder<'_, D>,
21376            offset: usize,
21377            mut depth: fidl::encoding::Depth,
21378        ) -> fidl::Result<()> {
21379            encoder.debug_check_bounds::<Storage>(offset);
21380            // Vector header
21381            let max_ordinal: u64 = self.max_ordinal_present();
21382            encoder.write_num(max_ordinal, offset);
21383            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21384            // Calling encoder.out_of_line_offset(0) is not allowed.
21385            if max_ordinal == 0 {
21386                return Ok(());
21387            }
21388            depth.increment()?;
21389            let envelope_size = 8;
21390            let bytes_len = max_ordinal as usize * envelope_size;
21391            #[allow(unused_variables)]
21392            let offset = encoder.out_of_line_offset(bytes_len);
21393            let mut _prev_end_offset: usize = 0;
21394            if 1 > max_ordinal {
21395                return Ok(());
21396            }
21397
21398            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21399            // are envelope_size bytes.
21400            let cur_offset: usize = (1 - 1) * envelope_size;
21401
21402            // Zero reserved fields.
21403            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21404
21405            // Safety:
21406            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21407            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21408            //   envelope_size bytes, there is always sufficient room.
21409            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21410                self.name.as_ref().map(
21411                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21412                ),
21413                encoder,
21414                offset + cur_offset,
21415                depth,
21416            )?;
21417
21418            _prev_end_offset = cur_offset + envelope_size;
21419            if 2 > max_ordinal {
21420                return Ok(());
21421            }
21422
21423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21424            // are envelope_size bytes.
21425            let cur_offset: usize = (2 - 1) * envelope_size;
21426
21427            // Zero reserved fields.
21428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21429
21430            // Safety:
21431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21433            //   envelope_size bytes, there is always sufficient room.
21434            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21435                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21436                encoder,
21437                offset + cur_offset,
21438                depth,
21439            )?;
21440
21441            _prev_end_offset = cur_offset + envelope_size;
21442            if 3 > 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 = (3 - 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<100>, D>(
21458                self.backing_dir.as_ref().map(
21459                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21460                ),
21461                encoder,
21462                offset + cur_offset,
21463                depth,
21464            )?;
21465
21466            _prev_end_offset = cur_offset + envelope_size;
21467            if 4 > max_ordinal {
21468                return Ok(());
21469            }
21470
21471            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21472            // are envelope_size bytes.
21473            let cur_offset: usize = (4 - 1) * envelope_size;
21474
21475            // Zero reserved fields.
21476            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21477
21478            // Safety:
21479            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21480            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21481            //   envelope_size bytes, there is always sufficient room.
21482            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
21483            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
21484            encoder, offset + cur_offset, depth
21485        )?;
21486
21487            _prev_end_offset = cur_offset + envelope_size;
21488            if 5 > max_ordinal {
21489                return Ok(());
21490            }
21491
21492            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21493            // are envelope_size bytes.
21494            let cur_offset: usize = (5 - 1) * envelope_size;
21495
21496            // Zero reserved fields.
21497            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21498
21499            // Safety:
21500            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21501            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21502            //   envelope_size bytes, there is always sufficient room.
21503            fidl::encoding::encode_in_envelope_optional::<StorageId, D>(
21504                self.storage_id
21505                    .as_ref()
21506                    .map(<StorageId as fidl::encoding::ValueTypeMarker>::borrow),
21507                encoder,
21508                offset + cur_offset,
21509                depth,
21510            )?;
21511
21512            _prev_end_offset = cur_offset + envelope_size;
21513
21514            Ok(())
21515        }
21516    }
21517
21518    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Storage {
21519        #[inline(always)]
21520        fn new_empty() -> Self {
21521            Self::default()
21522        }
21523
21524        unsafe fn decode(
21525            &mut self,
21526            decoder: &mut fidl::encoding::Decoder<'_, D>,
21527            offset: usize,
21528            mut depth: fidl::encoding::Depth,
21529        ) -> fidl::Result<()> {
21530            decoder.debug_check_bounds::<Self>(offset);
21531            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21532                None => return Err(fidl::Error::NotNullable),
21533                Some(len) => len,
21534            };
21535            // Calling decoder.out_of_line_offset(0) is not allowed.
21536            if len == 0 {
21537                return Ok(());
21538            };
21539            depth.increment()?;
21540            let envelope_size = 8;
21541            let bytes_len = len * envelope_size;
21542            let offset = decoder.out_of_line_offset(bytes_len)?;
21543            // Decode the envelope for each type.
21544            let mut _next_ordinal_to_read = 0;
21545            let mut next_offset = offset;
21546            let end_offset = offset + bytes_len;
21547            _next_ordinal_to_read += 1;
21548            if next_offset >= end_offset {
21549                return Ok(());
21550            }
21551
21552            // Decode unknown envelopes for gaps in ordinals.
21553            while _next_ordinal_to_read < 1 {
21554                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21555                _next_ordinal_to_read += 1;
21556                next_offset += envelope_size;
21557            }
21558
21559            let next_out_of_line = decoder.next_out_of_line();
21560            let handles_before = decoder.remaining_handles();
21561            if let Some((inlined, num_bytes, num_handles)) =
21562                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21563            {
21564                let member_inline_size =
21565                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21566                        decoder.context,
21567                    );
21568                if inlined != (member_inline_size <= 4) {
21569                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21570                }
21571                let inner_offset;
21572                let mut inner_depth = depth.clone();
21573                if inlined {
21574                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21575                    inner_offset = next_offset;
21576                } else {
21577                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21578                    inner_depth.increment()?;
21579                }
21580                let val_ref = self
21581                    .name
21582                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21583                fidl::decode!(
21584                    fidl::encoding::BoundedString<100>,
21585                    D,
21586                    val_ref,
21587                    decoder,
21588                    inner_offset,
21589                    inner_depth
21590                )?;
21591                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21592                {
21593                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21594                }
21595                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21596                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21597                }
21598            }
21599
21600            next_offset += envelope_size;
21601            _next_ordinal_to_read += 1;
21602            if next_offset >= end_offset {
21603                return Ok(());
21604            }
21605
21606            // Decode unknown envelopes for gaps in ordinals.
21607            while _next_ordinal_to_read < 2 {
21608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21609                _next_ordinal_to_read += 1;
21610                next_offset += envelope_size;
21611            }
21612
21613            let next_out_of_line = decoder.next_out_of_line();
21614            let handles_before = decoder.remaining_handles();
21615            if let Some((inlined, num_bytes, num_handles)) =
21616                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21617            {
21618                let member_inline_size =
21619                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21620                if inlined != (member_inline_size <= 4) {
21621                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21622                }
21623                let inner_offset;
21624                let mut inner_depth = depth.clone();
21625                if inlined {
21626                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21627                    inner_offset = next_offset;
21628                } else {
21629                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21630                    inner_depth.increment()?;
21631                }
21632                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
21633                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
21634                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21635                {
21636                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21637                }
21638                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21639                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21640                }
21641            }
21642
21643            next_offset += envelope_size;
21644            _next_ordinal_to_read += 1;
21645            if next_offset >= end_offset {
21646                return Ok(());
21647            }
21648
21649            // Decode unknown envelopes for gaps in ordinals.
21650            while _next_ordinal_to_read < 3 {
21651                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21652                _next_ordinal_to_read += 1;
21653                next_offset += envelope_size;
21654            }
21655
21656            let next_out_of_line = decoder.next_out_of_line();
21657            let handles_before = decoder.remaining_handles();
21658            if let Some((inlined, num_bytes, num_handles)) =
21659                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21660            {
21661                let member_inline_size =
21662                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
21663                        decoder.context,
21664                    );
21665                if inlined != (member_inline_size <= 4) {
21666                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21667                }
21668                let inner_offset;
21669                let mut inner_depth = depth.clone();
21670                if inlined {
21671                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21672                    inner_offset = next_offset;
21673                } else {
21674                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21675                    inner_depth.increment()?;
21676                }
21677                let val_ref = self
21678                    .backing_dir
21679                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
21680                fidl::decode!(
21681                    fidl::encoding::BoundedString<100>,
21682                    D,
21683                    val_ref,
21684                    decoder,
21685                    inner_offset,
21686                    inner_depth
21687                )?;
21688                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21689                {
21690                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21691                }
21692                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21693                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21694                }
21695            }
21696
21697            next_offset += envelope_size;
21698            _next_ordinal_to_read += 1;
21699            if next_offset >= end_offset {
21700                return Ok(());
21701            }
21702
21703            // Decode unknown envelopes for gaps in ordinals.
21704            while _next_ordinal_to_read < 4 {
21705                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21706                _next_ordinal_to_read += 1;
21707                next_offset += envelope_size;
21708            }
21709
21710            let next_out_of_line = decoder.next_out_of_line();
21711            let handles_before = decoder.remaining_handles();
21712            if let Some((inlined, num_bytes, num_handles)) =
21713                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21714            {
21715                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21716                if inlined != (member_inline_size <= 4) {
21717                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21718                }
21719                let inner_offset;
21720                let mut inner_depth = depth.clone();
21721                if inlined {
21722                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21723                    inner_offset = next_offset;
21724                } else {
21725                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21726                    inner_depth.increment()?;
21727                }
21728                let val_ref = self.subdir.get_or_insert_with(|| {
21729                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
21730                });
21731                fidl::decode!(
21732                    fidl::encoding::BoundedString<1024>,
21733                    D,
21734                    val_ref,
21735                    decoder,
21736                    inner_offset,
21737                    inner_depth
21738                )?;
21739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21740                {
21741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21742                }
21743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21745                }
21746            }
21747
21748            next_offset += envelope_size;
21749            _next_ordinal_to_read += 1;
21750            if next_offset >= end_offset {
21751                return Ok(());
21752            }
21753
21754            // Decode unknown envelopes for gaps in ordinals.
21755            while _next_ordinal_to_read < 5 {
21756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21757                _next_ordinal_to_read += 1;
21758                next_offset += envelope_size;
21759            }
21760
21761            let next_out_of_line = decoder.next_out_of_line();
21762            let handles_before = decoder.remaining_handles();
21763            if let Some((inlined, num_bytes, num_handles)) =
21764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
21765            {
21766                let member_inline_size =
21767                    <StorageId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21768                if inlined != (member_inline_size <= 4) {
21769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
21770                }
21771                let inner_offset;
21772                let mut inner_depth = depth.clone();
21773                if inlined {
21774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21775                    inner_offset = next_offset;
21776                } else {
21777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21778                    inner_depth.increment()?;
21779                }
21780                let val_ref = self.storage_id.get_or_insert_with(|| fidl::new_empty!(StorageId, D));
21781                fidl::decode!(StorageId, D, val_ref, decoder, inner_offset, inner_depth)?;
21782                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21783                {
21784                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
21785                }
21786                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21787                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21788                }
21789            }
21790
21791            next_offset += envelope_size;
21792
21793            // Decode the remaining unknown envelopes.
21794            while next_offset < end_offset {
21795                _next_ordinal_to_read += 1;
21796                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21797                next_offset += envelope_size;
21798            }
21799
21800            Ok(())
21801        }
21802    }
21803
21804    impl UseConfiguration {
21805        #[inline(always)]
21806        fn max_ordinal_present(&self) -> u64 {
21807            if let Some(_) = self.source_dictionary {
21808                return 7;
21809            }
21810            if let Some(_) = self.default {
21811                return 6;
21812            }
21813            if let Some(_) = self.type_ {
21814                return 5;
21815            }
21816            if let Some(_) = self.availability {
21817                return 4;
21818            }
21819            if let Some(_) = self.target_name {
21820                return 3;
21821            }
21822            if let Some(_) = self.source_name {
21823                return 2;
21824            }
21825            if let Some(_) = self.source {
21826                return 1;
21827            }
21828            0
21829        }
21830    }
21831
21832    impl fidl::encoding::ValueTypeMarker for UseConfiguration {
21833        type Borrowed<'a> = &'a Self;
21834        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21835            value
21836        }
21837    }
21838
21839    unsafe impl fidl::encoding::TypeMarker for UseConfiguration {
21840        type Owned = Self;
21841
21842        #[inline(always)]
21843        fn inline_align(_context: fidl::encoding::Context) -> usize {
21844            8
21845        }
21846
21847        #[inline(always)]
21848        fn inline_size(_context: fidl::encoding::Context) -> usize {
21849            16
21850        }
21851    }
21852
21853    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseConfiguration, D>
21854        for &UseConfiguration
21855    {
21856        unsafe fn encode(
21857            self,
21858            encoder: &mut fidl::encoding::Encoder<'_, D>,
21859            offset: usize,
21860            mut depth: fidl::encoding::Depth,
21861        ) -> fidl::Result<()> {
21862            encoder.debug_check_bounds::<UseConfiguration>(offset);
21863            // Vector header
21864            let max_ordinal: u64 = self.max_ordinal_present();
21865            encoder.write_num(max_ordinal, offset);
21866            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21867            // Calling encoder.out_of_line_offset(0) is not allowed.
21868            if max_ordinal == 0 {
21869                return Ok(());
21870            }
21871            depth.increment()?;
21872            let envelope_size = 8;
21873            let bytes_len = max_ordinal as usize * envelope_size;
21874            #[allow(unused_variables)]
21875            let offset = encoder.out_of_line_offset(bytes_len);
21876            let mut _prev_end_offset: usize = 0;
21877            if 1 > max_ordinal {
21878                return Ok(());
21879            }
21880
21881            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21882            // are envelope_size bytes.
21883            let cur_offset: usize = (1 - 1) * envelope_size;
21884
21885            // Zero reserved fields.
21886            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21887
21888            // Safety:
21889            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21890            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21891            //   envelope_size bytes, there is always sufficient room.
21892            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
21893                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
21894                encoder,
21895                offset + cur_offset,
21896                depth,
21897            )?;
21898
21899            _prev_end_offset = cur_offset + envelope_size;
21900            if 2 > max_ordinal {
21901                return Ok(());
21902            }
21903
21904            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21905            // are envelope_size bytes.
21906            let cur_offset: usize = (2 - 1) * envelope_size;
21907
21908            // Zero reserved fields.
21909            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21910
21911            // Safety:
21912            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21913            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21914            //   envelope_size bytes, there is always sufficient room.
21915            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21916                self.source_name.as_ref().map(
21917                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21918                ),
21919                encoder,
21920                offset + cur_offset,
21921                depth,
21922            )?;
21923
21924            _prev_end_offset = cur_offset + envelope_size;
21925            if 3 > max_ordinal {
21926                return Ok(());
21927            }
21928
21929            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21930            // are envelope_size bytes.
21931            let cur_offset: usize = (3 - 1) * envelope_size;
21932
21933            // Zero reserved fields.
21934            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21935
21936            // Safety:
21937            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21938            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21939            //   envelope_size bytes, there is always sufficient room.
21940            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
21941                self.target_name.as_ref().map(
21942                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
21943                ),
21944                encoder,
21945                offset + cur_offset,
21946                depth,
21947            )?;
21948
21949            _prev_end_offset = cur_offset + envelope_size;
21950            if 4 > max_ordinal {
21951                return Ok(());
21952            }
21953
21954            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21955            // are envelope_size bytes.
21956            let cur_offset: usize = (4 - 1) * envelope_size;
21957
21958            // Zero reserved fields.
21959            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21960
21961            // Safety:
21962            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21963            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21964            //   envelope_size bytes, there is always sufficient room.
21965            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
21966                self.availability
21967                    .as_ref()
21968                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
21969                encoder,
21970                offset + cur_offset,
21971                depth,
21972            )?;
21973
21974            _prev_end_offset = cur_offset + envelope_size;
21975            if 5 > max_ordinal {
21976                return Ok(());
21977            }
21978
21979            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
21980            // are envelope_size bytes.
21981            let cur_offset: usize = (5 - 1) * envelope_size;
21982
21983            // Zero reserved fields.
21984            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21985
21986            // Safety:
21987            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
21988            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
21989            //   envelope_size bytes, there is always sufficient room.
21990            fidl::encoding::encode_in_envelope_optional::<ConfigType, D>(
21991                self.type_.as_ref().map(<ConfigType as fidl::encoding::ValueTypeMarker>::borrow),
21992                encoder,
21993                offset + cur_offset,
21994                depth,
21995            )?;
21996
21997            _prev_end_offset = cur_offset + envelope_size;
21998            if 6 > max_ordinal {
21999                return Ok(());
22000            }
22001
22002            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22003            // are envelope_size bytes.
22004            let cur_offset: usize = (6 - 1) * envelope_size;
22005
22006            // Zero reserved fields.
22007            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22008
22009            // Safety:
22010            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22011            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22012            //   envelope_size bytes, there is always sufficient room.
22013            fidl::encoding::encode_in_envelope_optional::<ConfigValue, D>(
22014                self.default.as_ref().map(<ConfigValue as fidl::encoding::ValueTypeMarker>::borrow),
22015                encoder,
22016                offset + cur_offset,
22017                depth,
22018            )?;
22019
22020            _prev_end_offset = cur_offset + envelope_size;
22021            if 7 > max_ordinal {
22022                return Ok(());
22023            }
22024
22025            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22026            // are envelope_size bytes.
22027            let cur_offset: usize = (7 - 1) * envelope_size;
22028
22029            // Zero reserved fields.
22030            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22031
22032            // Safety:
22033            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22034            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22035            //   envelope_size bytes, there is always sufficient room.
22036            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22037            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22038            encoder, offset + cur_offset, depth
22039        )?;
22040
22041            _prev_end_offset = cur_offset + envelope_size;
22042
22043            Ok(())
22044        }
22045    }
22046
22047    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseConfiguration {
22048        #[inline(always)]
22049        fn new_empty() -> Self {
22050            Self::default()
22051        }
22052
22053        unsafe fn decode(
22054            &mut self,
22055            decoder: &mut fidl::encoding::Decoder<'_, D>,
22056            offset: usize,
22057            mut depth: fidl::encoding::Depth,
22058        ) -> fidl::Result<()> {
22059            decoder.debug_check_bounds::<Self>(offset);
22060            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22061                None => return Err(fidl::Error::NotNullable),
22062                Some(len) => len,
22063            };
22064            // Calling decoder.out_of_line_offset(0) is not allowed.
22065            if len == 0 {
22066                return Ok(());
22067            };
22068            depth.increment()?;
22069            let envelope_size = 8;
22070            let bytes_len = len * envelope_size;
22071            let offset = decoder.out_of_line_offset(bytes_len)?;
22072            // Decode the envelope for each type.
22073            let mut _next_ordinal_to_read = 0;
22074            let mut next_offset = offset;
22075            let end_offset = offset + bytes_len;
22076            _next_ordinal_to_read += 1;
22077            if next_offset >= end_offset {
22078                return Ok(());
22079            }
22080
22081            // Decode unknown envelopes for gaps in ordinals.
22082            while _next_ordinal_to_read < 1 {
22083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22084                _next_ordinal_to_read += 1;
22085                next_offset += envelope_size;
22086            }
22087
22088            let next_out_of_line = decoder.next_out_of_line();
22089            let handles_before = decoder.remaining_handles();
22090            if let Some((inlined, num_bytes, num_handles)) =
22091                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22092            {
22093                let member_inline_size =
22094                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22095                if inlined != (member_inline_size <= 4) {
22096                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22097                }
22098                let inner_offset;
22099                let mut inner_depth = depth.clone();
22100                if inlined {
22101                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22102                    inner_offset = next_offset;
22103                } else {
22104                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22105                    inner_depth.increment()?;
22106                }
22107                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22108                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22109                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22110                {
22111                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22112                }
22113                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22114                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22115                }
22116            }
22117
22118            next_offset += envelope_size;
22119            _next_ordinal_to_read += 1;
22120            if next_offset >= end_offset {
22121                return Ok(());
22122            }
22123
22124            // Decode unknown envelopes for gaps in ordinals.
22125            while _next_ordinal_to_read < 2 {
22126                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22127                _next_ordinal_to_read += 1;
22128                next_offset += envelope_size;
22129            }
22130
22131            let next_out_of_line = decoder.next_out_of_line();
22132            let handles_before = decoder.remaining_handles();
22133            if let Some((inlined, num_bytes, num_handles)) =
22134                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22135            {
22136                let member_inline_size =
22137                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22138                        decoder.context,
22139                    );
22140                if inlined != (member_inline_size <= 4) {
22141                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22142                }
22143                let inner_offset;
22144                let mut inner_depth = depth.clone();
22145                if inlined {
22146                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22147                    inner_offset = next_offset;
22148                } else {
22149                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22150                    inner_depth.increment()?;
22151                }
22152                let val_ref = self
22153                    .source_name
22154                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22155                fidl::decode!(
22156                    fidl::encoding::BoundedString<100>,
22157                    D,
22158                    val_ref,
22159                    decoder,
22160                    inner_offset,
22161                    inner_depth
22162                )?;
22163                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22164                {
22165                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22166                }
22167                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22168                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22169                }
22170            }
22171
22172            next_offset += envelope_size;
22173            _next_ordinal_to_read += 1;
22174            if next_offset >= end_offset {
22175                return Ok(());
22176            }
22177
22178            // Decode unknown envelopes for gaps in ordinals.
22179            while _next_ordinal_to_read < 3 {
22180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22181                _next_ordinal_to_read += 1;
22182                next_offset += envelope_size;
22183            }
22184
22185            let next_out_of_line = decoder.next_out_of_line();
22186            let handles_before = decoder.remaining_handles();
22187            if let Some((inlined, num_bytes, num_handles)) =
22188                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22189            {
22190                let member_inline_size =
22191                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22192                        decoder.context,
22193                    );
22194                if inlined != (member_inline_size <= 4) {
22195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22196                }
22197                let inner_offset;
22198                let mut inner_depth = depth.clone();
22199                if inlined {
22200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22201                    inner_offset = next_offset;
22202                } else {
22203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22204                    inner_depth.increment()?;
22205                }
22206                let val_ref = self
22207                    .target_name
22208                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22209                fidl::decode!(
22210                    fidl::encoding::BoundedString<100>,
22211                    D,
22212                    val_ref,
22213                    decoder,
22214                    inner_offset,
22215                    inner_depth
22216                )?;
22217                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22218                {
22219                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22220                }
22221                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22222                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22223                }
22224            }
22225
22226            next_offset += envelope_size;
22227            _next_ordinal_to_read += 1;
22228            if next_offset >= end_offset {
22229                return Ok(());
22230            }
22231
22232            // Decode unknown envelopes for gaps in ordinals.
22233            while _next_ordinal_to_read < 4 {
22234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22235                _next_ordinal_to_read += 1;
22236                next_offset += envelope_size;
22237            }
22238
22239            let next_out_of_line = decoder.next_out_of_line();
22240            let handles_before = decoder.remaining_handles();
22241            if let Some((inlined, num_bytes, num_handles)) =
22242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22243            {
22244                let member_inline_size =
22245                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22246                if inlined != (member_inline_size <= 4) {
22247                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22248                }
22249                let inner_offset;
22250                let mut inner_depth = depth.clone();
22251                if inlined {
22252                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22253                    inner_offset = next_offset;
22254                } else {
22255                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22256                    inner_depth.increment()?;
22257                }
22258                let val_ref =
22259                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
22260                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
22261                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22262                {
22263                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22264                }
22265                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22266                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22267                }
22268            }
22269
22270            next_offset += envelope_size;
22271            _next_ordinal_to_read += 1;
22272            if next_offset >= end_offset {
22273                return Ok(());
22274            }
22275
22276            // Decode unknown envelopes for gaps in ordinals.
22277            while _next_ordinal_to_read < 5 {
22278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22279                _next_ordinal_to_read += 1;
22280                next_offset += envelope_size;
22281            }
22282
22283            let next_out_of_line = decoder.next_out_of_line();
22284            let handles_before = decoder.remaining_handles();
22285            if let Some((inlined, num_bytes, num_handles)) =
22286                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22287            {
22288                let member_inline_size =
22289                    <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22290                if inlined != (member_inline_size <= 4) {
22291                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22292                }
22293                let inner_offset;
22294                let mut inner_depth = depth.clone();
22295                if inlined {
22296                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22297                    inner_offset = next_offset;
22298                } else {
22299                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22300                    inner_depth.increment()?;
22301                }
22302                let val_ref = self.type_.get_or_insert_with(|| fidl::new_empty!(ConfigType, D));
22303                fidl::decode!(ConfigType, D, val_ref, decoder, inner_offset, inner_depth)?;
22304                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22305                {
22306                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22307                }
22308                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22309                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22310                }
22311            }
22312
22313            next_offset += envelope_size;
22314            _next_ordinal_to_read += 1;
22315            if next_offset >= end_offset {
22316                return Ok(());
22317            }
22318
22319            // Decode unknown envelopes for gaps in ordinals.
22320            while _next_ordinal_to_read < 6 {
22321                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22322                _next_ordinal_to_read += 1;
22323                next_offset += envelope_size;
22324            }
22325
22326            let next_out_of_line = decoder.next_out_of_line();
22327            let handles_before = decoder.remaining_handles();
22328            if let Some((inlined, num_bytes, num_handles)) =
22329                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22330            {
22331                let member_inline_size =
22332                    <ConfigValue as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22333                if inlined != (member_inline_size <= 4) {
22334                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22335                }
22336                let inner_offset;
22337                let mut inner_depth = depth.clone();
22338                if inlined {
22339                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22340                    inner_offset = next_offset;
22341                } else {
22342                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22343                    inner_depth.increment()?;
22344                }
22345                let val_ref = self.default.get_or_insert_with(|| fidl::new_empty!(ConfigValue, D));
22346                fidl::decode!(ConfigValue, D, val_ref, decoder, inner_offset, inner_depth)?;
22347                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22348                {
22349                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22350                }
22351                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22352                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22353                }
22354            }
22355
22356            next_offset += envelope_size;
22357            _next_ordinal_to_read += 1;
22358            if next_offset >= end_offset {
22359                return Ok(());
22360            }
22361
22362            // Decode unknown envelopes for gaps in ordinals.
22363            while _next_ordinal_to_read < 7 {
22364                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22365                _next_ordinal_to_read += 1;
22366                next_offset += envelope_size;
22367            }
22368
22369            let next_out_of_line = decoder.next_out_of_line();
22370            let handles_before = decoder.remaining_handles();
22371            if let Some((inlined, num_bytes, num_handles)) =
22372                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22373            {
22374                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22375                if inlined != (member_inline_size <= 4) {
22376                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22377                }
22378                let inner_offset;
22379                let mut inner_depth = depth.clone();
22380                if inlined {
22381                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22382                    inner_offset = next_offset;
22383                } else {
22384                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22385                    inner_depth.increment()?;
22386                }
22387                let val_ref = self.source_dictionary.get_or_insert_with(|| {
22388                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22389                });
22390                fidl::decode!(
22391                    fidl::encoding::BoundedString<1024>,
22392                    D,
22393                    val_ref,
22394                    decoder,
22395                    inner_offset,
22396                    inner_depth
22397                )?;
22398                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22399                {
22400                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22401                }
22402                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22403                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22404                }
22405            }
22406
22407            next_offset += envelope_size;
22408
22409            // Decode the remaining unknown envelopes.
22410            while next_offset < end_offset {
22411                _next_ordinal_to_read += 1;
22412                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22413                next_offset += envelope_size;
22414            }
22415
22416            Ok(())
22417        }
22418    }
22419
22420    impl UseDictionary {
22421        #[inline(always)]
22422        fn max_ordinal_present(&self) -> u64 {
22423            if let Some(_) = self.source_dictionary {
22424                return 8;
22425            }
22426            if let Some(_) = self.availability {
22427                return 7;
22428            }
22429            if let Some(_) = self.dependency_type {
22430                return 6;
22431            }
22432            if let Some(_) = self.target_path {
22433                return 3;
22434            }
22435            if let Some(_) = self.source_name {
22436                return 2;
22437            }
22438            if let Some(_) = self.source {
22439                return 1;
22440            }
22441            0
22442        }
22443    }
22444
22445    impl fidl::encoding::ValueTypeMarker for UseDictionary {
22446        type Borrowed<'a> = &'a Self;
22447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22448            value
22449        }
22450    }
22451
22452    unsafe impl fidl::encoding::TypeMarker for UseDictionary {
22453        type Owned = Self;
22454
22455        #[inline(always)]
22456        fn inline_align(_context: fidl::encoding::Context) -> usize {
22457            8
22458        }
22459
22460        #[inline(always)]
22461        fn inline_size(_context: fidl::encoding::Context) -> usize {
22462            16
22463        }
22464    }
22465
22466    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDictionary, D>
22467        for &UseDictionary
22468    {
22469        unsafe fn encode(
22470            self,
22471            encoder: &mut fidl::encoding::Encoder<'_, D>,
22472            offset: usize,
22473            mut depth: fidl::encoding::Depth,
22474        ) -> fidl::Result<()> {
22475            encoder.debug_check_bounds::<UseDictionary>(offset);
22476            // Vector header
22477            let max_ordinal: u64 = self.max_ordinal_present();
22478            encoder.write_num(max_ordinal, offset);
22479            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22480            // Calling encoder.out_of_line_offset(0) is not allowed.
22481            if max_ordinal == 0 {
22482                return Ok(());
22483            }
22484            depth.increment()?;
22485            let envelope_size = 8;
22486            let bytes_len = max_ordinal as usize * envelope_size;
22487            #[allow(unused_variables)]
22488            let offset = encoder.out_of_line_offset(bytes_len);
22489            let mut _prev_end_offset: usize = 0;
22490            if 1 > max_ordinal {
22491                return Ok(());
22492            }
22493
22494            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22495            // are envelope_size bytes.
22496            let cur_offset: usize = (1 - 1) * envelope_size;
22497
22498            // Zero reserved fields.
22499            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22500
22501            // Safety:
22502            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22503            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22504            //   envelope_size bytes, there is always sufficient room.
22505            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
22506                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
22507                encoder,
22508                offset + cur_offset,
22509                depth,
22510            )?;
22511
22512            _prev_end_offset = cur_offset + envelope_size;
22513            if 2 > max_ordinal {
22514                return Ok(());
22515            }
22516
22517            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22518            // are envelope_size bytes.
22519            let cur_offset: usize = (2 - 1) * envelope_size;
22520
22521            // Zero reserved fields.
22522            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22523
22524            // Safety:
22525            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22526            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22527            //   envelope_size bytes, there is always sufficient room.
22528            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
22529                self.source_name.as_ref().map(
22530                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22531                ),
22532                encoder,
22533                offset + cur_offset,
22534                depth,
22535            )?;
22536
22537            _prev_end_offset = cur_offset + envelope_size;
22538            if 3 > max_ordinal {
22539                return Ok(());
22540            }
22541
22542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22543            // are envelope_size bytes.
22544            let cur_offset: usize = (3 - 1) * envelope_size;
22545
22546            // Zero reserved fields.
22547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22548
22549            // Safety:
22550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22552            //   envelope_size bytes, there is always sufficient room.
22553            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22554            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22555            encoder, offset + cur_offset, depth
22556        )?;
22557
22558            _prev_end_offset = cur_offset + envelope_size;
22559            if 6 > max_ordinal {
22560                return Ok(());
22561            }
22562
22563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22564            // are envelope_size bytes.
22565            let cur_offset: usize = (6 - 1) * envelope_size;
22566
22567            // Zero reserved fields.
22568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22569
22570            // Safety:
22571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22573            //   envelope_size bytes, there is always sufficient room.
22574            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
22575                self.dependency_type
22576                    .as_ref()
22577                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
22578                encoder,
22579                offset + cur_offset,
22580                depth,
22581            )?;
22582
22583            _prev_end_offset = cur_offset + envelope_size;
22584            if 7 > max_ordinal {
22585                return Ok(());
22586            }
22587
22588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22589            // are envelope_size bytes.
22590            let cur_offset: usize = (7 - 1) * envelope_size;
22591
22592            // Zero reserved fields.
22593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22594
22595            // Safety:
22596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22598            //   envelope_size bytes, there is always sufficient room.
22599            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
22600                self.availability
22601                    .as_ref()
22602                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
22603                encoder,
22604                offset + cur_offset,
22605                depth,
22606            )?;
22607
22608            _prev_end_offset = cur_offset + envelope_size;
22609            if 8 > max_ordinal {
22610                return Ok(());
22611            }
22612
22613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22614            // are envelope_size bytes.
22615            let cur_offset: usize = (8 - 1) * envelope_size;
22616
22617            // Zero reserved fields.
22618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22619
22620            // Safety:
22621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22623            //   envelope_size bytes, there is always sufficient room.
22624            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
22625            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
22626            encoder, offset + cur_offset, depth
22627        )?;
22628
22629            _prev_end_offset = cur_offset + envelope_size;
22630
22631            Ok(())
22632        }
22633    }
22634
22635    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDictionary {
22636        #[inline(always)]
22637        fn new_empty() -> Self {
22638            Self::default()
22639        }
22640
22641        unsafe fn decode(
22642            &mut self,
22643            decoder: &mut fidl::encoding::Decoder<'_, D>,
22644            offset: usize,
22645            mut depth: fidl::encoding::Depth,
22646        ) -> fidl::Result<()> {
22647            decoder.debug_check_bounds::<Self>(offset);
22648            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22649                None => return Err(fidl::Error::NotNullable),
22650                Some(len) => len,
22651            };
22652            // Calling decoder.out_of_line_offset(0) is not allowed.
22653            if len == 0 {
22654                return Ok(());
22655            };
22656            depth.increment()?;
22657            let envelope_size = 8;
22658            let bytes_len = len * envelope_size;
22659            let offset = decoder.out_of_line_offset(bytes_len)?;
22660            // Decode the envelope for each type.
22661            let mut _next_ordinal_to_read = 0;
22662            let mut next_offset = offset;
22663            let end_offset = offset + bytes_len;
22664            _next_ordinal_to_read += 1;
22665            if next_offset >= end_offset {
22666                return Ok(());
22667            }
22668
22669            // Decode unknown envelopes for gaps in ordinals.
22670            while _next_ordinal_to_read < 1 {
22671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22672                _next_ordinal_to_read += 1;
22673                next_offset += envelope_size;
22674            }
22675
22676            let next_out_of_line = decoder.next_out_of_line();
22677            let handles_before = decoder.remaining_handles();
22678            if let Some((inlined, num_bytes, num_handles)) =
22679                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22680            {
22681                let member_inline_size =
22682                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22683                if inlined != (member_inline_size <= 4) {
22684                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22685                }
22686                let inner_offset;
22687                let mut inner_depth = depth.clone();
22688                if inlined {
22689                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22690                    inner_offset = next_offset;
22691                } else {
22692                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22693                    inner_depth.increment()?;
22694                }
22695                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
22696                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
22697                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22698                {
22699                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22700                }
22701                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22702                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22703                }
22704            }
22705
22706            next_offset += envelope_size;
22707            _next_ordinal_to_read += 1;
22708            if next_offset >= end_offset {
22709                return Ok(());
22710            }
22711
22712            // Decode unknown envelopes for gaps in ordinals.
22713            while _next_ordinal_to_read < 2 {
22714                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22715                _next_ordinal_to_read += 1;
22716                next_offset += envelope_size;
22717            }
22718
22719            let next_out_of_line = decoder.next_out_of_line();
22720            let handles_before = decoder.remaining_handles();
22721            if let Some((inlined, num_bytes, num_handles)) =
22722                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22723            {
22724                let member_inline_size =
22725                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22726                        decoder.context,
22727                    );
22728                if inlined != (member_inline_size <= 4) {
22729                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22730                }
22731                let inner_offset;
22732                let mut inner_depth = depth.clone();
22733                if inlined {
22734                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22735                    inner_offset = next_offset;
22736                } else {
22737                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22738                    inner_depth.increment()?;
22739                }
22740                let val_ref = self
22741                    .source_name
22742                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
22743                fidl::decode!(
22744                    fidl::encoding::BoundedString<100>,
22745                    D,
22746                    val_ref,
22747                    decoder,
22748                    inner_offset,
22749                    inner_depth
22750                )?;
22751                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22752                {
22753                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22754                }
22755                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22756                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22757                }
22758            }
22759
22760            next_offset += envelope_size;
22761            _next_ordinal_to_read += 1;
22762            if next_offset >= end_offset {
22763                return Ok(());
22764            }
22765
22766            // Decode unknown envelopes for gaps in ordinals.
22767            while _next_ordinal_to_read < 3 {
22768                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22769                _next_ordinal_to_read += 1;
22770                next_offset += envelope_size;
22771            }
22772
22773            let next_out_of_line = decoder.next_out_of_line();
22774            let handles_before = decoder.remaining_handles();
22775            if let Some((inlined, num_bytes, num_handles)) =
22776                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22777            {
22778                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22779                if inlined != (member_inline_size <= 4) {
22780                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22781                }
22782                let inner_offset;
22783                let mut inner_depth = depth.clone();
22784                if inlined {
22785                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22786                    inner_offset = next_offset;
22787                } else {
22788                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22789                    inner_depth.increment()?;
22790                }
22791                let val_ref = self.target_path.get_or_insert_with(|| {
22792                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22793                });
22794                fidl::decode!(
22795                    fidl::encoding::BoundedString<1024>,
22796                    D,
22797                    val_ref,
22798                    decoder,
22799                    inner_offset,
22800                    inner_depth
22801                )?;
22802                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22803                {
22804                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22805                }
22806                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22807                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22808                }
22809            }
22810
22811            next_offset += envelope_size;
22812            _next_ordinal_to_read += 1;
22813            if next_offset >= end_offset {
22814                return Ok(());
22815            }
22816
22817            // Decode unknown envelopes for gaps in ordinals.
22818            while _next_ordinal_to_read < 6 {
22819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22820                _next_ordinal_to_read += 1;
22821                next_offset += envelope_size;
22822            }
22823
22824            let next_out_of_line = decoder.next_out_of_line();
22825            let handles_before = decoder.remaining_handles();
22826            if let Some((inlined, num_bytes, num_handles)) =
22827                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22828            {
22829                let member_inline_size =
22830                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22831                if inlined != (member_inline_size <= 4) {
22832                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22833                }
22834                let inner_offset;
22835                let mut inner_depth = depth.clone();
22836                if inlined {
22837                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22838                    inner_offset = next_offset;
22839                } else {
22840                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22841                    inner_depth.increment()?;
22842                }
22843                let val_ref =
22844                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
22845                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
22846                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22847                {
22848                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22849                }
22850                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22851                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22852                }
22853            }
22854
22855            next_offset += envelope_size;
22856            _next_ordinal_to_read += 1;
22857            if next_offset >= end_offset {
22858                return Ok(());
22859            }
22860
22861            // Decode unknown envelopes for gaps in ordinals.
22862            while _next_ordinal_to_read < 7 {
22863                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22864                _next_ordinal_to_read += 1;
22865                next_offset += envelope_size;
22866            }
22867
22868            let next_out_of_line = decoder.next_out_of_line();
22869            let handles_before = decoder.remaining_handles();
22870            if let Some((inlined, num_bytes, num_handles)) =
22871                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22872            {
22873                let member_inline_size =
22874                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22875                if inlined != (member_inline_size <= 4) {
22876                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22877                }
22878                let inner_offset;
22879                let mut inner_depth = depth.clone();
22880                if inlined {
22881                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22882                    inner_offset = next_offset;
22883                } else {
22884                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22885                    inner_depth.increment()?;
22886                }
22887                let val_ref =
22888                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
22889                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
22890                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22891                {
22892                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22893                }
22894                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22895                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22896                }
22897            }
22898
22899            next_offset += envelope_size;
22900            _next_ordinal_to_read += 1;
22901            if next_offset >= end_offset {
22902                return Ok(());
22903            }
22904
22905            // Decode unknown envelopes for gaps in ordinals.
22906            while _next_ordinal_to_read < 8 {
22907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22908                _next_ordinal_to_read += 1;
22909                next_offset += envelope_size;
22910            }
22911
22912            let next_out_of_line = decoder.next_out_of_line();
22913            let handles_before = decoder.remaining_handles();
22914            if let Some((inlined, num_bytes, num_handles)) =
22915                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22916            {
22917                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22918                if inlined != (member_inline_size <= 4) {
22919                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22920                }
22921                let inner_offset;
22922                let mut inner_depth = depth.clone();
22923                if inlined {
22924                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22925                    inner_offset = next_offset;
22926                } else {
22927                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22928                    inner_depth.increment()?;
22929                }
22930                let val_ref = self.source_dictionary.get_or_insert_with(|| {
22931                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
22932                });
22933                fidl::decode!(
22934                    fidl::encoding::BoundedString<1024>,
22935                    D,
22936                    val_ref,
22937                    decoder,
22938                    inner_offset,
22939                    inner_depth
22940                )?;
22941                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22942                {
22943                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22944                }
22945                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22946                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22947                }
22948            }
22949
22950            next_offset += envelope_size;
22951
22952            // Decode the remaining unknown envelopes.
22953            while next_offset < end_offset {
22954                _next_ordinal_to_read += 1;
22955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22956                next_offset += envelope_size;
22957            }
22958
22959            Ok(())
22960        }
22961    }
22962
22963    impl UseDirectory {
22964        #[inline(always)]
22965        fn max_ordinal_present(&self) -> u64 {
22966            if let Some(_) = self.source_dictionary {
22967                return 8;
22968            }
22969            if let Some(_) = self.availability {
22970                return 7;
22971            }
22972            if let Some(_) = self.dependency_type {
22973                return 6;
22974            }
22975            if let Some(_) = self.subdir {
22976                return 5;
22977            }
22978            if let Some(_) = self.rights {
22979                return 4;
22980            }
22981            if let Some(_) = self.target_path {
22982                return 3;
22983            }
22984            if let Some(_) = self.source_name {
22985                return 2;
22986            }
22987            if let Some(_) = self.source {
22988                return 1;
22989            }
22990            0
22991        }
22992    }
22993
22994    impl fidl::encoding::ValueTypeMarker for UseDirectory {
22995        type Borrowed<'a> = &'a Self;
22996        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22997            value
22998        }
22999    }
23000
23001    unsafe impl fidl::encoding::TypeMarker for UseDirectory {
23002        type Owned = Self;
23003
23004        #[inline(always)]
23005        fn inline_align(_context: fidl::encoding::Context) -> usize {
23006            8
23007        }
23008
23009        #[inline(always)]
23010        fn inline_size(_context: fidl::encoding::Context) -> usize {
23011            16
23012        }
23013    }
23014
23015    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseDirectory, D>
23016        for &UseDirectory
23017    {
23018        unsafe fn encode(
23019            self,
23020            encoder: &mut fidl::encoding::Encoder<'_, D>,
23021            offset: usize,
23022            mut depth: fidl::encoding::Depth,
23023        ) -> fidl::Result<()> {
23024            encoder.debug_check_bounds::<UseDirectory>(offset);
23025            // Vector header
23026            let max_ordinal: u64 = self.max_ordinal_present();
23027            encoder.write_num(max_ordinal, offset);
23028            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23029            // Calling encoder.out_of_line_offset(0) is not allowed.
23030            if max_ordinal == 0 {
23031                return Ok(());
23032            }
23033            depth.increment()?;
23034            let envelope_size = 8;
23035            let bytes_len = max_ordinal as usize * envelope_size;
23036            #[allow(unused_variables)]
23037            let offset = encoder.out_of_line_offset(bytes_len);
23038            let mut _prev_end_offset: usize = 0;
23039            if 1 > max_ordinal {
23040                return Ok(());
23041            }
23042
23043            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23044            // are envelope_size bytes.
23045            let cur_offset: usize = (1 - 1) * envelope_size;
23046
23047            // Zero reserved fields.
23048            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23049
23050            // Safety:
23051            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23052            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23053            //   envelope_size bytes, there is always sufficient room.
23054            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
23055                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
23056                encoder,
23057                offset + cur_offset,
23058                depth,
23059            )?;
23060
23061            _prev_end_offset = cur_offset + envelope_size;
23062            if 2 > max_ordinal {
23063                return Ok(());
23064            }
23065
23066            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23067            // are envelope_size bytes.
23068            let cur_offset: usize = (2 - 1) * envelope_size;
23069
23070            // Zero reserved fields.
23071            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23072
23073            // Safety:
23074            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23075            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23076            //   envelope_size bytes, there is always sufficient room.
23077            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
23078                self.source_name.as_ref().map(
23079                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
23080                ),
23081                encoder,
23082                offset + cur_offset,
23083                depth,
23084            )?;
23085
23086            _prev_end_offset = cur_offset + envelope_size;
23087            if 3 > max_ordinal {
23088                return Ok(());
23089            }
23090
23091            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23092            // are envelope_size bytes.
23093            let cur_offset: usize = (3 - 1) * envelope_size;
23094
23095            // Zero reserved fields.
23096            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23097
23098            // Safety:
23099            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23100            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23101            //   envelope_size bytes, there is always sufficient room.
23102            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23103            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23104            encoder, offset + cur_offset, depth
23105        )?;
23106
23107            _prev_end_offset = cur_offset + envelope_size;
23108            if 4 > max_ordinal {
23109                return Ok(());
23110            }
23111
23112            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23113            // are envelope_size bytes.
23114            let cur_offset: usize = (4 - 1) * envelope_size;
23115
23116            // Zero reserved fields.
23117            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23118
23119            // Safety:
23120            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23121            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23122            //   envelope_size bytes, there is always sufficient room.
23123            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io__common::Operations, D>(
23124            self.rights.as_ref().map(<fidl_fuchsia_io__common::Operations as fidl::encoding::ValueTypeMarker>::borrow),
23125            encoder, offset + cur_offset, depth
23126        )?;
23127
23128            _prev_end_offset = cur_offset + envelope_size;
23129            if 5 > max_ordinal {
23130                return Ok(());
23131            }
23132
23133            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23134            // are envelope_size bytes.
23135            let cur_offset: usize = (5 - 1) * envelope_size;
23136
23137            // Zero reserved fields.
23138            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23139
23140            // Safety:
23141            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23142            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23143            //   envelope_size bytes, there is always sufficient room.
23144            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23145            self.subdir.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23146            encoder, offset + cur_offset, depth
23147        )?;
23148
23149            _prev_end_offset = cur_offset + envelope_size;
23150            if 6 > max_ordinal {
23151                return Ok(());
23152            }
23153
23154            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23155            // are envelope_size bytes.
23156            let cur_offset: usize = (6 - 1) * envelope_size;
23157
23158            // Zero reserved fields.
23159            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23160
23161            // Safety:
23162            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23163            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23164            //   envelope_size bytes, there is always sufficient room.
23165            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
23166                self.dependency_type
23167                    .as_ref()
23168                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
23169                encoder,
23170                offset + cur_offset,
23171                depth,
23172            )?;
23173
23174            _prev_end_offset = cur_offset + envelope_size;
23175            if 7 > max_ordinal {
23176                return Ok(());
23177            }
23178
23179            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23180            // are envelope_size bytes.
23181            let cur_offset: usize = (7 - 1) * envelope_size;
23182
23183            // Zero reserved fields.
23184            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23185
23186            // Safety:
23187            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23188            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23189            //   envelope_size bytes, there is always sufficient room.
23190            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
23191                self.availability
23192                    .as_ref()
23193                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
23194                encoder,
23195                offset + cur_offset,
23196                depth,
23197            )?;
23198
23199            _prev_end_offset = cur_offset + envelope_size;
23200            if 8 > max_ordinal {
23201                return Ok(());
23202            }
23203
23204            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23205            // are envelope_size bytes.
23206            let cur_offset: usize = (8 - 1) * envelope_size;
23207
23208            // Zero reserved fields.
23209            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23210
23211            // Safety:
23212            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23213            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23214            //   envelope_size bytes, there is always sufficient room.
23215            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
23216            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
23217            encoder, offset + cur_offset, depth
23218        )?;
23219
23220            _prev_end_offset = cur_offset + envelope_size;
23221
23222            Ok(())
23223        }
23224    }
23225
23226    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseDirectory {
23227        #[inline(always)]
23228        fn new_empty() -> Self {
23229            Self::default()
23230        }
23231
23232        unsafe fn decode(
23233            &mut self,
23234            decoder: &mut fidl::encoding::Decoder<'_, D>,
23235            offset: usize,
23236            mut depth: fidl::encoding::Depth,
23237        ) -> fidl::Result<()> {
23238            decoder.debug_check_bounds::<Self>(offset);
23239            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23240                None => return Err(fidl::Error::NotNullable),
23241                Some(len) => len,
23242            };
23243            // Calling decoder.out_of_line_offset(0) is not allowed.
23244            if len == 0 {
23245                return Ok(());
23246            };
23247            depth.increment()?;
23248            let envelope_size = 8;
23249            let bytes_len = len * envelope_size;
23250            let offset = decoder.out_of_line_offset(bytes_len)?;
23251            // Decode the envelope for each type.
23252            let mut _next_ordinal_to_read = 0;
23253            let mut next_offset = offset;
23254            let end_offset = offset + bytes_len;
23255            _next_ordinal_to_read += 1;
23256            if next_offset >= end_offset {
23257                return Ok(());
23258            }
23259
23260            // Decode unknown envelopes for gaps in ordinals.
23261            while _next_ordinal_to_read < 1 {
23262                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23263                _next_ordinal_to_read += 1;
23264                next_offset += envelope_size;
23265            }
23266
23267            let next_out_of_line = decoder.next_out_of_line();
23268            let handles_before = decoder.remaining_handles();
23269            if let Some((inlined, num_bytes, num_handles)) =
23270                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23271            {
23272                let member_inline_size =
23273                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23274                if inlined != (member_inline_size <= 4) {
23275                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23276                }
23277                let inner_offset;
23278                let mut inner_depth = depth.clone();
23279                if inlined {
23280                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23281                    inner_offset = next_offset;
23282                } else {
23283                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23284                    inner_depth.increment()?;
23285                }
23286                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
23287                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
23288                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23289                {
23290                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23291                }
23292                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23293                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23294                }
23295            }
23296
23297            next_offset += envelope_size;
23298            _next_ordinal_to_read += 1;
23299            if next_offset >= end_offset {
23300                return Ok(());
23301            }
23302
23303            // Decode unknown envelopes for gaps in ordinals.
23304            while _next_ordinal_to_read < 2 {
23305                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23306                _next_ordinal_to_read += 1;
23307                next_offset += envelope_size;
23308            }
23309
23310            let next_out_of_line = decoder.next_out_of_line();
23311            let handles_before = decoder.remaining_handles();
23312            if let Some((inlined, num_bytes, num_handles)) =
23313                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23314            {
23315                let member_inline_size =
23316                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
23317                        decoder.context,
23318                    );
23319                if inlined != (member_inline_size <= 4) {
23320                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23321                }
23322                let inner_offset;
23323                let mut inner_depth = depth.clone();
23324                if inlined {
23325                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23326                    inner_offset = next_offset;
23327                } else {
23328                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23329                    inner_depth.increment()?;
23330                }
23331                let val_ref = self
23332                    .source_name
23333                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23334                fidl::decode!(
23335                    fidl::encoding::BoundedString<100>,
23336                    D,
23337                    val_ref,
23338                    decoder,
23339                    inner_offset,
23340                    inner_depth
23341                )?;
23342                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23343                {
23344                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23345                }
23346                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23347                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23348                }
23349            }
23350
23351            next_offset += envelope_size;
23352            _next_ordinal_to_read += 1;
23353            if next_offset >= end_offset {
23354                return Ok(());
23355            }
23356
23357            // Decode unknown envelopes for gaps in ordinals.
23358            while _next_ordinal_to_read < 3 {
23359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23360                _next_ordinal_to_read += 1;
23361                next_offset += envelope_size;
23362            }
23363
23364            let next_out_of_line = decoder.next_out_of_line();
23365            let handles_before = decoder.remaining_handles();
23366            if let Some((inlined, num_bytes, num_handles)) =
23367                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23368            {
23369                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23370                if inlined != (member_inline_size <= 4) {
23371                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23372                }
23373                let inner_offset;
23374                let mut inner_depth = depth.clone();
23375                if inlined {
23376                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23377                    inner_offset = next_offset;
23378                } else {
23379                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23380                    inner_depth.increment()?;
23381                }
23382                let val_ref = self.target_path.get_or_insert_with(|| {
23383                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23384                });
23385                fidl::decode!(
23386                    fidl::encoding::BoundedString<1024>,
23387                    D,
23388                    val_ref,
23389                    decoder,
23390                    inner_offset,
23391                    inner_depth
23392                )?;
23393                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23394                {
23395                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23396                }
23397                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23398                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23399                }
23400            }
23401
23402            next_offset += envelope_size;
23403            _next_ordinal_to_read += 1;
23404            if next_offset >= end_offset {
23405                return Ok(());
23406            }
23407
23408            // Decode unknown envelopes for gaps in ordinals.
23409            while _next_ordinal_to_read < 4 {
23410                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23411                _next_ordinal_to_read += 1;
23412                next_offset += envelope_size;
23413            }
23414
23415            let next_out_of_line = decoder.next_out_of_line();
23416            let handles_before = decoder.remaining_handles();
23417            if let Some((inlined, num_bytes, num_handles)) =
23418                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23419            {
23420                let member_inline_size = <fidl_fuchsia_io__common::Operations as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23421                if inlined != (member_inline_size <= 4) {
23422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23423                }
23424                let inner_offset;
23425                let mut inner_depth = depth.clone();
23426                if inlined {
23427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23428                    inner_offset = next_offset;
23429                } else {
23430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23431                    inner_depth.increment()?;
23432                }
23433                let val_ref = self.rights.get_or_insert_with(|| {
23434                    fidl::new_empty!(fidl_fuchsia_io__common::Operations, D)
23435                });
23436                fidl::decode!(
23437                    fidl_fuchsia_io__common::Operations,
23438                    D,
23439                    val_ref,
23440                    decoder,
23441                    inner_offset,
23442                    inner_depth
23443                )?;
23444                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23445                {
23446                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23447                }
23448                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23449                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23450                }
23451            }
23452
23453            next_offset += envelope_size;
23454            _next_ordinal_to_read += 1;
23455            if next_offset >= end_offset {
23456                return Ok(());
23457            }
23458
23459            // Decode unknown envelopes for gaps in ordinals.
23460            while _next_ordinal_to_read < 5 {
23461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23462                _next_ordinal_to_read += 1;
23463                next_offset += envelope_size;
23464            }
23465
23466            let next_out_of_line = decoder.next_out_of_line();
23467            let handles_before = decoder.remaining_handles();
23468            if let Some((inlined, num_bytes, num_handles)) =
23469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23470            {
23471                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23472                if inlined != (member_inline_size <= 4) {
23473                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23474                }
23475                let inner_offset;
23476                let mut inner_depth = depth.clone();
23477                if inlined {
23478                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23479                    inner_offset = next_offset;
23480                } else {
23481                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23482                    inner_depth.increment()?;
23483                }
23484                let val_ref = self.subdir.get_or_insert_with(|| {
23485                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23486                });
23487                fidl::decode!(
23488                    fidl::encoding::BoundedString<1024>,
23489                    D,
23490                    val_ref,
23491                    decoder,
23492                    inner_offset,
23493                    inner_depth
23494                )?;
23495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23496                {
23497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23498                }
23499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23501                }
23502            }
23503
23504            next_offset += envelope_size;
23505            _next_ordinal_to_read += 1;
23506            if next_offset >= end_offset {
23507                return Ok(());
23508            }
23509
23510            // Decode unknown envelopes for gaps in ordinals.
23511            while _next_ordinal_to_read < 6 {
23512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23513                _next_ordinal_to_read += 1;
23514                next_offset += envelope_size;
23515            }
23516
23517            let next_out_of_line = decoder.next_out_of_line();
23518            let handles_before = decoder.remaining_handles();
23519            if let Some((inlined, num_bytes, num_handles)) =
23520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23521            {
23522                let member_inline_size =
23523                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23524                if inlined != (member_inline_size <= 4) {
23525                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23526                }
23527                let inner_offset;
23528                let mut inner_depth = depth.clone();
23529                if inlined {
23530                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23531                    inner_offset = next_offset;
23532                } else {
23533                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23534                    inner_depth.increment()?;
23535                }
23536                let val_ref =
23537                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
23538                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
23539                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23540                {
23541                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23542                }
23543                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23544                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23545                }
23546            }
23547
23548            next_offset += envelope_size;
23549            _next_ordinal_to_read += 1;
23550            if next_offset >= end_offset {
23551                return Ok(());
23552            }
23553
23554            // Decode unknown envelopes for gaps in ordinals.
23555            while _next_ordinal_to_read < 7 {
23556                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23557                _next_ordinal_to_read += 1;
23558                next_offset += envelope_size;
23559            }
23560
23561            let next_out_of_line = decoder.next_out_of_line();
23562            let handles_before = decoder.remaining_handles();
23563            if let Some((inlined, num_bytes, num_handles)) =
23564                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23565            {
23566                let member_inline_size =
23567                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23568                if inlined != (member_inline_size <= 4) {
23569                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23570                }
23571                let inner_offset;
23572                let mut inner_depth = depth.clone();
23573                if inlined {
23574                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23575                    inner_offset = next_offset;
23576                } else {
23577                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23578                    inner_depth.increment()?;
23579                }
23580                let val_ref =
23581                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
23582                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
23583                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23584                {
23585                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23586                }
23587                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23588                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23589                }
23590            }
23591
23592            next_offset += envelope_size;
23593            _next_ordinal_to_read += 1;
23594            if next_offset >= end_offset {
23595                return Ok(());
23596            }
23597
23598            // Decode unknown envelopes for gaps in ordinals.
23599            while _next_ordinal_to_read < 8 {
23600                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23601                _next_ordinal_to_read += 1;
23602                next_offset += envelope_size;
23603            }
23604
23605            let next_out_of_line = decoder.next_out_of_line();
23606            let handles_before = decoder.remaining_handles();
23607            if let Some((inlined, num_bytes, num_handles)) =
23608                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23609            {
23610                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23611                if inlined != (member_inline_size <= 4) {
23612                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23613                }
23614                let inner_offset;
23615                let mut inner_depth = depth.clone();
23616                if inlined {
23617                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23618                    inner_offset = next_offset;
23619                } else {
23620                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23621                    inner_depth.increment()?;
23622                }
23623                let val_ref = self.source_dictionary.get_or_insert_with(|| {
23624                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
23625                });
23626                fidl::decode!(
23627                    fidl::encoding::BoundedString<1024>,
23628                    D,
23629                    val_ref,
23630                    decoder,
23631                    inner_offset,
23632                    inner_depth
23633                )?;
23634                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23635                {
23636                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23637                }
23638                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23639                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23640                }
23641            }
23642
23643            next_offset += envelope_size;
23644
23645            // Decode the remaining unknown envelopes.
23646            while next_offset < end_offset {
23647                _next_ordinal_to_read += 1;
23648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23649                next_offset += envelope_size;
23650            }
23651
23652            Ok(())
23653        }
23654    }
23655
23656    impl UseEventStream {
23657        #[inline(always)]
23658        fn max_ordinal_present(&self) -> u64 {
23659            if let Some(_) = self.filter {
23660                return 6;
23661            }
23662            if let Some(_) = self.availability {
23663                return 5;
23664            }
23665            if let Some(_) = self.target_path {
23666                return 4;
23667            }
23668            if let Some(_) = self.scope {
23669                return 3;
23670            }
23671            if let Some(_) = self.source {
23672                return 2;
23673            }
23674            if let Some(_) = self.source_name {
23675                return 1;
23676            }
23677            0
23678        }
23679    }
23680
23681    impl fidl::encoding::ValueTypeMarker for UseEventStream {
23682        type Borrowed<'a> = &'a Self;
23683        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23684            value
23685        }
23686    }
23687
23688    unsafe impl fidl::encoding::TypeMarker for UseEventStream {
23689        type Owned = Self;
23690
23691        #[inline(always)]
23692        fn inline_align(_context: fidl::encoding::Context) -> usize {
23693            8
23694        }
23695
23696        #[inline(always)]
23697        fn inline_size(_context: fidl::encoding::Context) -> usize {
23698            16
23699        }
23700    }
23701
23702    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseEventStream, D>
23703        for &UseEventStream
23704    {
23705        unsafe fn encode(
23706            self,
23707            encoder: &mut fidl::encoding::Encoder<'_, D>,
23708            offset: usize,
23709            mut depth: fidl::encoding::Depth,
23710        ) -> fidl::Result<()> {
23711            encoder.debug_check_bounds::<UseEventStream>(offset);
23712            // Vector header
23713            let max_ordinal: u64 = self.max_ordinal_present();
23714            encoder.write_num(max_ordinal, offset);
23715            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23716            // Calling encoder.out_of_line_offset(0) is not allowed.
23717            if max_ordinal == 0 {
23718                return Ok(());
23719            }
23720            depth.increment()?;
23721            let envelope_size = 8;
23722            let bytes_len = max_ordinal as usize * envelope_size;
23723            #[allow(unused_variables)]
23724            let offset = encoder.out_of_line_offset(bytes_len);
23725            let mut _prev_end_offset: usize = 0;
23726            if 1 > max_ordinal {
23727                return Ok(());
23728            }
23729
23730            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23731            // are envelope_size bytes.
23732            let cur_offset: usize = (1 - 1) * envelope_size;
23733
23734            // Zero reserved fields.
23735            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23736
23737            // Safety:
23738            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23739            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23740            //   envelope_size bytes, there is always sufficient room.
23741            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
23742                self.source_name.as_ref().map(
23743                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
23744                ),
23745                encoder,
23746                offset + cur_offset,
23747                depth,
23748            )?;
23749
23750            _prev_end_offset = cur_offset + envelope_size;
23751            if 2 > max_ordinal {
23752                return Ok(());
23753            }
23754
23755            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23756            // are envelope_size bytes.
23757            let cur_offset: usize = (2 - 1) * envelope_size;
23758
23759            // Zero reserved fields.
23760            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23761
23762            // Safety:
23763            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23764            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23765            //   envelope_size bytes, there is always sufficient room.
23766            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
23767                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
23768                encoder,
23769                offset + cur_offset,
23770                depth,
23771            )?;
23772
23773            _prev_end_offset = cur_offset + envelope_size;
23774            if 3 > max_ordinal {
23775                return Ok(());
23776            }
23777
23778            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23779            // are envelope_size bytes.
23780            let cur_offset: usize = (3 - 1) * envelope_size;
23781
23782            // Zero reserved fields.
23783            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23784
23785            // Safety:
23786            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23787            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23788            //   envelope_size bytes, there is always sufficient room.
23789            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Ref>, D>(
23790            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<Ref> as fidl::encoding::ValueTypeMarker>::borrow),
23791            encoder, offset + cur_offset, depth
23792        )?;
23793
23794            _prev_end_offset = cur_offset + envelope_size;
23795            if 4 > max_ordinal {
23796                return Ok(());
23797            }
23798
23799            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23800            // are envelope_size bytes.
23801            let cur_offset: usize = (4 - 1) * envelope_size;
23802
23803            // Zero reserved fields.
23804            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23805
23806            // Safety:
23807            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23808            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23809            //   envelope_size bytes, there is always sufficient room.
23810            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
23811                self.target_path.as_ref().map(
23812                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
23813                ),
23814                encoder,
23815                offset + cur_offset,
23816                depth,
23817            )?;
23818
23819            _prev_end_offset = cur_offset + envelope_size;
23820            if 5 > max_ordinal {
23821                return Ok(());
23822            }
23823
23824            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23825            // are envelope_size bytes.
23826            let cur_offset: usize = (5 - 1) * envelope_size;
23827
23828            // Zero reserved fields.
23829            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23830
23831            // Safety:
23832            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23833            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23834            //   envelope_size bytes, there is always sufficient room.
23835            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
23836                self.availability
23837                    .as_ref()
23838                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
23839                encoder,
23840                offset + cur_offset,
23841                depth,
23842            )?;
23843
23844            _prev_end_offset = cur_offset + envelope_size;
23845            if 6 > max_ordinal {
23846                return Ok(());
23847            }
23848
23849            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23850            // are envelope_size bytes.
23851            let cur_offset: usize = (6 - 1) * envelope_size;
23852
23853            // Zero reserved fields.
23854            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23855
23856            // Safety:
23857            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23858            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23859            //   envelope_size bytes, there is always sufficient room.
23860            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data__common::Dictionary, D>(
23861            self.filter.as_ref().map(<fidl_fuchsia_data__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow),
23862            encoder, offset + cur_offset, depth
23863        )?;
23864
23865            _prev_end_offset = cur_offset + envelope_size;
23866
23867            Ok(())
23868        }
23869    }
23870
23871    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseEventStream {
23872        #[inline(always)]
23873        fn new_empty() -> Self {
23874            Self::default()
23875        }
23876
23877        unsafe fn decode(
23878            &mut self,
23879            decoder: &mut fidl::encoding::Decoder<'_, D>,
23880            offset: usize,
23881            mut depth: fidl::encoding::Depth,
23882        ) -> fidl::Result<()> {
23883            decoder.debug_check_bounds::<Self>(offset);
23884            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23885                None => return Err(fidl::Error::NotNullable),
23886                Some(len) => len,
23887            };
23888            // Calling decoder.out_of_line_offset(0) is not allowed.
23889            if len == 0 {
23890                return Ok(());
23891            };
23892            depth.increment()?;
23893            let envelope_size = 8;
23894            let bytes_len = len * envelope_size;
23895            let offset = decoder.out_of_line_offset(bytes_len)?;
23896            // Decode the envelope for each type.
23897            let mut _next_ordinal_to_read = 0;
23898            let mut next_offset = offset;
23899            let end_offset = offset + bytes_len;
23900            _next_ordinal_to_read += 1;
23901            if next_offset >= end_offset {
23902                return Ok(());
23903            }
23904
23905            // Decode unknown envelopes for gaps in ordinals.
23906            while _next_ordinal_to_read < 1 {
23907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23908                _next_ordinal_to_read += 1;
23909                next_offset += envelope_size;
23910            }
23911
23912            let next_out_of_line = decoder.next_out_of_line();
23913            let handles_before = decoder.remaining_handles();
23914            if let Some((inlined, num_bytes, num_handles)) =
23915                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23916            {
23917                let member_inline_size =
23918                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
23919                        decoder.context,
23920                    );
23921                if inlined != (member_inline_size <= 4) {
23922                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23923                }
23924                let inner_offset;
23925                let mut inner_depth = depth.clone();
23926                if inlined {
23927                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23928                    inner_offset = next_offset;
23929                } else {
23930                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23931                    inner_depth.increment()?;
23932                }
23933                let val_ref = self
23934                    .source_name
23935                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
23936                fidl::decode!(
23937                    fidl::encoding::BoundedString<100>,
23938                    D,
23939                    val_ref,
23940                    decoder,
23941                    inner_offset,
23942                    inner_depth
23943                )?;
23944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23945                {
23946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23947                }
23948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23950                }
23951            }
23952
23953            next_offset += envelope_size;
23954            _next_ordinal_to_read += 1;
23955            if next_offset >= end_offset {
23956                return Ok(());
23957            }
23958
23959            // Decode unknown envelopes for gaps in ordinals.
23960            while _next_ordinal_to_read < 2 {
23961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23962                _next_ordinal_to_read += 1;
23963                next_offset += envelope_size;
23964            }
23965
23966            let next_out_of_line = decoder.next_out_of_line();
23967            let handles_before = decoder.remaining_handles();
23968            if let Some((inlined, num_bytes, num_handles)) =
23969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23970            {
23971                let member_inline_size =
23972                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23973                if inlined != (member_inline_size <= 4) {
23974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23975                }
23976                let inner_offset;
23977                let mut inner_depth = depth.clone();
23978                if inlined {
23979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23980                    inner_offset = next_offset;
23981                } else {
23982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23983                    inner_depth.increment()?;
23984                }
23985                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
23986                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
23987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23988                {
23989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23990                }
23991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23993                }
23994            }
23995
23996            next_offset += envelope_size;
23997            _next_ordinal_to_read += 1;
23998            if next_offset >= end_offset {
23999                return Ok(());
24000            }
24001
24002            // Decode unknown envelopes for gaps in ordinals.
24003            while _next_ordinal_to_read < 3 {
24004                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24005                _next_ordinal_to_read += 1;
24006                next_offset += envelope_size;
24007            }
24008
24009            let next_out_of_line = decoder.next_out_of_line();
24010            let handles_before = decoder.remaining_handles();
24011            if let Some((inlined, num_bytes, num_handles)) =
24012                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24013            {
24014                let member_inline_size = <fidl::encoding::UnboundedVector<Ref> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24015                if inlined != (member_inline_size <= 4) {
24016                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24017                }
24018                let inner_offset;
24019                let mut inner_depth = depth.clone();
24020                if inlined {
24021                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24022                    inner_offset = next_offset;
24023                } else {
24024                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24025                    inner_depth.increment()?;
24026                }
24027                let val_ref = self.scope.get_or_insert_with(|| {
24028                    fidl::new_empty!(fidl::encoding::UnboundedVector<Ref>, D)
24029                });
24030                fidl::decode!(
24031                    fidl::encoding::UnboundedVector<Ref>,
24032                    D,
24033                    val_ref,
24034                    decoder,
24035                    inner_offset,
24036                    inner_depth
24037                )?;
24038                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24039                {
24040                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24041                }
24042                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24043                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24044                }
24045            }
24046
24047            next_offset += envelope_size;
24048            _next_ordinal_to_read += 1;
24049            if next_offset >= end_offset {
24050                return Ok(());
24051            }
24052
24053            // Decode unknown envelopes for gaps in ordinals.
24054            while _next_ordinal_to_read < 4 {
24055                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24056                _next_ordinal_to_read += 1;
24057                next_offset += envelope_size;
24058            }
24059
24060            let next_out_of_line = decoder.next_out_of_line();
24061            let handles_before = decoder.remaining_handles();
24062            if let Some((inlined, num_bytes, num_handles)) =
24063                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24064            {
24065                let member_inline_size =
24066                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24067                        decoder.context,
24068                    );
24069                if inlined != (member_inline_size <= 4) {
24070                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24071                }
24072                let inner_offset;
24073                let mut inner_depth = depth.clone();
24074                if inlined {
24075                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24076                    inner_offset = next_offset;
24077                } else {
24078                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24079                    inner_depth.increment()?;
24080                }
24081                let val_ref = self
24082                    .target_path
24083                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24084                fidl::decode!(
24085                    fidl::encoding::BoundedString<100>,
24086                    D,
24087                    val_ref,
24088                    decoder,
24089                    inner_offset,
24090                    inner_depth
24091                )?;
24092                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24093                {
24094                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24095                }
24096                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24097                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24098                }
24099            }
24100
24101            next_offset += envelope_size;
24102            _next_ordinal_to_read += 1;
24103            if next_offset >= end_offset {
24104                return Ok(());
24105            }
24106
24107            // Decode unknown envelopes for gaps in ordinals.
24108            while _next_ordinal_to_read < 5 {
24109                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24110                _next_ordinal_to_read += 1;
24111                next_offset += envelope_size;
24112            }
24113
24114            let next_out_of_line = decoder.next_out_of_line();
24115            let handles_before = decoder.remaining_handles();
24116            if let Some((inlined, num_bytes, num_handles)) =
24117                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24118            {
24119                let member_inline_size =
24120                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24121                if inlined != (member_inline_size <= 4) {
24122                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24123                }
24124                let inner_offset;
24125                let mut inner_depth = depth.clone();
24126                if inlined {
24127                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24128                    inner_offset = next_offset;
24129                } else {
24130                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24131                    inner_depth.increment()?;
24132                }
24133                let val_ref =
24134                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24135                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24136                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24137                {
24138                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24139                }
24140                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24141                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24142                }
24143            }
24144
24145            next_offset += envelope_size;
24146            _next_ordinal_to_read += 1;
24147            if next_offset >= end_offset {
24148                return Ok(());
24149            }
24150
24151            // Decode unknown envelopes for gaps in ordinals.
24152            while _next_ordinal_to_read < 6 {
24153                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24154                _next_ordinal_to_read += 1;
24155                next_offset += envelope_size;
24156            }
24157
24158            let next_out_of_line = decoder.next_out_of_line();
24159            let handles_before = decoder.remaining_handles();
24160            if let Some((inlined, num_bytes, num_handles)) =
24161                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24162            {
24163                let member_inline_size = <fidl_fuchsia_data__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24164                if inlined != (member_inline_size <= 4) {
24165                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24166                }
24167                let inner_offset;
24168                let mut inner_depth = depth.clone();
24169                if inlined {
24170                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24171                    inner_offset = next_offset;
24172                } else {
24173                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24174                    inner_depth.increment()?;
24175                }
24176                let val_ref = self.filter.get_or_insert_with(|| {
24177                    fidl::new_empty!(fidl_fuchsia_data__common::Dictionary, D)
24178                });
24179                fidl::decode!(
24180                    fidl_fuchsia_data__common::Dictionary,
24181                    D,
24182                    val_ref,
24183                    decoder,
24184                    inner_offset,
24185                    inner_depth
24186                )?;
24187                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24188                {
24189                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24190                }
24191                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24192                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24193                }
24194            }
24195
24196            next_offset += envelope_size;
24197
24198            // Decode the remaining unknown envelopes.
24199            while next_offset < end_offset {
24200                _next_ordinal_to_read += 1;
24201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24202                next_offset += envelope_size;
24203            }
24204
24205            Ok(())
24206        }
24207    }
24208
24209    impl UseProtocol {
24210        #[inline(always)]
24211        fn max_ordinal_present(&self) -> u64 {
24212            if let Some(_) = self.numbered_handle {
24213                return 7;
24214            }
24215            if let Some(_) = self.source_dictionary {
24216                return 6;
24217            }
24218            if let Some(_) = self.availability {
24219                return 5;
24220            }
24221            if let Some(_) = self.dependency_type {
24222                return 4;
24223            }
24224            if let Some(_) = self.target_path {
24225                return 3;
24226            }
24227            if let Some(_) = self.source_name {
24228                return 2;
24229            }
24230            if let Some(_) = self.source {
24231                return 1;
24232            }
24233            0
24234        }
24235    }
24236
24237    impl fidl::encoding::ValueTypeMarker for UseProtocol {
24238        type Borrowed<'a> = &'a Self;
24239        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24240            value
24241        }
24242    }
24243
24244    unsafe impl fidl::encoding::TypeMarker for UseProtocol {
24245        type Owned = Self;
24246
24247        #[inline(always)]
24248        fn inline_align(_context: fidl::encoding::Context) -> usize {
24249            8
24250        }
24251
24252        #[inline(always)]
24253        fn inline_size(_context: fidl::encoding::Context) -> usize {
24254            16
24255        }
24256    }
24257
24258    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseProtocol, D>
24259        for &UseProtocol
24260    {
24261        unsafe fn encode(
24262            self,
24263            encoder: &mut fidl::encoding::Encoder<'_, D>,
24264            offset: usize,
24265            mut depth: fidl::encoding::Depth,
24266        ) -> fidl::Result<()> {
24267            encoder.debug_check_bounds::<UseProtocol>(offset);
24268            // Vector header
24269            let max_ordinal: u64 = self.max_ordinal_present();
24270            encoder.write_num(max_ordinal, offset);
24271            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24272            // Calling encoder.out_of_line_offset(0) is not allowed.
24273            if max_ordinal == 0 {
24274                return Ok(());
24275            }
24276            depth.increment()?;
24277            let envelope_size = 8;
24278            let bytes_len = max_ordinal as usize * envelope_size;
24279            #[allow(unused_variables)]
24280            let offset = encoder.out_of_line_offset(bytes_len);
24281            let mut _prev_end_offset: usize = 0;
24282            if 1 > max_ordinal {
24283                return Ok(());
24284            }
24285
24286            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24287            // are envelope_size bytes.
24288            let cur_offset: usize = (1 - 1) * envelope_size;
24289
24290            // Zero reserved fields.
24291            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24292
24293            // Safety:
24294            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24295            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24296            //   envelope_size bytes, there is always sufficient room.
24297            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24298                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24299                encoder,
24300                offset + cur_offset,
24301                depth,
24302            )?;
24303
24304            _prev_end_offset = cur_offset + envelope_size;
24305            if 2 > max_ordinal {
24306                return Ok(());
24307            }
24308
24309            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24310            // are envelope_size bytes.
24311            let cur_offset: usize = (2 - 1) * envelope_size;
24312
24313            // Zero reserved fields.
24314            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24315
24316            // Safety:
24317            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24318            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24319            //   envelope_size bytes, there is always sufficient room.
24320            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24321                self.source_name.as_ref().map(
24322                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24323                ),
24324                encoder,
24325                offset + cur_offset,
24326                depth,
24327            )?;
24328
24329            _prev_end_offset = cur_offset + envelope_size;
24330            if 3 > max_ordinal {
24331                return Ok(());
24332            }
24333
24334            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24335            // are envelope_size bytes.
24336            let cur_offset: usize = (3 - 1) * envelope_size;
24337
24338            // Zero reserved fields.
24339            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24340
24341            // Safety:
24342            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24343            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24344            //   envelope_size bytes, there is always sufficient room.
24345            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24346            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24347            encoder, offset + cur_offset, depth
24348        )?;
24349
24350            _prev_end_offset = cur_offset + envelope_size;
24351            if 4 > max_ordinal {
24352                return Ok(());
24353            }
24354
24355            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24356            // are envelope_size bytes.
24357            let cur_offset: usize = (4 - 1) * envelope_size;
24358
24359            // Zero reserved fields.
24360            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24361
24362            // Safety:
24363            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24364            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24365            //   envelope_size bytes, there is always sufficient room.
24366            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
24367                self.dependency_type
24368                    .as_ref()
24369                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
24370                encoder,
24371                offset + cur_offset,
24372                depth,
24373            )?;
24374
24375            _prev_end_offset = cur_offset + envelope_size;
24376            if 5 > max_ordinal {
24377                return Ok(());
24378            }
24379
24380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24381            // are envelope_size bytes.
24382            let cur_offset: usize = (5 - 1) * envelope_size;
24383
24384            // Zero reserved fields.
24385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24386
24387            // Safety:
24388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24390            //   envelope_size bytes, there is always sufficient room.
24391            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
24392                self.availability
24393                    .as_ref()
24394                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
24395                encoder,
24396                offset + cur_offset,
24397                depth,
24398            )?;
24399
24400            _prev_end_offset = cur_offset + envelope_size;
24401            if 6 > max_ordinal {
24402                return Ok(());
24403            }
24404
24405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24406            // are envelope_size bytes.
24407            let cur_offset: usize = (6 - 1) * envelope_size;
24408
24409            // Zero reserved fields.
24410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24411
24412            // Safety:
24413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24415            //   envelope_size bytes, there is always sufficient room.
24416            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24417            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24418            encoder, offset + cur_offset, depth
24419        )?;
24420
24421            _prev_end_offset = cur_offset + envelope_size;
24422            if 7 > max_ordinal {
24423                return Ok(());
24424            }
24425
24426            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24427            // are envelope_size bytes.
24428            let cur_offset: usize = (7 - 1) * envelope_size;
24429
24430            // Zero reserved fields.
24431            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24432
24433            // Safety:
24434            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24435            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24436            //   envelope_size bytes, there is always sufficient room.
24437            fidl::encoding::encode_in_envelope_optional::<u8, D>(
24438                self.numbered_handle.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24439                encoder,
24440                offset + cur_offset,
24441                depth,
24442            )?;
24443
24444            _prev_end_offset = cur_offset + envelope_size;
24445
24446            Ok(())
24447        }
24448    }
24449
24450    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseProtocol {
24451        #[inline(always)]
24452        fn new_empty() -> Self {
24453            Self::default()
24454        }
24455
24456        unsafe fn decode(
24457            &mut self,
24458            decoder: &mut fidl::encoding::Decoder<'_, D>,
24459            offset: usize,
24460            mut depth: fidl::encoding::Depth,
24461        ) -> fidl::Result<()> {
24462            decoder.debug_check_bounds::<Self>(offset);
24463            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24464                None => return Err(fidl::Error::NotNullable),
24465                Some(len) => len,
24466            };
24467            // Calling decoder.out_of_line_offset(0) is not allowed.
24468            if len == 0 {
24469                return Ok(());
24470            };
24471            depth.increment()?;
24472            let envelope_size = 8;
24473            let bytes_len = len * envelope_size;
24474            let offset = decoder.out_of_line_offset(bytes_len)?;
24475            // Decode the envelope for each type.
24476            let mut _next_ordinal_to_read = 0;
24477            let mut next_offset = offset;
24478            let end_offset = offset + bytes_len;
24479            _next_ordinal_to_read += 1;
24480            if next_offset >= end_offset {
24481                return Ok(());
24482            }
24483
24484            // Decode unknown envelopes for gaps in ordinals.
24485            while _next_ordinal_to_read < 1 {
24486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24487                _next_ordinal_to_read += 1;
24488                next_offset += envelope_size;
24489            }
24490
24491            let next_out_of_line = decoder.next_out_of_line();
24492            let handles_before = decoder.remaining_handles();
24493            if let Some((inlined, num_bytes, num_handles)) =
24494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24495            {
24496                let member_inline_size =
24497                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24498                if inlined != (member_inline_size <= 4) {
24499                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24500                }
24501                let inner_offset;
24502                let mut inner_depth = depth.clone();
24503                if inlined {
24504                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24505                    inner_offset = next_offset;
24506                } else {
24507                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24508                    inner_depth.increment()?;
24509                }
24510                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
24511                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
24512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24513                {
24514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24515                }
24516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24518                }
24519            }
24520
24521            next_offset += envelope_size;
24522            _next_ordinal_to_read += 1;
24523            if next_offset >= end_offset {
24524                return Ok(());
24525            }
24526
24527            // Decode unknown envelopes for gaps in ordinals.
24528            while _next_ordinal_to_read < 2 {
24529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24530                _next_ordinal_to_read += 1;
24531                next_offset += envelope_size;
24532            }
24533
24534            let next_out_of_line = decoder.next_out_of_line();
24535            let handles_before = decoder.remaining_handles();
24536            if let Some((inlined, num_bytes, num_handles)) =
24537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24538            {
24539                let member_inline_size =
24540                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
24541                        decoder.context,
24542                    );
24543                if inlined != (member_inline_size <= 4) {
24544                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24545                }
24546                let inner_offset;
24547                let mut inner_depth = depth.clone();
24548                if inlined {
24549                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24550                    inner_offset = next_offset;
24551                } else {
24552                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24553                    inner_depth.increment()?;
24554                }
24555                let val_ref = self
24556                    .source_name
24557                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
24558                fidl::decode!(
24559                    fidl::encoding::BoundedString<100>,
24560                    D,
24561                    val_ref,
24562                    decoder,
24563                    inner_offset,
24564                    inner_depth
24565                )?;
24566                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24567                {
24568                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24569                }
24570                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24571                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24572                }
24573            }
24574
24575            next_offset += envelope_size;
24576            _next_ordinal_to_read += 1;
24577            if next_offset >= end_offset {
24578                return Ok(());
24579            }
24580
24581            // Decode unknown envelopes for gaps in ordinals.
24582            while _next_ordinal_to_read < 3 {
24583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24584                _next_ordinal_to_read += 1;
24585                next_offset += envelope_size;
24586            }
24587
24588            let next_out_of_line = decoder.next_out_of_line();
24589            let handles_before = decoder.remaining_handles();
24590            if let Some((inlined, num_bytes, num_handles)) =
24591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24592            {
24593                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24594                if inlined != (member_inline_size <= 4) {
24595                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24596                }
24597                let inner_offset;
24598                let mut inner_depth = depth.clone();
24599                if inlined {
24600                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24601                    inner_offset = next_offset;
24602                } else {
24603                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24604                    inner_depth.increment()?;
24605                }
24606                let val_ref = self.target_path.get_or_insert_with(|| {
24607                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
24608                });
24609                fidl::decode!(
24610                    fidl::encoding::BoundedString<1024>,
24611                    D,
24612                    val_ref,
24613                    decoder,
24614                    inner_offset,
24615                    inner_depth
24616                )?;
24617                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24618                {
24619                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24620                }
24621                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24622                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24623                }
24624            }
24625
24626            next_offset += envelope_size;
24627            _next_ordinal_to_read += 1;
24628            if next_offset >= end_offset {
24629                return Ok(());
24630            }
24631
24632            // Decode unknown envelopes for gaps in ordinals.
24633            while _next_ordinal_to_read < 4 {
24634                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24635                _next_ordinal_to_read += 1;
24636                next_offset += envelope_size;
24637            }
24638
24639            let next_out_of_line = decoder.next_out_of_line();
24640            let handles_before = decoder.remaining_handles();
24641            if let Some((inlined, num_bytes, num_handles)) =
24642                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24643            {
24644                let member_inline_size =
24645                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24646                if inlined != (member_inline_size <= 4) {
24647                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24648                }
24649                let inner_offset;
24650                let mut inner_depth = depth.clone();
24651                if inlined {
24652                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24653                    inner_offset = next_offset;
24654                } else {
24655                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24656                    inner_depth.increment()?;
24657                }
24658                let val_ref =
24659                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
24660                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
24661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24662                {
24663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24664                }
24665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24667                }
24668            }
24669
24670            next_offset += envelope_size;
24671            _next_ordinal_to_read += 1;
24672            if next_offset >= end_offset {
24673                return Ok(());
24674            }
24675
24676            // Decode unknown envelopes for gaps in ordinals.
24677            while _next_ordinal_to_read < 5 {
24678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24679                _next_ordinal_to_read += 1;
24680                next_offset += envelope_size;
24681            }
24682
24683            let next_out_of_line = decoder.next_out_of_line();
24684            let handles_before = decoder.remaining_handles();
24685            if let Some((inlined, num_bytes, num_handles)) =
24686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24687            {
24688                let member_inline_size =
24689                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24690                if inlined != (member_inline_size <= 4) {
24691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24692                }
24693                let inner_offset;
24694                let mut inner_depth = depth.clone();
24695                if inlined {
24696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24697                    inner_offset = next_offset;
24698                } else {
24699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24700                    inner_depth.increment()?;
24701                }
24702                let val_ref =
24703                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
24704                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
24705                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24706                {
24707                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24708                }
24709                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24710                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24711                }
24712            }
24713
24714            next_offset += envelope_size;
24715            _next_ordinal_to_read += 1;
24716            if next_offset >= end_offset {
24717                return Ok(());
24718            }
24719
24720            // Decode unknown envelopes for gaps in ordinals.
24721            while _next_ordinal_to_read < 6 {
24722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24723                _next_ordinal_to_read += 1;
24724                next_offset += envelope_size;
24725            }
24726
24727            let next_out_of_line = decoder.next_out_of_line();
24728            let handles_before = decoder.remaining_handles();
24729            if let Some((inlined, num_bytes, num_handles)) =
24730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24731            {
24732                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24733                if inlined != (member_inline_size <= 4) {
24734                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24735                }
24736                let inner_offset;
24737                let mut inner_depth = depth.clone();
24738                if inlined {
24739                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24740                    inner_offset = next_offset;
24741                } else {
24742                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24743                    inner_depth.increment()?;
24744                }
24745                let val_ref = self.source_dictionary.get_or_insert_with(|| {
24746                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
24747                });
24748                fidl::decode!(
24749                    fidl::encoding::BoundedString<1024>,
24750                    D,
24751                    val_ref,
24752                    decoder,
24753                    inner_offset,
24754                    inner_depth
24755                )?;
24756                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24757                {
24758                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24759                }
24760                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24761                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24762                }
24763            }
24764
24765            next_offset += envelope_size;
24766            _next_ordinal_to_read += 1;
24767            if next_offset >= end_offset {
24768                return Ok(());
24769            }
24770
24771            // Decode unknown envelopes for gaps in ordinals.
24772            while _next_ordinal_to_read < 7 {
24773                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24774                _next_ordinal_to_read += 1;
24775                next_offset += envelope_size;
24776            }
24777
24778            let next_out_of_line = decoder.next_out_of_line();
24779            let handles_before = decoder.remaining_handles();
24780            if let Some((inlined, num_bytes, num_handles)) =
24781                fidl::encoding::decode_envelope_header(decoder, next_offset)?
24782            {
24783                let member_inline_size =
24784                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24785                if inlined != (member_inline_size <= 4) {
24786                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
24787                }
24788                let inner_offset;
24789                let mut inner_depth = depth.clone();
24790                if inlined {
24791                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24792                    inner_offset = next_offset;
24793                } else {
24794                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24795                    inner_depth.increment()?;
24796                }
24797                let val_ref = self.numbered_handle.get_or_insert_with(|| fidl::new_empty!(u8, D));
24798                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24799                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24800                {
24801                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
24802                }
24803                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24804                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24805                }
24806            }
24807
24808            next_offset += envelope_size;
24809
24810            // Decode the remaining unknown envelopes.
24811            while next_offset < end_offset {
24812                _next_ordinal_to_read += 1;
24813                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24814                next_offset += envelope_size;
24815            }
24816
24817            Ok(())
24818        }
24819    }
24820
24821    impl UseRunner {
24822        #[inline(always)]
24823        fn max_ordinal_present(&self) -> u64 {
24824            if let Some(_) = self.source_dictionary {
24825                return 3;
24826            }
24827            if let Some(_) = self.source_name {
24828                return 2;
24829            }
24830            if let Some(_) = self.source {
24831                return 1;
24832            }
24833            0
24834        }
24835    }
24836
24837    impl fidl::encoding::ValueTypeMarker for UseRunner {
24838        type Borrowed<'a> = &'a Self;
24839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24840            value
24841        }
24842    }
24843
24844    unsafe impl fidl::encoding::TypeMarker for UseRunner {
24845        type Owned = Self;
24846
24847        #[inline(always)]
24848        fn inline_align(_context: fidl::encoding::Context) -> usize {
24849            8
24850        }
24851
24852        #[inline(always)]
24853        fn inline_size(_context: fidl::encoding::Context) -> usize {
24854            16
24855        }
24856    }
24857
24858    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseRunner, D>
24859        for &UseRunner
24860    {
24861        unsafe fn encode(
24862            self,
24863            encoder: &mut fidl::encoding::Encoder<'_, D>,
24864            offset: usize,
24865            mut depth: fidl::encoding::Depth,
24866        ) -> fidl::Result<()> {
24867            encoder.debug_check_bounds::<UseRunner>(offset);
24868            // Vector header
24869            let max_ordinal: u64 = self.max_ordinal_present();
24870            encoder.write_num(max_ordinal, offset);
24871            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24872            // Calling encoder.out_of_line_offset(0) is not allowed.
24873            if max_ordinal == 0 {
24874                return Ok(());
24875            }
24876            depth.increment()?;
24877            let envelope_size = 8;
24878            let bytes_len = max_ordinal as usize * envelope_size;
24879            #[allow(unused_variables)]
24880            let offset = encoder.out_of_line_offset(bytes_len);
24881            let mut _prev_end_offset: usize = 0;
24882            if 1 > max_ordinal {
24883                return Ok(());
24884            }
24885
24886            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24887            // are envelope_size bytes.
24888            let cur_offset: usize = (1 - 1) * envelope_size;
24889
24890            // Zero reserved fields.
24891            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24892
24893            // Safety:
24894            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24895            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24896            //   envelope_size bytes, there is always sufficient room.
24897            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
24898                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
24899                encoder,
24900                offset + cur_offset,
24901                depth,
24902            )?;
24903
24904            _prev_end_offset = cur_offset + envelope_size;
24905            if 2 > max_ordinal {
24906                return Ok(());
24907            }
24908
24909            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24910            // are envelope_size bytes.
24911            let cur_offset: usize = (2 - 1) * envelope_size;
24912
24913            // Zero reserved fields.
24914            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24915
24916            // Safety:
24917            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24918            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24919            //   envelope_size bytes, there is always sufficient room.
24920            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
24921                self.source_name.as_ref().map(
24922                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
24923                ),
24924                encoder,
24925                offset + cur_offset,
24926                depth,
24927            )?;
24928
24929            _prev_end_offset = cur_offset + envelope_size;
24930            if 3 > max_ordinal {
24931                return Ok(());
24932            }
24933
24934            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
24935            // are envelope_size bytes.
24936            let cur_offset: usize = (3 - 1) * envelope_size;
24937
24938            // Zero reserved fields.
24939            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24940
24941            // Safety:
24942            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
24943            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
24944            //   envelope_size bytes, there is always sufficient room.
24945            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
24946            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
24947            encoder, offset + cur_offset, depth
24948        )?;
24949
24950            _prev_end_offset = cur_offset + envelope_size;
24951
24952            Ok(())
24953        }
24954    }
24955
24956    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseRunner {
24957        #[inline(always)]
24958        fn new_empty() -> Self {
24959            Self::default()
24960        }
24961
24962        unsafe fn decode(
24963            &mut self,
24964            decoder: &mut fidl::encoding::Decoder<'_, D>,
24965            offset: usize,
24966            mut depth: fidl::encoding::Depth,
24967        ) -> fidl::Result<()> {
24968            decoder.debug_check_bounds::<Self>(offset);
24969            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24970                None => return Err(fidl::Error::NotNullable),
24971                Some(len) => len,
24972            };
24973            // Calling decoder.out_of_line_offset(0) is not allowed.
24974            if len == 0 {
24975                return Ok(());
24976            };
24977            depth.increment()?;
24978            let envelope_size = 8;
24979            let bytes_len = len * envelope_size;
24980            let offset = decoder.out_of_line_offset(bytes_len)?;
24981            // Decode the envelope for each type.
24982            let mut _next_ordinal_to_read = 0;
24983            let mut next_offset = offset;
24984            let end_offset = offset + bytes_len;
24985            _next_ordinal_to_read += 1;
24986            if next_offset >= end_offset {
24987                return Ok(());
24988            }
24989
24990            // Decode unknown envelopes for gaps in ordinals.
24991            while _next_ordinal_to_read < 1 {
24992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24993                _next_ordinal_to_read += 1;
24994                next_offset += envelope_size;
24995            }
24996
24997            let next_out_of_line = decoder.next_out_of_line();
24998            let handles_before = decoder.remaining_handles();
24999            if let Some((inlined, num_bytes, num_handles)) =
25000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25001            {
25002                let member_inline_size =
25003                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25004                if inlined != (member_inline_size <= 4) {
25005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25006                }
25007                let inner_offset;
25008                let mut inner_depth = depth.clone();
25009                if inlined {
25010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25011                    inner_offset = next_offset;
25012                } else {
25013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25014                    inner_depth.increment()?;
25015                }
25016                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25017                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25018                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25019                {
25020                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25021                }
25022                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25023                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25024                }
25025            }
25026
25027            next_offset += envelope_size;
25028            _next_ordinal_to_read += 1;
25029            if next_offset >= end_offset {
25030                return Ok(());
25031            }
25032
25033            // Decode unknown envelopes for gaps in ordinals.
25034            while _next_ordinal_to_read < 2 {
25035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25036                _next_ordinal_to_read += 1;
25037                next_offset += envelope_size;
25038            }
25039
25040            let next_out_of_line = decoder.next_out_of_line();
25041            let handles_before = decoder.remaining_handles();
25042            if let Some((inlined, num_bytes, num_handles)) =
25043                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25044            {
25045                let member_inline_size =
25046                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25047                        decoder.context,
25048                    );
25049                if inlined != (member_inline_size <= 4) {
25050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25051                }
25052                let inner_offset;
25053                let mut inner_depth = depth.clone();
25054                if inlined {
25055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25056                    inner_offset = next_offset;
25057                } else {
25058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25059                    inner_depth.increment()?;
25060                }
25061                let val_ref = self
25062                    .source_name
25063                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25064                fidl::decode!(
25065                    fidl::encoding::BoundedString<100>,
25066                    D,
25067                    val_ref,
25068                    decoder,
25069                    inner_offset,
25070                    inner_depth
25071                )?;
25072                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25073                {
25074                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25075                }
25076                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25077                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25078                }
25079            }
25080
25081            next_offset += envelope_size;
25082            _next_ordinal_to_read += 1;
25083            if next_offset >= end_offset {
25084                return Ok(());
25085            }
25086
25087            // Decode unknown envelopes for gaps in ordinals.
25088            while _next_ordinal_to_read < 3 {
25089                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25090                _next_ordinal_to_read += 1;
25091                next_offset += envelope_size;
25092            }
25093
25094            let next_out_of_line = decoder.next_out_of_line();
25095            let handles_before = decoder.remaining_handles();
25096            if let Some((inlined, num_bytes, num_handles)) =
25097                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25098            {
25099                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25100                if inlined != (member_inline_size <= 4) {
25101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25102                }
25103                let inner_offset;
25104                let mut inner_depth = depth.clone();
25105                if inlined {
25106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25107                    inner_offset = next_offset;
25108                } else {
25109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25110                    inner_depth.increment()?;
25111                }
25112                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25113                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25114                });
25115                fidl::decode!(
25116                    fidl::encoding::BoundedString<1024>,
25117                    D,
25118                    val_ref,
25119                    decoder,
25120                    inner_offset,
25121                    inner_depth
25122                )?;
25123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25124                {
25125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25126                }
25127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25129                }
25130            }
25131
25132            next_offset += envelope_size;
25133
25134            // Decode the remaining unknown envelopes.
25135            while next_offset < end_offset {
25136                _next_ordinal_to_read += 1;
25137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25138                next_offset += envelope_size;
25139            }
25140
25141            Ok(())
25142        }
25143    }
25144
25145    impl UseService {
25146        #[inline(always)]
25147        fn max_ordinal_present(&self) -> u64 {
25148            if let Some(_) = self.source_dictionary {
25149                return 6;
25150            }
25151            if let Some(_) = self.availability {
25152                return 5;
25153            }
25154            if let Some(_) = self.dependency_type {
25155                return 4;
25156            }
25157            if let Some(_) = self.target_path {
25158                return 3;
25159            }
25160            if let Some(_) = self.source_name {
25161                return 2;
25162            }
25163            if let Some(_) = self.source {
25164                return 1;
25165            }
25166            0
25167        }
25168    }
25169
25170    impl fidl::encoding::ValueTypeMarker for UseService {
25171        type Borrowed<'a> = &'a Self;
25172        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25173            value
25174        }
25175    }
25176
25177    unsafe impl fidl::encoding::TypeMarker for UseService {
25178        type Owned = Self;
25179
25180        #[inline(always)]
25181        fn inline_align(_context: fidl::encoding::Context) -> usize {
25182            8
25183        }
25184
25185        #[inline(always)]
25186        fn inline_size(_context: fidl::encoding::Context) -> usize {
25187            16
25188        }
25189    }
25190
25191    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseService, D>
25192        for &UseService
25193    {
25194        unsafe fn encode(
25195            self,
25196            encoder: &mut fidl::encoding::Encoder<'_, D>,
25197            offset: usize,
25198            mut depth: fidl::encoding::Depth,
25199        ) -> fidl::Result<()> {
25200            encoder.debug_check_bounds::<UseService>(offset);
25201            // Vector header
25202            let max_ordinal: u64 = self.max_ordinal_present();
25203            encoder.write_num(max_ordinal, offset);
25204            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25205            // Calling encoder.out_of_line_offset(0) is not allowed.
25206            if max_ordinal == 0 {
25207                return Ok(());
25208            }
25209            depth.increment()?;
25210            let envelope_size = 8;
25211            let bytes_len = max_ordinal as usize * envelope_size;
25212            #[allow(unused_variables)]
25213            let offset = encoder.out_of_line_offset(bytes_len);
25214            let mut _prev_end_offset: usize = 0;
25215            if 1 > max_ordinal {
25216                return Ok(());
25217            }
25218
25219            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25220            // are envelope_size bytes.
25221            let cur_offset: usize = (1 - 1) * envelope_size;
25222
25223            // Zero reserved fields.
25224            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25225
25226            // Safety:
25227            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25228            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25229            //   envelope_size bytes, there is always sufficient room.
25230            fidl::encoding::encode_in_envelope_optional::<Ref, D>(
25231                self.source.as_ref().map(<Ref as fidl::encoding::ValueTypeMarker>::borrow),
25232                encoder,
25233                offset + cur_offset,
25234                depth,
25235            )?;
25236
25237            _prev_end_offset = cur_offset + envelope_size;
25238            if 2 > max_ordinal {
25239                return Ok(());
25240            }
25241
25242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25243            // are envelope_size bytes.
25244            let cur_offset: usize = (2 - 1) * envelope_size;
25245
25246            // Zero reserved fields.
25247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25248
25249            // Safety:
25250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25252            //   envelope_size bytes, there is always sufficient room.
25253            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25254                self.source_name.as_ref().map(
25255                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25256                ),
25257                encoder,
25258                offset + cur_offset,
25259                depth,
25260            )?;
25261
25262            _prev_end_offset = cur_offset + envelope_size;
25263            if 3 > max_ordinal {
25264                return Ok(());
25265            }
25266
25267            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25268            // are envelope_size bytes.
25269            let cur_offset: usize = (3 - 1) * envelope_size;
25270
25271            // Zero reserved fields.
25272            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25273
25274            // Safety:
25275            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25276            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25277            //   envelope_size bytes, there is always sufficient room.
25278            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25279            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25280            encoder, offset + cur_offset, depth
25281        )?;
25282
25283            _prev_end_offset = cur_offset + envelope_size;
25284            if 4 > max_ordinal {
25285                return Ok(());
25286            }
25287
25288            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25289            // are envelope_size bytes.
25290            let cur_offset: usize = (4 - 1) * envelope_size;
25291
25292            // Zero reserved fields.
25293            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25294
25295            // Safety:
25296            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25297            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25298            //   envelope_size bytes, there is always sufficient room.
25299            fidl::encoding::encode_in_envelope_optional::<DependencyType, D>(
25300                self.dependency_type
25301                    .as_ref()
25302                    .map(<DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
25303                encoder,
25304                offset + cur_offset,
25305                depth,
25306            )?;
25307
25308            _prev_end_offset = cur_offset + envelope_size;
25309            if 5 > max_ordinal {
25310                return Ok(());
25311            }
25312
25313            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25314            // are envelope_size bytes.
25315            let cur_offset: usize = (5 - 1) * envelope_size;
25316
25317            // Zero reserved fields.
25318            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25319
25320            // Safety:
25321            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25322            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25323            //   envelope_size bytes, there is always sufficient room.
25324            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
25325                self.availability
25326                    .as_ref()
25327                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
25328                encoder,
25329                offset + cur_offset,
25330                depth,
25331            )?;
25332
25333            _prev_end_offset = cur_offset + envelope_size;
25334            if 6 > max_ordinal {
25335                return Ok(());
25336            }
25337
25338            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25339            // are envelope_size bytes.
25340            let cur_offset: usize = (6 - 1) * envelope_size;
25341
25342            // Zero reserved fields.
25343            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25344
25345            // Safety:
25346            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25347            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25348            //   envelope_size bytes, there is always sufficient room.
25349            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25350            self.source_dictionary.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25351            encoder, offset + cur_offset, depth
25352        )?;
25353
25354            _prev_end_offset = cur_offset + envelope_size;
25355
25356            Ok(())
25357        }
25358    }
25359
25360    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseService {
25361        #[inline(always)]
25362        fn new_empty() -> Self {
25363            Self::default()
25364        }
25365
25366        unsafe fn decode(
25367            &mut self,
25368            decoder: &mut fidl::encoding::Decoder<'_, D>,
25369            offset: usize,
25370            mut depth: fidl::encoding::Depth,
25371        ) -> fidl::Result<()> {
25372            decoder.debug_check_bounds::<Self>(offset);
25373            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25374                None => return Err(fidl::Error::NotNullable),
25375                Some(len) => len,
25376            };
25377            // Calling decoder.out_of_line_offset(0) is not allowed.
25378            if len == 0 {
25379                return Ok(());
25380            };
25381            depth.increment()?;
25382            let envelope_size = 8;
25383            let bytes_len = len * envelope_size;
25384            let offset = decoder.out_of_line_offset(bytes_len)?;
25385            // Decode the envelope for each type.
25386            let mut _next_ordinal_to_read = 0;
25387            let mut next_offset = offset;
25388            let end_offset = offset + bytes_len;
25389            _next_ordinal_to_read += 1;
25390            if next_offset >= end_offset {
25391                return Ok(());
25392            }
25393
25394            // Decode unknown envelopes for gaps in ordinals.
25395            while _next_ordinal_to_read < 1 {
25396                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25397                _next_ordinal_to_read += 1;
25398                next_offset += envelope_size;
25399            }
25400
25401            let next_out_of_line = decoder.next_out_of_line();
25402            let handles_before = decoder.remaining_handles();
25403            if let Some((inlined, num_bytes, num_handles)) =
25404                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25405            {
25406                let member_inline_size =
25407                    <Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25408                if inlined != (member_inline_size <= 4) {
25409                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25410                }
25411                let inner_offset;
25412                let mut inner_depth = depth.clone();
25413                if inlined {
25414                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25415                    inner_offset = next_offset;
25416                } else {
25417                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25418                    inner_depth.increment()?;
25419                }
25420                let val_ref = self.source.get_or_insert_with(|| fidl::new_empty!(Ref, D));
25421                fidl::decode!(Ref, D, val_ref, decoder, inner_offset, inner_depth)?;
25422                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25423                {
25424                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25425                }
25426                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25427                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25428                }
25429            }
25430
25431            next_offset += envelope_size;
25432            _next_ordinal_to_read += 1;
25433            if next_offset >= end_offset {
25434                return Ok(());
25435            }
25436
25437            // Decode unknown envelopes for gaps in ordinals.
25438            while _next_ordinal_to_read < 2 {
25439                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25440                _next_ordinal_to_read += 1;
25441                next_offset += envelope_size;
25442            }
25443
25444            let next_out_of_line = decoder.next_out_of_line();
25445            let handles_before = decoder.remaining_handles();
25446            if let Some((inlined, num_bytes, num_handles)) =
25447                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25448            {
25449                let member_inline_size =
25450                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25451                        decoder.context,
25452                    );
25453                if inlined != (member_inline_size <= 4) {
25454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25455                }
25456                let inner_offset;
25457                let mut inner_depth = depth.clone();
25458                if inlined {
25459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25460                    inner_offset = next_offset;
25461                } else {
25462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25463                    inner_depth.increment()?;
25464                }
25465                let val_ref = self
25466                    .source_name
25467                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25468                fidl::decode!(
25469                    fidl::encoding::BoundedString<100>,
25470                    D,
25471                    val_ref,
25472                    decoder,
25473                    inner_offset,
25474                    inner_depth
25475                )?;
25476                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25477                {
25478                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25479                }
25480                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25481                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25482                }
25483            }
25484
25485            next_offset += envelope_size;
25486            _next_ordinal_to_read += 1;
25487            if next_offset >= end_offset {
25488                return Ok(());
25489            }
25490
25491            // Decode unknown envelopes for gaps in ordinals.
25492            while _next_ordinal_to_read < 3 {
25493                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25494                _next_ordinal_to_read += 1;
25495                next_offset += envelope_size;
25496            }
25497
25498            let next_out_of_line = decoder.next_out_of_line();
25499            let handles_before = decoder.remaining_handles();
25500            if let Some((inlined, num_bytes, num_handles)) =
25501                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25502            {
25503                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25504                if inlined != (member_inline_size <= 4) {
25505                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25506                }
25507                let inner_offset;
25508                let mut inner_depth = depth.clone();
25509                if inlined {
25510                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25511                    inner_offset = next_offset;
25512                } else {
25513                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25514                    inner_depth.increment()?;
25515                }
25516                let val_ref = self.target_path.get_or_insert_with(|| {
25517                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25518                });
25519                fidl::decode!(
25520                    fidl::encoding::BoundedString<1024>,
25521                    D,
25522                    val_ref,
25523                    decoder,
25524                    inner_offset,
25525                    inner_depth
25526                )?;
25527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25528                {
25529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25530                }
25531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25533                }
25534            }
25535
25536            next_offset += envelope_size;
25537            _next_ordinal_to_read += 1;
25538            if next_offset >= end_offset {
25539                return Ok(());
25540            }
25541
25542            // Decode unknown envelopes for gaps in ordinals.
25543            while _next_ordinal_to_read < 4 {
25544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25545                _next_ordinal_to_read += 1;
25546                next_offset += envelope_size;
25547            }
25548
25549            let next_out_of_line = decoder.next_out_of_line();
25550            let handles_before = decoder.remaining_handles();
25551            if let Some((inlined, num_bytes, num_handles)) =
25552                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25553            {
25554                let member_inline_size =
25555                    <DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25556                if inlined != (member_inline_size <= 4) {
25557                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25558                }
25559                let inner_offset;
25560                let mut inner_depth = depth.clone();
25561                if inlined {
25562                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25563                    inner_offset = next_offset;
25564                } else {
25565                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25566                    inner_depth.increment()?;
25567                }
25568                let val_ref =
25569                    self.dependency_type.get_or_insert_with(|| fidl::new_empty!(DependencyType, D));
25570                fidl::decode!(DependencyType, D, val_ref, decoder, inner_offset, inner_depth)?;
25571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25572                {
25573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25574                }
25575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25577                }
25578            }
25579
25580            next_offset += envelope_size;
25581            _next_ordinal_to_read += 1;
25582            if next_offset >= end_offset {
25583                return Ok(());
25584            }
25585
25586            // Decode unknown envelopes for gaps in ordinals.
25587            while _next_ordinal_to_read < 5 {
25588                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25589                _next_ordinal_to_read += 1;
25590                next_offset += envelope_size;
25591            }
25592
25593            let next_out_of_line = decoder.next_out_of_line();
25594            let handles_before = decoder.remaining_handles();
25595            if let Some((inlined, num_bytes, num_handles)) =
25596                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25597            {
25598                let member_inline_size =
25599                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25600                if inlined != (member_inline_size <= 4) {
25601                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25602                }
25603                let inner_offset;
25604                let mut inner_depth = depth.clone();
25605                if inlined {
25606                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25607                    inner_offset = next_offset;
25608                } else {
25609                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25610                    inner_depth.increment()?;
25611                }
25612                let val_ref =
25613                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
25614                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
25615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25616                {
25617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25618                }
25619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25621                }
25622            }
25623
25624            next_offset += envelope_size;
25625            _next_ordinal_to_read += 1;
25626            if next_offset >= end_offset {
25627                return Ok(());
25628            }
25629
25630            // Decode unknown envelopes for gaps in ordinals.
25631            while _next_ordinal_to_read < 6 {
25632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25633                _next_ordinal_to_read += 1;
25634                next_offset += envelope_size;
25635            }
25636
25637            let next_out_of_line = decoder.next_out_of_line();
25638            let handles_before = decoder.remaining_handles();
25639            if let Some((inlined, num_bytes, num_handles)) =
25640                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25641            {
25642                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25643                if inlined != (member_inline_size <= 4) {
25644                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25645                }
25646                let inner_offset;
25647                let mut inner_depth = depth.clone();
25648                if inlined {
25649                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25650                    inner_offset = next_offset;
25651                } else {
25652                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25653                    inner_depth.increment()?;
25654                }
25655                let val_ref = self.source_dictionary.get_or_insert_with(|| {
25656                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25657                });
25658                fidl::decode!(
25659                    fidl::encoding::BoundedString<1024>,
25660                    D,
25661                    val_ref,
25662                    decoder,
25663                    inner_offset,
25664                    inner_depth
25665                )?;
25666                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25667                {
25668                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25669                }
25670                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25671                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25672                }
25673            }
25674
25675            next_offset += envelope_size;
25676
25677            // Decode the remaining unknown envelopes.
25678            while next_offset < end_offset {
25679                _next_ordinal_to_read += 1;
25680                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25681                next_offset += envelope_size;
25682            }
25683
25684            Ok(())
25685        }
25686    }
25687
25688    impl UseStorage {
25689        #[inline(always)]
25690        fn max_ordinal_present(&self) -> u64 {
25691            if let Some(_) = self.availability {
25692                return 3;
25693            }
25694            if let Some(_) = self.target_path {
25695                return 2;
25696            }
25697            if let Some(_) = self.source_name {
25698                return 1;
25699            }
25700            0
25701        }
25702    }
25703
25704    impl fidl::encoding::ValueTypeMarker for UseStorage {
25705        type Borrowed<'a> = &'a Self;
25706        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25707            value
25708        }
25709    }
25710
25711    unsafe impl fidl::encoding::TypeMarker for UseStorage {
25712        type Owned = Self;
25713
25714        #[inline(always)]
25715        fn inline_align(_context: fidl::encoding::Context) -> usize {
25716            8
25717        }
25718
25719        #[inline(always)]
25720        fn inline_size(_context: fidl::encoding::Context) -> usize {
25721            16
25722        }
25723    }
25724
25725    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UseStorage, D>
25726        for &UseStorage
25727    {
25728        unsafe fn encode(
25729            self,
25730            encoder: &mut fidl::encoding::Encoder<'_, D>,
25731            offset: usize,
25732            mut depth: fidl::encoding::Depth,
25733        ) -> fidl::Result<()> {
25734            encoder.debug_check_bounds::<UseStorage>(offset);
25735            // Vector header
25736            let max_ordinal: u64 = self.max_ordinal_present();
25737            encoder.write_num(max_ordinal, offset);
25738            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25739            // Calling encoder.out_of_line_offset(0) is not allowed.
25740            if max_ordinal == 0 {
25741                return Ok(());
25742            }
25743            depth.increment()?;
25744            let envelope_size = 8;
25745            let bytes_len = max_ordinal as usize * envelope_size;
25746            #[allow(unused_variables)]
25747            let offset = encoder.out_of_line_offset(bytes_len);
25748            let mut _prev_end_offset: usize = 0;
25749            if 1 > max_ordinal {
25750                return Ok(());
25751            }
25752
25753            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25754            // are envelope_size bytes.
25755            let cur_offset: usize = (1 - 1) * envelope_size;
25756
25757            // Zero reserved fields.
25758            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25759
25760            // Safety:
25761            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25762            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25763            //   envelope_size bytes, there is always sufficient room.
25764            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
25765                self.source_name.as_ref().map(
25766                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
25767                ),
25768                encoder,
25769                offset + cur_offset,
25770                depth,
25771            )?;
25772
25773            _prev_end_offset = cur_offset + envelope_size;
25774            if 2 > max_ordinal {
25775                return Ok(());
25776            }
25777
25778            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25779            // are envelope_size bytes.
25780            let cur_offset: usize = (2 - 1) * envelope_size;
25781
25782            // Zero reserved fields.
25783            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25784
25785            // Safety:
25786            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25787            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25788            //   envelope_size bytes, there is always sufficient room.
25789            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
25790            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
25791            encoder, offset + cur_offset, depth
25792        )?;
25793
25794            _prev_end_offset = cur_offset + envelope_size;
25795            if 3 > max_ordinal {
25796                return Ok(());
25797            }
25798
25799            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
25800            // are envelope_size bytes.
25801            let cur_offset: usize = (3 - 1) * envelope_size;
25802
25803            // Zero reserved fields.
25804            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25805
25806            // Safety:
25807            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
25808            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
25809            //   envelope_size bytes, there is always sufficient room.
25810            fidl::encoding::encode_in_envelope_optional::<Availability, D>(
25811                self.availability
25812                    .as_ref()
25813                    .map(<Availability as fidl::encoding::ValueTypeMarker>::borrow),
25814                encoder,
25815                offset + cur_offset,
25816                depth,
25817            )?;
25818
25819            _prev_end_offset = cur_offset + envelope_size;
25820
25821            Ok(())
25822        }
25823    }
25824
25825    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UseStorage {
25826        #[inline(always)]
25827        fn new_empty() -> Self {
25828            Self::default()
25829        }
25830
25831        unsafe fn decode(
25832            &mut self,
25833            decoder: &mut fidl::encoding::Decoder<'_, D>,
25834            offset: usize,
25835            mut depth: fidl::encoding::Depth,
25836        ) -> fidl::Result<()> {
25837            decoder.debug_check_bounds::<Self>(offset);
25838            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25839                None => return Err(fidl::Error::NotNullable),
25840                Some(len) => len,
25841            };
25842            // Calling decoder.out_of_line_offset(0) is not allowed.
25843            if len == 0 {
25844                return Ok(());
25845            };
25846            depth.increment()?;
25847            let envelope_size = 8;
25848            let bytes_len = len * envelope_size;
25849            let offset = decoder.out_of_line_offset(bytes_len)?;
25850            // Decode the envelope for each type.
25851            let mut _next_ordinal_to_read = 0;
25852            let mut next_offset = offset;
25853            let end_offset = offset + bytes_len;
25854            _next_ordinal_to_read += 1;
25855            if next_offset >= end_offset {
25856                return Ok(());
25857            }
25858
25859            // Decode unknown envelopes for gaps in ordinals.
25860            while _next_ordinal_to_read < 1 {
25861                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25862                _next_ordinal_to_read += 1;
25863                next_offset += envelope_size;
25864            }
25865
25866            let next_out_of_line = decoder.next_out_of_line();
25867            let handles_before = decoder.remaining_handles();
25868            if let Some((inlined, num_bytes, num_handles)) =
25869                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25870            {
25871                let member_inline_size =
25872                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
25873                        decoder.context,
25874                    );
25875                if inlined != (member_inline_size <= 4) {
25876                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25877                }
25878                let inner_offset;
25879                let mut inner_depth = depth.clone();
25880                if inlined {
25881                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25882                    inner_offset = next_offset;
25883                } else {
25884                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25885                    inner_depth.increment()?;
25886                }
25887                let val_ref = self
25888                    .source_name
25889                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
25890                fidl::decode!(
25891                    fidl::encoding::BoundedString<100>,
25892                    D,
25893                    val_ref,
25894                    decoder,
25895                    inner_offset,
25896                    inner_depth
25897                )?;
25898                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25899                {
25900                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25901                }
25902                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25903                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25904                }
25905            }
25906
25907            next_offset += envelope_size;
25908            _next_ordinal_to_read += 1;
25909            if next_offset >= end_offset {
25910                return Ok(());
25911            }
25912
25913            // Decode unknown envelopes for gaps in ordinals.
25914            while _next_ordinal_to_read < 2 {
25915                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25916                _next_ordinal_to_read += 1;
25917                next_offset += envelope_size;
25918            }
25919
25920            let next_out_of_line = decoder.next_out_of_line();
25921            let handles_before = decoder.remaining_handles();
25922            if let Some((inlined, num_bytes, num_handles)) =
25923                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25924            {
25925                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25926                if inlined != (member_inline_size <= 4) {
25927                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25928                }
25929                let inner_offset;
25930                let mut inner_depth = depth.clone();
25931                if inlined {
25932                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25933                    inner_offset = next_offset;
25934                } else {
25935                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25936                    inner_depth.increment()?;
25937                }
25938                let val_ref = self.target_path.get_or_insert_with(|| {
25939                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
25940                });
25941                fidl::decode!(
25942                    fidl::encoding::BoundedString<1024>,
25943                    D,
25944                    val_ref,
25945                    decoder,
25946                    inner_offset,
25947                    inner_depth
25948                )?;
25949                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25950                {
25951                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25952                }
25953                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25954                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25955                }
25956            }
25957
25958            next_offset += envelope_size;
25959            _next_ordinal_to_read += 1;
25960            if next_offset >= end_offset {
25961                return Ok(());
25962            }
25963
25964            // Decode unknown envelopes for gaps in ordinals.
25965            while _next_ordinal_to_read < 3 {
25966                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25967                _next_ordinal_to_read += 1;
25968                next_offset += envelope_size;
25969            }
25970
25971            let next_out_of_line = decoder.next_out_of_line();
25972            let handles_before = decoder.remaining_handles();
25973            if let Some((inlined, num_bytes, num_handles)) =
25974                fidl::encoding::decode_envelope_header(decoder, next_offset)?
25975            {
25976                let member_inline_size =
25977                    <Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25978                if inlined != (member_inline_size <= 4) {
25979                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
25980                }
25981                let inner_offset;
25982                let mut inner_depth = depth.clone();
25983                if inlined {
25984                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25985                    inner_offset = next_offset;
25986                } else {
25987                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25988                    inner_depth.increment()?;
25989                }
25990                let val_ref =
25991                    self.availability.get_or_insert_with(|| fidl::new_empty!(Availability, D));
25992                fidl::decode!(Availability, D, val_ref, decoder, inner_offset, inner_depth)?;
25993                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25994                {
25995                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
25996                }
25997                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25998                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25999                }
26000            }
26001
26002            next_offset += envelope_size;
26003
26004            // Decode the remaining unknown envelopes.
26005            while next_offset < end_offset {
26006                _next_ordinal_to_read += 1;
26007                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26008                next_offset += envelope_size;
26009            }
26010
26011            Ok(())
26012        }
26013    }
26014
26015    impl fidl::encoding::ValueTypeMarker for Capability {
26016        type Borrowed<'a> = &'a Self;
26017        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26018            value
26019        }
26020    }
26021
26022    unsafe impl fidl::encoding::TypeMarker for Capability {
26023        type Owned = Self;
26024
26025        #[inline(always)]
26026        fn inline_align(_context: fidl::encoding::Context) -> usize {
26027            8
26028        }
26029
26030        #[inline(always)]
26031        fn inline_size(_context: fidl::encoding::Context) -> usize {
26032            16
26033        }
26034    }
26035
26036    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
26037        for &Capability
26038    {
26039        #[inline]
26040        unsafe fn encode(
26041            self,
26042            encoder: &mut fidl::encoding::Encoder<'_, D>,
26043            offset: usize,
26044            _depth: fidl::encoding::Depth,
26045        ) -> fidl::Result<()> {
26046            encoder.debug_check_bounds::<Capability>(offset);
26047            encoder.write_num::<u64>(self.ordinal(), offset);
26048            match self {
26049                Capability::Service(ref val) => fidl::encoding::encode_in_envelope::<Service, D>(
26050                    <Service as fidl::encoding::ValueTypeMarker>::borrow(val),
26051                    encoder,
26052                    offset + 8,
26053                    _depth,
26054                ),
26055                Capability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<Protocol, D>(
26056                    <Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
26057                    encoder,
26058                    offset + 8,
26059                    _depth,
26060                ),
26061                Capability::Directory(ref val) => {
26062                    fidl::encoding::encode_in_envelope::<Directory, D>(
26063                        <Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
26064                        encoder,
26065                        offset + 8,
26066                        _depth,
26067                    )
26068                }
26069                Capability::Storage(ref val) => fidl::encoding::encode_in_envelope::<Storage, D>(
26070                    <Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
26071                    encoder,
26072                    offset + 8,
26073                    _depth,
26074                ),
26075                Capability::Runner(ref val) => fidl::encoding::encode_in_envelope::<Runner, D>(
26076                    <Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
26077                    encoder,
26078                    offset + 8,
26079                    _depth,
26080                ),
26081                Capability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<Resolver, D>(
26082                    <Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
26083                    encoder,
26084                    offset + 8,
26085                    _depth,
26086                ),
26087                Capability::EventStream(ref val) => {
26088                    fidl::encoding::encode_in_envelope::<EventStream, D>(
26089                        <EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
26090                        encoder,
26091                        offset + 8,
26092                        _depth,
26093                    )
26094                }
26095                Capability::Dictionary(ref val) => {
26096                    fidl::encoding::encode_in_envelope::<Dictionary, D>(
26097                        <Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
26098                        encoder,
26099                        offset + 8,
26100                        _depth,
26101                    )
26102                }
26103                Capability::Config(ref val) => {
26104                    fidl::encoding::encode_in_envelope::<Configuration, D>(
26105                        <Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
26106                        encoder,
26107                        offset + 8,
26108                        _depth,
26109                    )
26110                }
26111                Capability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26112            }
26113        }
26114    }
26115
26116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
26117        #[inline(always)]
26118        fn new_empty() -> Self {
26119            Self::__SourceBreaking { unknown_ordinal: 0 }
26120        }
26121
26122        #[inline]
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            #[allow(unused_variables)]
26131            let next_out_of_line = decoder.next_out_of_line();
26132            let handles_before = decoder.remaining_handles();
26133            let (ordinal, inlined, num_bytes, num_handles) =
26134                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26135
26136            let member_inline_size = match ordinal {
26137                1 => <Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26138                2 => <Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26139                3 => <Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26140                4 => <Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26141                5 => <Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26142                6 => <Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26143                8 => <EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26144                9 => <Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26145                10 => <Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26146                0 => return Err(fidl::Error::UnknownUnionTag),
26147                _ => num_bytes as usize,
26148            };
26149
26150            if inlined != (member_inline_size <= 4) {
26151                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26152            }
26153            let _inner_offset;
26154            if inlined {
26155                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26156                _inner_offset = offset + 8;
26157            } else {
26158                depth.increment()?;
26159                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26160            }
26161            match ordinal {
26162                1 => {
26163                    #[allow(irrefutable_let_patterns)]
26164                    if let Capability::Service(_) = self {
26165                        // Do nothing, read the value into the object
26166                    } else {
26167                        // Initialize `self` to the right variant
26168                        *self = Capability::Service(fidl::new_empty!(Service, D));
26169                    }
26170                    #[allow(irrefutable_let_patterns)]
26171                    if let Capability::Service(ref mut val) = self {
26172                        fidl::decode!(Service, D, val, decoder, _inner_offset, depth)?;
26173                    } else {
26174                        unreachable!()
26175                    }
26176                }
26177                2 => {
26178                    #[allow(irrefutable_let_patterns)]
26179                    if let Capability::Protocol(_) = self {
26180                        // Do nothing, read the value into the object
26181                    } else {
26182                        // Initialize `self` to the right variant
26183                        *self = Capability::Protocol(fidl::new_empty!(Protocol, D));
26184                    }
26185                    #[allow(irrefutable_let_patterns)]
26186                    if let Capability::Protocol(ref mut val) = self {
26187                        fidl::decode!(Protocol, D, val, decoder, _inner_offset, depth)?;
26188                    } else {
26189                        unreachable!()
26190                    }
26191                }
26192                3 => {
26193                    #[allow(irrefutable_let_patterns)]
26194                    if let Capability::Directory(_) = self {
26195                        // Do nothing, read the value into the object
26196                    } else {
26197                        // Initialize `self` to the right variant
26198                        *self = Capability::Directory(fidl::new_empty!(Directory, D));
26199                    }
26200                    #[allow(irrefutable_let_patterns)]
26201                    if let Capability::Directory(ref mut val) = self {
26202                        fidl::decode!(Directory, D, val, decoder, _inner_offset, depth)?;
26203                    } else {
26204                        unreachable!()
26205                    }
26206                }
26207                4 => {
26208                    #[allow(irrefutable_let_patterns)]
26209                    if let Capability::Storage(_) = self {
26210                        // Do nothing, read the value into the object
26211                    } else {
26212                        // Initialize `self` to the right variant
26213                        *self = Capability::Storage(fidl::new_empty!(Storage, D));
26214                    }
26215                    #[allow(irrefutable_let_patterns)]
26216                    if let Capability::Storage(ref mut val) = self {
26217                        fidl::decode!(Storage, D, val, decoder, _inner_offset, depth)?;
26218                    } else {
26219                        unreachable!()
26220                    }
26221                }
26222                5 => {
26223                    #[allow(irrefutable_let_patterns)]
26224                    if let Capability::Runner(_) = self {
26225                        // Do nothing, read the value into the object
26226                    } else {
26227                        // Initialize `self` to the right variant
26228                        *self = Capability::Runner(fidl::new_empty!(Runner, D));
26229                    }
26230                    #[allow(irrefutable_let_patterns)]
26231                    if let Capability::Runner(ref mut val) = self {
26232                        fidl::decode!(Runner, D, val, decoder, _inner_offset, depth)?;
26233                    } else {
26234                        unreachable!()
26235                    }
26236                }
26237                6 => {
26238                    #[allow(irrefutable_let_patterns)]
26239                    if let Capability::Resolver(_) = self {
26240                        // Do nothing, read the value into the object
26241                    } else {
26242                        // Initialize `self` to the right variant
26243                        *self = Capability::Resolver(fidl::new_empty!(Resolver, D));
26244                    }
26245                    #[allow(irrefutable_let_patterns)]
26246                    if let Capability::Resolver(ref mut val) = self {
26247                        fidl::decode!(Resolver, D, val, decoder, _inner_offset, depth)?;
26248                    } else {
26249                        unreachable!()
26250                    }
26251                }
26252                8 => {
26253                    #[allow(irrefutable_let_patterns)]
26254                    if let Capability::EventStream(_) = self {
26255                        // Do nothing, read the value into the object
26256                    } else {
26257                        // Initialize `self` to the right variant
26258                        *self = Capability::EventStream(fidl::new_empty!(EventStream, D));
26259                    }
26260                    #[allow(irrefutable_let_patterns)]
26261                    if let Capability::EventStream(ref mut val) = self {
26262                        fidl::decode!(EventStream, D, val, decoder, _inner_offset, depth)?;
26263                    } else {
26264                        unreachable!()
26265                    }
26266                }
26267                9 => {
26268                    #[allow(irrefutable_let_patterns)]
26269                    if let Capability::Dictionary(_) = self {
26270                        // Do nothing, read the value into the object
26271                    } else {
26272                        // Initialize `self` to the right variant
26273                        *self = Capability::Dictionary(fidl::new_empty!(Dictionary, D));
26274                    }
26275                    #[allow(irrefutable_let_patterns)]
26276                    if let Capability::Dictionary(ref mut val) = self {
26277                        fidl::decode!(Dictionary, D, val, decoder, _inner_offset, depth)?;
26278                    } else {
26279                        unreachable!()
26280                    }
26281                }
26282                10 => {
26283                    #[allow(irrefutable_let_patterns)]
26284                    if let Capability::Config(_) = self {
26285                        // Do nothing, read the value into the object
26286                    } else {
26287                        // Initialize `self` to the right variant
26288                        *self = Capability::Config(fidl::new_empty!(Configuration, D));
26289                    }
26290                    #[allow(irrefutable_let_patterns)]
26291                    if let Capability::Config(ref mut val) = self {
26292                        fidl::decode!(Configuration, D, val, decoder, _inner_offset, depth)?;
26293                    } else {
26294                        unreachable!()
26295                    }
26296                }
26297                #[allow(deprecated)]
26298                ordinal => {
26299                    for _ in 0..num_handles {
26300                        decoder.drop_next_handle()?;
26301                    }
26302                    *self = Capability::__SourceBreaking { unknown_ordinal: ordinal };
26303                }
26304            }
26305            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26306                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26307            }
26308            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26309                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26310            }
26311            Ok(())
26312        }
26313    }
26314
26315    impl fidl::encoding::ValueTypeMarker for ConfigChecksum {
26316        type Borrowed<'a> = &'a Self;
26317        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26318            value
26319        }
26320    }
26321
26322    unsafe impl fidl::encoding::TypeMarker for ConfigChecksum {
26323        type Owned = Self;
26324
26325        #[inline(always)]
26326        fn inline_align(_context: fidl::encoding::Context) -> usize {
26327            8
26328        }
26329
26330        #[inline(always)]
26331        fn inline_size(_context: fidl::encoding::Context) -> usize {
26332            16
26333        }
26334    }
26335
26336    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigChecksum, D>
26337        for &ConfigChecksum
26338    {
26339        #[inline]
26340        unsafe fn encode(
26341            self,
26342            encoder: &mut fidl::encoding::Encoder<'_, D>,
26343            offset: usize,
26344            _depth: fidl::encoding::Depth,
26345        ) -> fidl::Result<()> {
26346            encoder.debug_check_bounds::<ConfigChecksum>(offset);
26347            encoder.write_num::<u64>(self.ordinal(), offset);
26348            match self {
26349                ConfigChecksum::Sha256(ref val) => fidl::encoding::encode_in_envelope::<
26350                    fidl::encoding::Array<u8, 32>,
26351                    D,
26352                >(
26353                    <fidl::encoding::Array<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(val),
26354                    encoder,
26355                    offset + 8,
26356                    _depth,
26357                ),
26358                ConfigChecksum::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26359            }
26360        }
26361    }
26362
26363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigChecksum {
26364        #[inline(always)]
26365        fn new_empty() -> Self {
26366            Self::__SourceBreaking { unknown_ordinal: 0 }
26367        }
26368
26369        #[inline]
26370        unsafe fn decode(
26371            &mut self,
26372            decoder: &mut fidl::encoding::Decoder<'_, D>,
26373            offset: usize,
26374            mut depth: fidl::encoding::Depth,
26375        ) -> fidl::Result<()> {
26376            decoder.debug_check_bounds::<Self>(offset);
26377            #[allow(unused_variables)]
26378            let next_out_of_line = decoder.next_out_of_line();
26379            let handles_before = decoder.remaining_handles();
26380            let (ordinal, inlined, num_bytes, num_handles) =
26381                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26382
26383            let member_inline_size = match ordinal {
26384                1 => <fidl::encoding::Array<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
26385                    decoder.context,
26386                ),
26387                0 => return Err(fidl::Error::UnknownUnionTag),
26388                _ => num_bytes as usize,
26389            };
26390
26391            if inlined != (member_inline_size <= 4) {
26392                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26393            }
26394            let _inner_offset;
26395            if inlined {
26396                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26397                _inner_offset = offset + 8;
26398            } else {
26399                depth.increment()?;
26400                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26401            }
26402            match ordinal {
26403                1 => {
26404                    #[allow(irrefutable_let_patterns)]
26405                    if let ConfigChecksum::Sha256(_) = self {
26406                        // Do nothing, read the value into the object
26407                    } else {
26408                        // Initialize `self` to the right variant
26409                        *self = ConfigChecksum::Sha256(
26410                            fidl::new_empty!(fidl::encoding::Array<u8, 32>, D),
26411                        );
26412                    }
26413                    #[allow(irrefutable_let_patterns)]
26414                    if let ConfigChecksum::Sha256(ref mut val) = self {
26415                        fidl::decode!(fidl::encoding::Array<u8, 32>, D, val, decoder, _inner_offset, depth)?;
26416                    } else {
26417                        unreachable!()
26418                    }
26419                }
26420                #[allow(deprecated)]
26421                ordinal => {
26422                    for _ in 0..num_handles {
26423                        decoder.drop_next_handle()?;
26424                    }
26425                    *self = ConfigChecksum::__SourceBreaking { unknown_ordinal: ordinal };
26426                }
26427            }
26428            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26429                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26430            }
26431            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26432                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26433            }
26434            Ok(())
26435        }
26436    }
26437
26438    impl fidl::encoding::ValueTypeMarker for ConfigSingleValue {
26439        type Borrowed<'a> = &'a Self;
26440        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26441            value
26442        }
26443    }
26444
26445    unsafe impl fidl::encoding::TypeMarker for ConfigSingleValue {
26446        type Owned = Self;
26447
26448        #[inline(always)]
26449        fn inline_align(_context: fidl::encoding::Context) -> usize {
26450            8
26451        }
26452
26453        #[inline(always)]
26454        fn inline_size(_context: fidl::encoding::Context) -> usize {
26455            16
26456        }
26457    }
26458
26459    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigSingleValue, D>
26460        for &ConfigSingleValue
26461    {
26462        #[inline]
26463        unsafe fn encode(
26464            self,
26465            encoder: &mut fidl::encoding::Encoder<'_, D>,
26466            offset: usize,
26467            _depth: fidl::encoding::Depth,
26468        ) -> fidl::Result<()> {
26469            encoder.debug_check_bounds::<ConfigSingleValue>(offset);
26470            encoder.write_num::<u64>(self.ordinal(), offset);
26471            match self {
26472                ConfigSingleValue::Bool(ref val) => fidl::encoding::encode_in_envelope::<bool, D>(
26473                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
26474                    encoder,
26475                    offset + 8,
26476                    _depth,
26477                ),
26478                ConfigSingleValue::Uint8(ref val) => fidl::encoding::encode_in_envelope::<u8, D>(
26479                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26480                    encoder,
26481                    offset + 8,
26482                    _depth,
26483                ),
26484                ConfigSingleValue::Uint16(ref val) => fidl::encoding::encode_in_envelope::<u16, D>(
26485                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26486                    encoder,
26487                    offset + 8,
26488                    _depth,
26489                ),
26490                ConfigSingleValue::Uint32(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
26491                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26492                    encoder,
26493                    offset + 8,
26494                    _depth,
26495                ),
26496                ConfigSingleValue::Uint64(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
26497                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26498                    encoder,
26499                    offset + 8,
26500                    _depth,
26501                ),
26502                ConfigSingleValue::Int8(ref val) => fidl::encoding::encode_in_envelope::<i8, D>(
26503                    <i8 as fidl::encoding::ValueTypeMarker>::borrow(val),
26504                    encoder,
26505                    offset + 8,
26506                    _depth,
26507                ),
26508                ConfigSingleValue::Int16(ref val) => fidl::encoding::encode_in_envelope::<i16, D>(
26509                    <i16 as fidl::encoding::ValueTypeMarker>::borrow(val),
26510                    encoder,
26511                    offset + 8,
26512                    _depth,
26513                ),
26514                ConfigSingleValue::Int32(ref val) => fidl::encoding::encode_in_envelope::<i32, D>(
26515                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
26516                    encoder,
26517                    offset + 8,
26518                    _depth,
26519                ),
26520                ConfigSingleValue::Int64(ref val) => fidl::encoding::encode_in_envelope::<i64, D>(
26521                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
26522                    encoder,
26523                    offset + 8,
26524                    _depth,
26525                ),
26526                ConfigSingleValue::String(ref val) => fidl::encoding::encode_in_envelope::<
26527                    fidl::encoding::UnboundedString,
26528                    D,
26529                >(
26530                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
26531                        val,
26532                    ),
26533                    encoder,
26534                    offset + 8,
26535                    _depth,
26536                ),
26537                ConfigSingleValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26538            }
26539        }
26540    }
26541
26542    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigSingleValue {
26543        #[inline(always)]
26544        fn new_empty() -> Self {
26545            Self::__SourceBreaking { unknown_ordinal: 0 }
26546        }
26547
26548        #[inline]
26549        unsafe fn decode(
26550            &mut self,
26551            decoder: &mut fidl::encoding::Decoder<'_, D>,
26552            offset: usize,
26553            mut depth: fidl::encoding::Depth,
26554        ) -> fidl::Result<()> {
26555            decoder.debug_check_bounds::<Self>(offset);
26556            #[allow(unused_variables)]
26557            let next_out_of_line = decoder.next_out_of_line();
26558            let handles_before = decoder.remaining_handles();
26559            let (ordinal, inlined, num_bytes, num_handles) =
26560                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26561
26562            let member_inline_size = match ordinal {
26563                1 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26564                2 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26565                3 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26566                4 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26567                5 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26568                6 => <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26569                7 => <i16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26570                8 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26571                9 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
26572                10 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
26573                    decoder.context,
26574                ),
26575                0 => return Err(fidl::Error::UnknownUnionTag),
26576                _ => num_bytes as usize,
26577            };
26578
26579            if inlined != (member_inline_size <= 4) {
26580                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26581            }
26582            let _inner_offset;
26583            if inlined {
26584                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26585                _inner_offset = offset + 8;
26586            } else {
26587                depth.increment()?;
26588                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26589            }
26590            match ordinal {
26591                1 => {
26592                    #[allow(irrefutable_let_patterns)]
26593                    if let ConfigSingleValue::Bool(_) = self {
26594                        // Do nothing, read the value into the object
26595                    } else {
26596                        // Initialize `self` to the right variant
26597                        *self = ConfigSingleValue::Bool(fidl::new_empty!(bool, D));
26598                    }
26599                    #[allow(irrefutable_let_patterns)]
26600                    if let ConfigSingleValue::Bool(ref mut val) = self {
26601                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
26602                    } else {
26603                        unreachable!()
26604                    }
26605                }
26606                2 => {
26607                    #[allow(irrefutable_let_patterns)]
26608                    if let ConfigSingleValue::Uint8(_) = self {
26609                        // Do nothing, read the value into the object
26610                    } else {
26611                        // Initialize `self` to the right variant
26612                        *self = ConfigSingleValue::Uint8(fidl::new_empty!(u8, D));
26613                    }
26614                    #[allow(irrefutable_let_patterns)]
26615                    if let ConfigSingleValue::Uint8(ref mut val) = self {
26616                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
26617                    } else {
26618                        unreachable!()
26619                    }
26620                }
26621                3 => {
26622                    #[allow(irrefutable_let_patterns)]
26623                    if let ConfigSingleValue::Uint16(_) = self {
26624                        // Do nothing, read the value into the object
26625                    } else {
26626                        // Initialize `self` to the right variant
26627                        *self = ConfigSingleValue::Uint16(fidl::new_empty!(u16, D));
26628                    }
26629                    #[allow(irrefutable_let_patterns)]
26630                    if let ConfigSingleValue::Uint16(ref mut val) = self {
26631                        fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
26632                    } else {
26633                        unreachable!()
26634                    }
26635                }
26636                4 => {
26637                    #[allow(irrefutable_let_patterns)]
26638                    if let ConfigSingleValue::Uint32(_) = self {
26639                        // Do nothing, read the value into the object
26640                    } else {
26641                        // Initialize `self` to the right variant
26642                        *self = ConfigSingleValue::Uint32(fidl::new_empty!(u32, D));
26643                    }
26644                    #[allow(irrefutable_let_patterns)]
26645                    if let ConfigSingleValue::Uint32(ref mut val) = self {
26646                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
26647                    } else {
26648                        unreachable!()
26649                    }
26650                }
26651                5 => {
26652                    #[allow(irrefutable_let_patterns)]
26653                    if let ConfigSingleValue::Uint64(_) = self {
26654                        // Do nothing, read the value into the object
26655                    } else {
26656                        // Initialize `self` to the right variant
26657                        *self = ConfigSingleValue::Uint64(fidl::new_empty!(u64, D));
26658                    }
26659                    #[allow(irrefutable_let_patterns)]
26660                    if let ConfigSingleValue::Uint64(ref mut val) = self {
26661                        fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
26662                    } else {
26663                        unreachable!()
26664                    }
26665                }
26666                6 => {
26667                    #[allow(irrefutable_let_patterns)]
26668                    if let ConfigSingleValue::Int8(_) = self {
26669                        // Do nothing, read the value into the object
26670                    } else {
26671                        // Initialize `self` to the right variant
26672                        *self = ConfigSingleValue::Int8(fidl::new_empty!(i8, D));
26673                    }
26674                    #[allow(irrefutable_let_patterns)]
26675                    if let ConfigSingleValue::Int8(ref mut val) = self {
26676                        fidl::decode!(i8, D, val, decoder, _inner_offset, depth)?;
26677                    } else {
26678                        unreachable!()
26679                    }
26680                }
26681                7 => {
26682                    #[allow(irrefutable_let_patterns)]
26683                    if let ConfigSingleValue::Int16(_) = self {
26684                        // Do nothing, read the value into the object
26685                    } else {
26686                        // Initialize `self` to the right variant
26687                        *self = ConfigSingleValue::Int16(fidl::new_empty!(i16, D));
26688                    }
26689                    #[allow(irrefutable_let_patterns)]
26690                    if let ConfigSingleValue::Int16(ref mut val) = self {
26691                        fidl::decode!(i16, D, val, decoder, _inner_offset, depth)?;
26692                    } else {
26693                        unreachable!()
26694                    }
26695                }
26696                8 => {
26697                    #[allow(irrefutable_let_patterns)]
26698                    if let ConfigSingleValue::Int32(_) = self {
26699                        // Do nothing, read the value into the object
26700                    } else {
26701                        // Initialize `self` to the right variant
26702                        *self = ConfigSingleValue::Int32(fidl::new_empty!(i32, D));
26703                    }
26704                    #[allow(irrefutable_let_patterns)]
26705                    if let ConfigSingleValue::Int32(ref mut val) = self {
26706                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
26707                    } else {
26708                        unreachable!()
26709                    }
26710                }
26711                9 => {
26712                    #[allow(irrefutable_let_patterns)]
26713                    if let ConfigSingleValue::Int64(_) = self {
26714                        // Do nothing, read the value into the object
26715                    } else {
26716                        // Initialize `self` to the right variant
26717                        *self = ConfigSingleValue::Int64(fidl::new_empty!(i64, D));
26718                    }
26719                    #[allow(irrefutable_let_patterns)]
26720                    if let ConfigSingleValue::Int64(ref mut val) = self {
26721                        fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
26722                    } else {
26723                        unreachable!()
26724                    }
26725                }
26726                10 => {
26727                    #[allow(irrefutable_let_patterns)]
26728                    if let ConfigSingleValue::String(_) = self {
26729                        // Do nothing, read the value into the object
26730                    } else {
26731                        // Initialize `self` to the right variant
26732                        *self = ConfigSingleValue::String(fidl::new_empty!(
26733                            fidl::encoding::UnboundedString,
26734                            D
26735                        ));
26736                    }
26737                    #[allow(irrefutable_let_patterns)]
26738                    if let ConfigSingleValue::String(ref mut val) = self {
26739                        fidl::decode!(
26740                            fidl::encoding::UnboundedString,
26741                            D,
26742                            val,
26743                            decoder,
26744                            _inner_offset,
26745                            depth
26746                        )?;
26747                    } else {
26748                        unreachable!()
26749                    }
26750                }
26751                #[allow(deprecated)]
26752                ordinal => {
26753                    for _ in 0..num_handles {
26754                        decoder.drop_next_handle()?;
26755                    }
26756                    *self = ConfigSingleValue::__SourceBreaking { unknown_ordinal: ordinal };
26757                }
26758            }
26759            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26760                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26761            }
26762            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26763                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26764            }
26765            Ok(())
26766        }
26767    }
26768
26769    impl fidl::encoding::ValueTypeMarker for ConfigValue {
26770        type Borrowed<'a> = &'a Self;
26771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26772            value
26773        }
26774    }
26775
26776    unsafe impl fidl::encoding::TypeMarker for ConfigValue {
26777        type Owned = Self;
26778
26779        #[inline(always)]
26780        fn inline_align(_context: fidl::encoding::Context) -> usize {
26781            8
26782        }
26783
26784        #[inline(always)]
26785        fn inline_size(_context: fidl::encoding::Context) -> usize {
26786            16
26787        }
26788    }
26789
26790    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValue, D>
26791        for &ConfigValue
26792    {
26793        #[inline]
26794        unsafe fn encode(
26795            self,
26796            encoder: &mut fidl::encoding::Encoder<'_, D>,
26797            offset: usize,
26798            _depth: fidl::encoding::Depth,
26799        ) -> fidl::Result<()> {
26800            encoder.debug_check_bounds::<ConfigValue>(offset);
26801            encoder.write_num::<u64>(self.ordinal(), offset);
26802            match self {
26803                ConfigValue::Single(ref val) => {
26804                    fidl::encoding::encode_in_envelope::<ConfigSingleValue, D>(
26805                        <ConfigSingleValue as fidl::encoding::ValueTypeMarker>::borrow(val),
26806                        encoder,
26807                        offset + 8,
26808                        _depth,
26809                    )
26810                }
26811                ConfigValue::Vector(ref val) => {
26812                    fidl::encoding::encode_in_envelope::<ConfigVectorValue, D>(
26813                        <ConfigVectorValue as fidl::encoding::ValueTypeMarker>::borrow(val),
26814                        encoder,
26815                        offset + 8,
26816                        _depth,
26817                    )
26818                }
26819                ConfigValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26820            }
26821        }
26822    }
26823
26824    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValue {
26825        #[inline(always)]
26826        fn new_empty() -> Self {
26827            Self::__SourceBreaking { unknown_ordinal: 0 }
26828        }
26829
26830        #[inline]
26831        unsafe fn decode(
26832            &mut self,
26833            decoder: &mut fidl::encoding::Decoder<'_, D>,
26834            offset: usize,
26835            mut depth: fidl::encoding::Depth,
26836        ) -> fidl::Result<()> {
26837            decoder.debug_check_bounds::<Self>(offset);
26838            #[allow(unused_variables)]
26839            let next_out_of_line = decoder.next_out_of_line();
26840            let handles_before = decoder.remaining_handles();
26841            let (ordinal, inlined, num_bytes, num_handles) =
26842                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26843
26844            let member_inline_size = match ordinal {
26845                1 => {
26846                    <ConfigSingleValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
26847                }
26848                2 => {
26849                    <ConfigVectorValue as fidl::encoding::TypeMarker>::inline_size(decoder.context)
26850                }
26851                0 => return Err(fidl::Error::UnknownUnionTag),
26852                _ => num_bytes as usize,
26853            };
26854
26855            if inlined != (member_inline_size <= 4) {
26856                return Err(fidl::Error::InvalidInlineBitInEnvelope);
26857            }
26858            let _inner_offset;
26859            if inlined {
26860                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
26861                _inner_offset = offset + 8;
26862            } else {
26863                depth.increment()?;
26864                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26865            }
26866            match ordinal {
26867                1 => {
26868                    #[allow(irrefutable_let_patterns)]
26869                    if let ConfigValue::Single(_) = self {
26870                        // Do nothing, read the value into the object
26871                    } else {
26872                        // Initialize `self` to the right variant
26873                        *self = ConfigValue::Single(fidl::new_empty!(ConfigSingleValue, D));
26874                    }
26875                    #[allow(irrefutable_let_patterns)]
26876                    if let ConfigValue::Single(ref mut val) = self {
26877                        fidl::decode!(ConfigSingleValue, D, val, decoder, _inner_offset, depth)?;
26878                    } else {
26879                        unreachable!()
26880                    }
26881                }
26882                2 => {
26883                    #[allow(irrefutable_let_patterns)]
26884                    if let ConfigValue::Vector(_) = self {
26885                        // Do nothing, read the value into the object
26886                    } else {
26887                        // Initialize `self` to the right variant
26888                        *self = ConfigValue::Vector(fidl::new_empty!(ConfigVectorValue, D));
26889                    }
26890                    #[allow(irrefutable_let_patterns)]
26891                    if let ConfigValue::Vector(ref mut val) = self {
26892                        fidl::decode!(ConfigVectorValue, D, val, decoder, _inner_offset, depth)?;
26893                    } else {
26894                        unreachable!()
26895                    }
26896                }
26897                #[allow(deprecated)]
26898                ordinal => {
26899                    for _ in 0..num_handles {
26900                        decoder.drop_next_handle()?;
26901                    }
26902                    *self = ConfigValue::__SourceBreaking { unknown_ordinal: ordinal };
26903                }
26904            }
26905            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
26906                return Err(fidl::Error::InvalidNumBytesInEnvelope);
26907            }
26908            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26909                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26910            }
26911            Ok(())
26912        }
26913    }
26914
26915    impl fidl::encoding::ValueTypeMarker for ConfigValueSource {
26916        type Borrowed<'a> = &'a Self;
26917        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26918            value
26919        }
26920    }
26921
26922    unsafe impl fidl::encoding::TypeMarker for ConfigValueSource {
26923        type Owned = Self;
26924
26925        #[inline(always)]
26926        fn inline_align(_context: fidl::encoding::Context) -> usize {
26927            8
26928        }
26929
26930        #[inline(always)]
26931        fn inline_size(_context: fidl::encoding::Context) -> usize {
26932            16
26933        }
26934    }
26935
26936    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigValueSource, D>
26937        for &ConfigValueSource
26938    {
26939        #[inline]
26940        unsafe fn encode(
26941            self,
26942            encoder: &mut fidl::encoding::Encoder<'_, D>,
26943            offset: usize,
26944            _depth: fidl::encoding::Depth,
26945        ) -> fidl::Result<()> {
26946            encoder.debug_check_bounds::<ConfigValueSource>(offset);
26947            encoder.write_num::<u64>(self.ordinal(), offset);
26948            match self {
26949                ConfigValueSource::PackagePath(ref val) => fidl::encoding::encode_in_envelope::<
26950                    fidl::encoding::UnboundedString,
26951                    D,
26952                >(
26953                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
26954                        val,
26955                    ),
26956                    encoder,
26957                    offset + 8,
26958                    _depth,
26959                ),
26960                ConfigValueSource::Capabilities(ref val) => {
26961                    fidl::encoding::encode_in_envelope::<ConfigSourceCapabilities, D>(
26962                        <ConfigSourceCapabilities as fidl::encoding::ValueTypeMarker>::borrow(val),
26963                        encoder,
26964                        offset + 8,
26965                        _depth,
26966                    )
26967                }
26968                ConfigValueSource::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26969            }
26970        }
26971    }
26972
26973    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigValueSource {
26974        #[inline(always)]
26975        fn new_empty() -> Self {
26976            Self::__SourceBreaking { unknown_ordinal: 0 }
26977        }
26978
26979        #[inline]
26980        unsafe fn decode(
26981            &mut self,
26982            decoder: &mut fidl::encoding::Decoder<'_, D>,
26983            offset: usize,
26984            mut depth: fidl::encoding::Depth,
26985        ) -> fidl::Result<()> {
26986            decoder.debug_check_bounds::<Self>(offset);
26987            #[allow(unused_variables)]
26988            let next_out_of_line = decoder.next_out_of_line();
26989            let handles_before = decoder.remaining_handles();
26990            let (ordinal, inlined, num_bytes, num_handles) =
26991                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
26992
26993            let member_inline_size = match ordinal {
26994                1 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
26995                    decoder.context,
26996                ),
26997                2 => <ConfigSourceCapabilities as fidl::encoding::TypeMarker>::inline_size(
26998                    decoder.context,
26999                ),
27000                0 => return Err(fidl::Error::UnknownUnionTag),
27001                _ => num_bytes as usize,
27002            };
27003
27004            if inlined != (member_inline_size <= 4) {
27005                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27006            }
27007            let _inner_offset;
27008            if inlined {
27009                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27010                _inner_offset = offset + 8;
27011            } else {
27012                depth.increment()?;
27013                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27014            }
27015            match ordinal {
27016                1 => {
27017                    #[allow(irrefutable_let_patterns)]
27018                    if let ConfigValueSource::PackagePath(_) = self {
27019                        // Do nothing, read the value into the object
27020                    } else {
27021                        // Initialize `self` to the right variant
27022                        *self = ConfigValueSource::PackagePath(fidl::new_empty!(
27023                            fidl::encoding::UnboundedString,
27024                            D
27025                        ));
27026                    }
27027                    #[allow(irrefutable_let_patterns)]
27028                    if let ConfigValueSource::PackagePath(ref mut val) = self {
27029                        fidl::decode!(
27030                            fidl::encoding::UnboundedString,
27031                            D,
27032                            val,
27033                            decoder,
27034                            _inner_offset,
27035                            depth
27036                        )?;
27037                    } else {
27038                        unreachable!()
27039                    }
27040                }
27041                2 => {
27042                    #[allow(irrefutable_let_patterns)]
27043                    if let ConfigValueSource::Capabilities(_) = self {
27044                        // Do nothing, read the value into the object
27045                    } else {
27046                        // Initialize `self` to the right variant
27047                        *self = ConfigValueSource::Capabilities(fidl::new_empty!(
27048                            ConfigSourceCapabilities,
27049                            D
27050                        ));
27051                    }
27052                    #[allow(irrefutable_let_patterns)]
27053                    if let ConfigValueSource::Capabilities(ref mut val) = self {
27054                        fidl::decode!(
27055                            ConfigSourceCapabilities,
27056                            D,
27057                            val,
27058                            decoder,
27059                            _inner_offset,
27060                            depth
27061                        )?;
27062                    } else {
27063                        unreachable!()
27064                    }
27065                }
27066                #[allow(deprecated)]
27067                ordinal => {
27068                    for _ in 0..num_handles {
27069                        decoder.drop_next_handle()?;
27070                    }
27071                    *self = ConfigValueSource::__SourceBreaking { unknown_ordinal: ordinal };
27072                }
27073            }
27074            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27075                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27076            }
27077            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27078                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27079            }
27080            Ok(())
27081        }
27082    }
27083
27084    impl fidl::encoding::ValueTypeMarker for ConfigVectorValue {
27085        type Borrowed<'a> = &'a Self;
27086        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27087            value
27088        }
27089    }
27090
27091    unsafe impl fidl::encoding::TypeMarker for ConfigVectorValue {
27092        type Owned = Self;
27093
27094        #[inline(always)]
27095        fn inline_align(_context: fidl::encoding::Context) -> usize {
27096            8
27097        }
27098
27099        #[inline(always)]
27100        fn inline_size(_context: fidl::encoding::Context) -> usize {
27101            16
27102        }
27103    }
27104
27105    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConfigVectorValue, D>
27106        for &ConfigVectorValue
27107    {
27108        #[inline]
27109        unsafe fn encode(
27110            self,
27111            encoder: &mut fidl::encoding::Encoder<'_, D>,
27112            offset: usize,
27113            _depth: fidl::encoding::Depth,
27114        ) -> fidl::Result<()> {
27115            encoder.debug_check_bounds::<ConfigVectorValue>(offset);
27116            encoder.write_num::<u64>(self.ordinal(), offset);
27117            match self {
27118            ConfigVectorValue::BoolVector(ref val) => {
27119                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<bool>, D>(
27120                    <fidl::encoding::UnboundedVector<bool> as fidl::encoding::ValueTypeMarker>::borrow(val),
27121                    encoder, offset + 8, _depth
27122                )
27123            }
27124            ConfigVectorValue::Uint8Vector(ref val) => {
27125                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
27126                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27127                    encoder, offset + 8, _depth
27128                )
27129            }
27130            ConfigVectorValue::Uint16Vector(ref val) => {
27131                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u16>, D>(
27132                    <fidl::encoding::UnboundedVector<u16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27133                    encoder, offset + 8, _depth
27134                )
27135            }
27136            ConfigVectorValue::Uint32Vector(ref val) => {
27137                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u32>, D>(
27138                    <fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27139                    encoder, offset + 8, _depth
27140                )
27141            }
27142            ConfigVectorValue::Uint64Vector(ref val) => {
27143                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u64>, D>(
27144                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27145                    encoder, offset + 8, _depth
27146                )
27147            }
27148            ConfigVectorValue::Int8Vector(ref val) => {
27149                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i8>, D>(
27150                    <fidl::encoding::UnboundedVector<i8> as fidl::encoding::ValueTypeMarker>::borrow(val),
27151                    encoder, offset + 8, _depth
27152                )
27153            }
27154            ConfigVectorValue::Int16Vector(ref val) => {
27155                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i16>, D>(
27156                    <fidl::encoding::UnboundedVector<i16> as fidl::encoding::ValueTypeMarker>::borrow(val),
27157                    encoder, offset + 8, _depth
27158                )
27159            }
27160            ConfigVectorValue::Int32Vector(ref val) => {
27161                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i32>, D>(
27162                    <fidl::encoding::UnboundedVector<i32> as fidl::encoding::ValueTypeMarker>::borrow(val),
27163                    encoder, offset + 8, _depth
27164                )
27165            }
27166            ConfigVectorValue::Int64Vector(ref val) => {
27167                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<i64>, D>(
27168                    <fidl::encoding::UnboundedVector<i64> as fidl::encoding::ValueTypeMarker>::borrow(val),
27169                    encoder, offset + 8, _depth
27170                )
27171            }
27172            ConfigVectorValue::StringVector(ref val) => {
27173                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
27174                    <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow(val),
27175                    encoder, offset + 8, _depth
27176                )
27177            }
27178            ConfigVectorValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27179        }
27180        }
27181    }
27182
27183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigVectorValue {
27184        #[inline(always)]
27185        fn new_empty() -> Self {
27186            Self::__SourceBreaking { unknown_ordinal: 0 }
27187        }
27188
27189        #[inline]
27190        unsafe fn decode(
27191            &mut self,
27192            decoder: &mut fidl::encoding::Decoder<'_, D>,
27193            offset: usize,
27194            mut depth: fidl::encoding::Depth,
27195        ) -> fidl::Result<()> {
27196            decoder.debug_check_bounds::<Self>(offset);
27197            #[allow(unused_variables)]
27198            let next_out_of_line = decoder.next_out_of_line();
27199            let handles_before = decoder.remaining_handles();
27200            let (ordinal, inlined, num_bytes, num_handles) =
27201                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27202
27203            let member_inline_size = match ordinal {
27204            1 => <fidl::encoding::UnboundedVector<bool> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27205            2 => <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27206            3 => <fidl::encoding::UnboundedVector<u16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27207            4 => <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27208            5 => <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27209            6 => <fidl::encoding::UnboundedVector<i8> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27210            7 => <fidl::encoding::UnboundedVector<i16> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27211            8 => <fidl::encoding::UnboundedVector<i32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27212            9 => <fidl::encoding::UnboundedVector<i64> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27213            10 => <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27214            0 => return Err(fidl::Error::UnknownUnionTag),
27215            _ => num_bytes as usize,
27216        };
27217
27218            if inlined != (member_inline_size <= 4) {
27219                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27220            }
27221            let _inner_offset;
27222            if inlined {
27223                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27224                _inner_offset = offset + 8;
27225            } else {
27226                depth.increment()?;
27227                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27228            }
27229            match ordinal {
27230                1 => {
27231                    #[allow(irrefutable_let_patterns)]
27232                    if let ConfigVectorValue::BoolVector(_) = self {
27233                        // Do nothing, read the value into the object
27234                    } else {
27235                        // Initialize `self` to the right variant
27236                        *self = ConfigVectorValue::BoolVector(fidl::new_empty!(
27237                            fidl::encoding::UnboundedVector<bool>,
27238                            D
27239                        ));
27240                    }
27241                    #[allow(irrefutable_let_patterns)]
27242                    if let ConfigVectorValue::BoolVector(ref mut val) = self {
27243                        fidl::decode!(
27244                            fidl::encoding::UnboundedVector<bool>,
27245                            D,
27246                            val,
27247                            decoder,
27248                            _inner_offset,
27249                            depth
27250                        )?;
27251                    } else {
27252                        unreachable!()
27253                    }
27254                }
27255                2 => {
27256                    #[allow(irrefutable_let_patterns)]
27257                    if let ConfigVectorValue::Uint8Vector(_) = self {
27258                        // Do nothing, read the value into the object
27259                    } else {
27260                        // Initialize `self` to the right variant
27261                        *self = ConfigVectorValue::Uint8Vector(fidl::new_empty!(
27262                            fidl::encoding::UnboundedVector<u8>,
27263                            D
27264                        ));
27265                    }
27266                    #[allow(irrefutable_let_patterns)]
27267                    if let ConfigVectorValue::Uint8Vector(ref mut val) = self {
27268                        fidl::decode!(
27269                            fidl::encoding::UnboundedVector<u8>,
27270                            D,
27271                            val,
27272                            decoder,
27273                            _inner_offset,
27274                            depth
27275                        )?;
27276                    } else {
27277                        unreachable!()
27278                    }
27279                }
27280                3 => {
27281                    #[allow(irrefutable_let_patterns)]
27282                    if let ConfigVectorValue::Uint16Vector(_) = self {
27283                        // Do nothing, read the value into the object
27284                    } else {
27285                        // Initialize `self` to the right variant
27286                        *self = ConfigVectorValue::Uint16Vector(fidl::new_empty!(
27287                            fidl::encoding::UnboundedVector<u16>,
27288                            D
27289                        ));
27290                    }
27291                    #[allow(irrefutable_let_patterns)]
27292                    if let ConfigVectorValue::Uint16Vector(ref mut val) = self {
27293                        fidl::decode!(
27294                            fidl::encoding::UnboundedVector<u16>,
27295                            D,
27296                            val,
27297                            decoder,
27298                            _inner_offset,
27299                            depth
27300                        )?;
27301                    } else {
27302                        unreachable!()
27303                    }
27304                }
27305                4 => {
27306                    #[allow(irrefutable_let_patterns)]
27307                    if let ConfigVectorValue::Uint32Vector(_) = self {
27308                        // Do nothing, read the value into the object
27309                    } else {
27310                        // Initialize `self` to the right variant
27311                        *self = ConfigVectorValue::Uint32Vector(fidl::new_empty!(
27312                            fidl::encoding::UnboundedVector<u32>,
27313                            D
27314                        ));
27315                    }
27316                    #[allow(irrefutable_let_patterns)]
27317                    if let ConfigVectorValue::Uint32Vector(ref mut val) = self {
27318                        fidl::decode!(
27319                            fidl::encoding::UnboundedVector<u32>,
27320                            D,
27321                            val,
27322                            decoder,
27323                            _inner_offset,
27324                            depth
27325                        )?;
27326                    } else {
27327                        unreachable!()
27328                    }
27329                }
27330                5 => {
27331                    #[allow(irrefutable_let_patterns)]
27332                    if let ConfigVectorValue::Uint64Vector(_) = self {
27333                        // Do nothing, read the value into the object
27334                    } else {
27335                        // Initialize `self` to the right variant
27336                        *self = ConfigVectorValue::Uint64Vector(fidl::new_empty!(
27337                            fidl::encoding::UnboundedVector<u64>,
27338                            D
27339                        ));
27340                    }
27341                    #[allow(irrefutable_let_patterns)]
27342                    if let ConfigVectorValue::Uint64Vector(ref mut val) = self {
27343                        fidl::decode!(
27344                            fidl::encoding::UnboundedVector<u64>,
27345                            D,
27346                            val,
27347                            decoder,
27348                            _inner_offset,
27349                            depth
27350                        )?;
27351                    } else {
27352                        unreachable!()
27353                    }
27354                }
27355                6 => {
27356                    #[allow(irrefutable_let_patterns)]
27357                    if let ConfigVectorValue::Int8Vector(_) = self {
27358                        // Do nothing, read the value into the object
27359                    } else {
27360                        // Initialize `self` to the right variant
27361                        *self = ConfigVectorValue::Int8Vector(fidl::new_empty!(
27362                            fidl::encoding::UnboundedVector<i8>,
27363                            D
27364                        ));
27365                    }
27366                    #[allow(irrefutable_let_patterns)]
27367                    if let ConfigVectorValue::Int8Vector(ref mut val) = self {
27368                        fidl::decode!(
27369                            fidl::encoding::UnboundedVector<i8>,
27370                            D,
27371                            val,
27372                            decoder,
27373                            _inner_offset,
27374                            depth
27375                        )?;
27376                    } else {
27377                        unreachable!()
27378                    }
27379                }
27380                7 => {
27381                    #[allow(irrefutable_let_patterns)]
27382                    if let ConfigVectorValue::Int16Vector(_) = self {
27383                        // Do nothing, read the value into the object
27384                    } else {
27385                        // Initialize `self` to the right variant
27386                        *self = ConfigVectorValue::Int16Vector(fidl::new_empty!(
27387                            fidl::encoding::UnboundedVector<i16>,
27388                            D
27389                        ));
27390                    }
27391                    #[allow(irrefutable_let_patterns)]
27392                    if let ConfigVectorValue::Int16Vector(ref mut val) = self {
27393                        fidl::decode!(
27394                            fidl::encoding::UnboundedVector<i16>,
27395                            D,
27396                            val,
27397                            decoder,
27398                            _inner_offset,
27399                            depth
27400                        )?;
27401                    } else {
27402                        unreachable!()
27403                    }
27404                }
27405                8 => {
27406                    #[allow(irrefutable_let_patterns)]
27407                    if let ConfigVectorValue::Int32Vector(_) = self {
27408                        // Do nothing, read the value into the object
27409                    } else {
27410                        // Initialize `self` to the right variant
27411                        *self = ConfigVectorValue::Int32Vector(fidl::new_empty!(
27412                            fidl::encoding::UnboundedVector<i32>,
27413                            D
27414                        ));
27415                    }
27416                    #[allow(irrefutable_let_patterns)]
27417                    if let ConfigVectorValue::Int32Vector(ref mut val) = self {
27418                        fidl::decode!(
27419                            fidl::encoding::UnboundedVector<i32>,
27420                            D,
27421                            val,
27422                            decoder,
27423                            _inner_offset,
27424                            depth
27425                        )?;
27426                    } else {
27427                        unreachable!()
27428                    }
27429                }
27430                9 => {
27431                    #[allow(irrefutable_let_patterns)]
27432                    if let ConfigVectorValue::Int64Vector(_) = self {
27433                        // Do nothing, read the value into the object
27434                    } else {
27435                        // Initialize `self` to the right variant
27436                        *self = ConfigVectorValue::Int64Vector(fidl::new_empty!(
27437                            fidl::encoding::UnboundedVector<i64>,
27438                            D
27439                        ));
27440                    }
27441                    #[allow(irrefutable_let_patterns)]
27442                    if let ConfigVectorValue::Int64Vector(ref mut val) = self {
27443                        fidl::decode!(
27444                            fidl::encoding::UnboundedVector<i64>,
27445                            D,
27446                            val,
27447                            decoder,
27448                            _inner_offset,
27449                            depth
27450                        )?;
27451                    } else {
27452                        unreachable!()
27453                    }
27454                }
27455                10 => {
27456                    #[allow(irrefutable_let_patterns)]
27457                    if let ConfigVectorValue::StringVector(_) = self {
27458                        // Do nothing, read the value into the object
27459                    } else {
27460                        // Initialize `self` to the right variant
27461                        *self = ConfigVectorValue::StringVector(fidl::new_empty!(
27462                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27463                            D
27464                        ));
27465                    }
27466                    #[allow(irrefutable_let_patterns)]
27467                    if let ConfigVectorValue::StringVector(ref mut val) = self {
27468                        fidl::decode!(
27469                            fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
27470                            D,
27471                            val,
27472                            decoder,
27473                            _inner_offset,
27474                            depth
27475                        )?;
27476                    } else {
27477                        unreachable!()
27478                    }
27479                }
27480                #[allow(deprecated)]
27481                ordinal => {
27482                    for _ in 0..num_handles {
27483                        decoder.drop_next_handle()?;
27484                    }
27485                    *self = ConfigVectorValue::__SourceBreaking { unknown_ordinal: ordinal };
27486                }
27487            }
27488            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27489                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27490            }
27491            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27492                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27493            }
27494            Ok(())
27495        }
27496    }
27497
27498    impl fidl::encoding::ValueTypeMarker for DebugRegistration {
27499        type Borrowed<'a> = &'a Self;
27500        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27501            value
27502        }
27503    }
27504
27505    unsafe impl fidl::encoding::TypeMarker for DebugRegistration {
27506        type Owned = Self;
27507
27508        #[inline(always)]
27509        fn inline_align(_context: fidl::encoding::Context) -> usize {
27510            8
27511        }
27512
27513        #[inline(always)]
27514        fn inline_size(_context: fidl::encoding::Context) -> usize {
27515            16
27516        }
27517    }
27518
27519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DebugRegistration, D>
27520        for &DebugRegistration
27521    {
27522        #[inline]
27523        unsafe fn encode(
27524            self,
27525            encoder: &mut fidl::encoding::Encoder<'_, D>,
27526            offset: usize,
27527            _depth: fidl::encoding::Depth,
27528        ) -> fidl::Result<()> {
27529            encoder.debug_check_bounds::<DebugRegistration>(offset);
27530            encoder.write_num::<u64>(self.ordinal(), offset);
27531            match self {
27532                DebugRegistration::Protocol(ref val) => {
27533                    fidl::encoding::encode_in_envelope::<DebugProtocolRegistration, D>(
27534                        <DebugProtocolRegistration as fidl::encoding::ValueTypeMarker>::borrow(val),
27535                        encoder,
27536                        offset + 8,
27537                        _depth,
27538                    )
27539                }
27540                DebugRegistration::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27541            }
27542        }
27543    }
27544
27545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DebugRegistration {
27546        #[inline(always)]
27547        fn new_empty() -> Self {
27548            Self::__SourceBreaking { unknown_ordinal: 0 }
27549        }
27550
27551        #[inline]
27552        unsafe fn decode(
27553            &mut self,
27554            decoder: &mut fidl::encoding::Decoder<'_, D>,
27555            offset: usize,
27556            mut depth: fidl::encoding::Depth,
27557        ) -> fidl::Result<()> {
27558            decoder.debug_check_bounds::<Self>(offset);
27559            #[allow(unused_variables)]
27560            let next_out_of_line = decoder.next_out_of_line();
27561            let handles_before = decoder.remaining_handles();
27562            let (ordinal, inlined, num_bytes, num_handles) =
27563                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27564
27565            let member_inline_size = match ordinal {
27566                1 => <DebugProtocolRegistration as fidl::encoding::TypeMarker>::inline_size(
27567                    decoder.context,
27568                ),
27569                0 => return Err(fidl::Error::UnknownUnionTag),
27570                _ => num_bytes as usize,
27571            };
27572
27573            if inlined != (member_inline_size <= 4) {
27574                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27575            }
27576            let _inner_offset;
27577            if inlined {
27578                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27579                _inner_offset = offset + 8;
27580            } else {
27581                depth.increment()?;
27582                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27583            }
27584            match ordinal {
27585                1 => {
27586                    #[allow(irrefutable_let_patterns)]
27587                    if let DebugRegistration::Protocol(_) = self {
27588                        // Do nothing, read the value into the object
27589                    } else {
27590                        // Initialize `self` to the right variant
27591                        *self = DebugRegistration::Protocol(fidl::new_empty!(
27592                            DebugProtocolRegistration,
27593                            D
27594                        ));
27595                    }
27596                    #[allow(irrefutable_let_patterns)]
27597                    if let DebugRegistration::Protocol(ref mut val) = self {
27598                        fidl::decode!(
27599                            DebugProtocolRegistration,
27600                            D,
27601                            val,
27602                            decoder,
27603                            _inner_offset,
27604                            depth
27605                        )?;
27606                    } else {
27607                        unreachable!()
27608                    }
27609                }
27610                #[allow(deprecated)]
27611                ordinal => {
27612                    for _ in 0..num_handles {
27613                        decoder.drop_next_handle()?;
27614                    }
27615                    *self = DebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
27616                }
27617            }
27618            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27619                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27620            }
27621            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27622                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27623            }
27624            Ok(())
27625        }
27626    }
27627
27628    impl fidl::encoding::ValueTypeMarker for Expose {
27629        type Borrowed<'a> = &'a Self;
27630        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27631            value
27632        }
27633    }
27634
27635    unsafe impl fidl::encoding::TypeMarker for Expose {
27636        type Owned = Self;
27637
27638        #[inline(always)]
27639        fn inline_align(_context: fidl::encoding::Context) -> usize {
27640            8
27641        }
27642
27643        #[inline(always)]
27644        fn inline_size(_context: fidl::encoding::Context) -> usize {
27645            16
27646        }
27647    }
27648
27649    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Expose, D> for &Expose {
27650        #[inline]
27651        unsafe fn encode(
27652            self,
27653            encoder: &mut fidl::encoding::Encoder<'_, D>,
27654            offset: usize,
27655            _depth: fidl::encoding::Depth,
27656        ) -> fidl::Result<()> {
27657            encoder.debug_check_bounds::<Expose>(offset);
27658            encoder.write_num::<u64>(self.ordinal(), offset);
27659            match self {
27660                Expose::Service(ref val) => fidl::encoding::encode_in_envelope::<ExposeService, D>(
27661                    <ExposeService as fidl::encoding::ValueTypeMarker>::borrow(val),
27662                    encoder,
27663                    offset + 8,
27664                    _depth,
27665                ),
27666                Expose::Protocol(ref val) => {
27667                    fidl::encoding::encode_in_envelope::<ExposeProtocol, D>(
27668                        <ExposeProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
27669                        encoder,
27670                        offset + 8,
27671                        _depth,
27672                    )
27673                }
27674                Expose::Directory(ref val) => {
27675                    fidl::encoding::encode_in_envelope::<ExposeDirectory, D>(
27676                        <ExposeDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
27677                        encoder,
27678                        offset + 8,
27679                        _depth,
27680                    )
27681                }
27682                Expose::Runner(ref val) => fidl::encoding::encode_in_envelope::<ExposeRunner, D>(
27683                    <ExposeRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
27684                    encoder,
27685                    offset + 8,
27686                    _depth,
27687                ),
27688                Expose::Resolver(ref val) => {
27689                    fidl::encoding::encode_in_envelope::<ExposeResolver, D>(
27690                        <ExposeResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
27691                        encoder,
27692                        offset + 8,
27693                        _depth,
27694                    )
27695                }
27696                Expose::Dictionary(ref val) => {
27697                    fidl::encoding::encode_in_envelope::<ExposeDictionary, D>(
27698                        <ExposeDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
27699                        encoder,
27700                        offset + 8,
27701                        _depth,
27702                    )
27703                }
27704                Expose::Config(ref val) => {
27705                    fidl::encoding::encode_in_envelope::<ExposeConfiguration, D>(
27706                        <ExposeConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
27707                        encoder,
27708                        offset + 8,
27709                        _depth,
27710                    )
27711                }
27712                Expose::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27713            }
27714        }
27715    }
27716
27717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Expose {
27718        #[inline(always)]
27719        fn new_empty() -> Self {
27720            Self::__SourceBreaking { unknown_ordinal: 0 }
27721        }
27722
27723        #[inline]
27724        unsafe fn decode(
27725            &mut self,
27726            decoder: &mut fidl::encoding::Decoder<'_, D>,
27727            offset: usize,
27728            mut depth: fidl::encoding::Depth,
27729        ) -> fidl::Result<()> {
27730            decoder.debug_check_bounds::<Self>(offset);
27731            #[allow(unused_variables)]
27732            let next_out_of_line = decoder.next_out_of_line();
27733            let handles_before = decoder.remaining_handles();
27734            let (ordinal, inlined, num_bytes, num_handles) =
27735                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27736
27737            let member_inline_size = match ordinal {
27738                1 => <ExposeService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27739                2 => <ExposeProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27740                3 => <ExposeDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27741                4 => <ExposeRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27742                5 => <ExposeResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27743                7 => <ExposeDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27744                8 => <ExposeConfiguration as fidl::encoding::TypeMarker>::inline_size(
27745                    decoder.context,
27746                ),
27747                0 => return Err(fidl::Error::UnknownUnionTag),
27748                _ => num_bytes as usize,
27749            };
27750
27751            if inlined != (member_inline_size <= 4) {
27752                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27753            }
27754            let _inner_offset;
27755            if inlined {
27756                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27757                _inner_offset = offset + 8;
27758            } else {
27759                depth.increment()?;
27760                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27761            }
27762            match ordinal {
27763                1 => {
27764                    #[allow(irrefutable_let_patterns)]
27765                    if let Expose::Service(_) = self {
27766                        // Do nothing, read the value into the object
27767                    } else {
27768                        // Initialize `self` to the right variant
27769                        *self = Expose::Service(fidl::new_empty!(ExposeService, D));
27770                    }
27771                    #[allow(irrefutable_let_patterns)]
27772                    if let Expose::Service(ref mut val) = self {
27773                        fidl::decode!(ExposeService, D, val, decoder, _inner_offset, depth)?;
27774                    } else {
27775                        unreachable!()
27776                    }
27777                }
27778                2 => {
27779                    #[allow(irrefutable_let_patterns)]
27780                    if let Expose::Protocol(_) = self {
27781                        // Do nothing, read the value into the object
27782                    } else {
27783                        // Initialize `self` to the right variant
27784                        *self = Expose::Protocol(fidl::new_empty!(ExposeProtocol, D));
27785                    }
27786                    #[allow(irrefutable_let_patterns)]
27787                    if let Expose::Protocol(ref mut val) = self {
27788                        fidl::decode!(ExposeProtocol, D, val, decoder, _inner_offset, depth)?;
27789                    } else {
27790                        unreachable!()
27791                    }
27792                }
27793                3 => {
27794                    #[allow(irrefutable_let_patterns)]
27795                    if let Expose::Directory(_) = self {
27796                        // Do nothing, read the value into the object
27797                    } else {
27798                        // Initialize `self` to the right variant
27799                        *self = Expose::Directory(fidl::new_empty!(ExposeDirectory, D));
27800                    }
27801                    #[allow(irrefutable_let_patterns)]
27802                    if let Expose::Directory(ref mut val) = self {
27803                        fidl::decode!(ExposeDirectory, D, val, decoder, _inner_offset, depth)?;
27804                    } else {
27805                        unreachable!()
27806                    }
27807                }
27808                4 => {
27809                    #[allow(irrefutable_let_patterns)]
27810                    if let Expose::Runner(_) = self {
27811                        // Do nothing, read the value into the object
27812                    } else {
27813                        // Initialize `self` to the right variant
27814                        *self = Expose::Runner(fidl::new_empty!(ExposeRunner, D));
27815                    }
27816                    #[allow(irrefutable_let_patterns)]
27817                    if let Expose::Runner(ref mut val) = self {
27818                        fidl::decode!(ExposeRunner, D, val, decoder, _inner_offset, depth)?;
27819                    } else {
27820                        unreachable!()
27821                    }
27822                }
27823                5 => {
27824                    #[allow(irrefutable_let_patterns)]
27825                    if let Expose::Resolver(_) = self {
27826                        // Do nothing, read the value into the object
27827                    } else {
27828                        // Initialize `self` to the right variant
27829                        *self = Expose::Resolver(fidl::new_empty!(ExposeResolver, D));
27830                    }
27831                    #[allow(irrefutable_let_patterns)]
27832                    if let Expose::Resolver(ref mut val) = self {
27833                        fidl::decode!(ExposeResolver, D, val, decoder, _inner_offset, depth)?;
27834                    } else {
27835                        unreachable!()
27836                    }
27837                }
27838                7 => {
27839                    #[allow(irrefutable_let_patterns)]
27840                    if let Expose::Dictionary(_) = self {
27841                        // Do nothing, read the value into the object
27842                    } else {
27843                        // Initialize `self` to the right variant
27844                        *self = Expose::Dictionary(fidl::new_empty!(ExposeDictionary, D));
27845                    }
27846                    #[allow(irrefutable_let_patterns)]
27847                    if let Expose::Dictionary(ref mut val) = self {
27848                        fidl::decode!(ExposeDictionary, D, val, decoder, _inner_offset, depth)?;
27849                    } else {
27850                        unreachable!()
27851                    }
27852                }
27853                8 => {
27854                    #[allow(irrefutable_let_patterns)]
27855                    if let Expose::Config(_) = self {
27856                        // Do nothing, read the value into the object
27857                    } else {
27858                        // Initialize `self` to the right variant
27859                        *self = Expose::Config(fidl::new_empty!(ExposeConfiguration, D));
27860                    }
27861                    #[allow(irrefutable_let_patterns)]
27862                    if let Expose::Config(ref mut val) = self {
27863                        fidl::decode!(ExposeConfiguration, D, val, decoder, _inner_offset, depth)?;
27864                    } else {
27865                        unreachable!()
27866                    }
27867                }
27868                #[allow(deprecated)]
27869                ordinal => {
27870                    for _ in 0..num_handles {
27871                        decoder.drop_next_handle()?;
27872                    }
27873                    *self = Expose::__SourceBreaking { unknown_ordinal: ordinal };
27874                }
27875            }
27876            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27877                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27878            }
27879            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27880                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27881            }
27882            Ok(())
27883        }
27884    }
27885
27886    impl fidl::encoding::ValueTypeMarker for LayoutConstraint {
27887        type Borrowed<'a> = &'a Self;
27888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27889            value
27890        }
27891    }
27892
27893    unsafe impl fidl::encoding::TypeMarker for LayoutConstraint {
27894        type Owned = Self;
27895
27896        #[inline(always)]
27897        fn inline_align(_context: fidl::encoding::Context) -> usize {
27898            8
27899        }
27900
27901        #[inline(always)]
27902        fn inline_size(_context: fidl::encoding::Context) -> usize {
27903            16
27904        }
27905    }
27906
27907    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutConstraint, D>
27908        for &LayoutConstraint
27909    {
27910        #[inline]
27911        unsafe fn encode(
27912            self,
27913            encoder: &mut fidl::encoding::Encoder<'_, D>,
27914            offset: usize,
27915            _depth: fidl::encoding::Depth,
27916        ) -> fidl::Result<()> {
27917            encoder.debug_check_bounds::<LayoutConstraint>(offset);
27918            encoder.write_num::<u64>(self.ordinal(), offset);
27919            match self {
27920                LayoutConstraint::MaxSize(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
27921                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
27922                    encoder,
27923                    offset + 8,
27924                    _depth,
27925                ),
27926                LayoutConstraint::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27927            }
27928        }
27929    }
27930
27931    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutConstraint {
27932        #[inline(always)]
27933        fn new_empty() -> Self {
27934            Self::__SourceBreaking { unknown_ordinal: 0 }
27935        }
27936
27937        #[inline]
27938        unsafe fn decode(
27939            &mut self,
27940            decoder: &mut fidl::encoding::Decoder<'_, D>,
27941            offset: usize,
27942            mut depth: fidl::encoding::Depth,
27943        ) -> fidl::Result<()> {
27944            decoder.debug_check_bounds::<Self>(offset);
27945            #[allow(unused_variables)]
27946            let next_out_of_line = decoder.next_out_of_line();
27947            let handles_before = decoder.remaining_handles();
27948            let (ordinal, inlined, num_bytes, num_handles) =
27949                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27950
27951            let member_inline_size = match ordinal {
27952                1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27953                0 => return Err(fidl::Error::UnknownUnionTag),
27954                _ => num_bytes as usize,
27955            };
27956
27957            if inlined != (member_inline_size <= 4) {
27958                return Err(fidl::Error::InvalidInlineBitInEnvelope);
27959            }
27960            let _inner_offset;
27961            if inlined {
27962                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27963                _inner_offset = offset + 8;
27964            } else {
27965                depth.increment()?;
27966                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27967            }
27968            match ordinal {
27969                1 => {
27970                    #[allow(irrefutable_let_patterns)]
27971                    if let LayoutConstraint::MaxSize(_) = self {
27972                        // Do nothing, read the value into the object
27973                    } else {
27974                        // Initialize `self` to the right variant
27975                        *self = LayoutConstraint::MaxSize(fidl::new_empty!(u32, D));
27976                    }
27977                    #[allow(irrefutable_let_patterns)]
27978                    if let LayoutConstraint::MaxSize(ref mut val) = self {
27979                        fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
27980                    } else {
27981                        unreachable!()
27982                    }
27983                }
27984                #[allow(deprecated)]
27985                ordinal => {
27986                    for _ in 0..num_handles {
27987                        decoder.drop_next_handle()?;
27988                    }
27989                    *self = LayoutConstraint::__SourceBreaking { unknown_ordinal: ordinal };
27990                }
27991            }
27992            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27993                return Err(fidl::Error::InvalidNumBytesInEnvelope);
27994            }
27995            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27996                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27997            }
27998            Ok(())
27999        }
28000    }
28001
28002    impl fidl::encoding::ValueTypeMarker for LayoutParameter {
28003        type Borrowed<'a> = &'a Self;
28004        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28005            value
28006        }
28007    }
28008
28009    unsafe impl fidl::encoding::TypeMarker for LayoutParameter {
28010        type Owned = Self;
28011
28012        #[inline(always)]
28013        fn inline_align(_context: fidl::encoding::Context) -> usize {
28014            8
28015        }
28016
28017        #[inline(always)]
28018        fn inline_size(_context: fidl::encoding::Context) -> usize {
28019            16
28020        }
28021    }
28022
28023    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LayoutParameter, D>
28024        for &LayoutParameter
28025    {
28026        #[inline]
28027        unsafe fn encode(
28028            self,
28029            encoder: &mut fidl::encoding::Encoder<'_, D>,
28030            offset: usize,
28031            _depth: fidl::encoding::Depth,
28032        ) -> fidl::Result<()> {
28033            encoder.debug_check_bounds::<LayoutParameter>(offset);
28034            encoder.write_num::<u64>(self.ordinal(), offset);
28035            match self {
28036                LayoutParameter::NestedType(ref val) => {
28037                    fidl::encoding::encode_in_envelope::<ConfigType, D>(
28038                        <ConfigType as fidl::encoding::ValueTypeMarker>::borrow(val),
28039                        encoder,
28040                        offset + 8,
28041                        _depth,
28042                    )
28043                }
28044                LayoutParameter::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28045            }
28046        }
28047    }
28048
28049    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LayoutParameter {
28050        #[inline(always)]
28051        fn new_empty() -> Self {
28052            Self::__SourceBreaking { unknown_ordinal: 0 }
28053        }
28054
28055        #[inline]
28056        unsafe fn decode(
28057            &mut self,
28058            decoder: &mut fidl::encoding::Decoder<'_, D>,
28059            offset: usize,
28060            mut depth: fidl::encoding::Depth,
28061        ) -> fidl::Result<()> {
28062            decoder.debug_check_bounds::<Self>(offset);
28063            #[allow(unused_variables)]
28064            let next_out_of_line = decoder.next_out_of_line();
28065            let handles_before = decoder.remaining_handles();
28066            let (ordinal, inlined, num_bytes, num_handles) =
28067                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28068
28069            let member_inline_size = match ordinal {
28070                1 => <ConfigType as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28071                0 => return Err(fidl::Error::UnknownUnionTag),
28072                _ => num_bytes as usize,
28073            };
28074
28075            if inlined != (member_inline_size <= 4) {
28076                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28077            }
28078            let _inner_offset;
28079            if inlined {
28080                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28081                _inner_offset = offset + 8;
28082            } else {
28083                depth.increment()?;
28084                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28085            }
28086            match ordinal {
28087                1 => {
28088                    #[allow(irrefutable_let_patterns)]
28089                    if let LayoutParameter::NestedType(_) = self {
28090                        // Do nothing, read the value into the object
28091                    } else {
28092                        // Initialize `self` to the right variant
28093                        *self = LayoutParameter::NestedType(fidl::new_empty!(ConfigType, D));
28094                    }
28095                    #[allow(irrefutable_let_patterns)]
28096                    if let LayoutParameter::NestedType(ref mut val) = self {
28097                        fidl::decode!(ConfigType, D, val, decoder, _inner_offset, depth)?;
28098                    } else {
28099                        unreachable!()
28100                    }
28101                }
28102                #[allow(deprecated)]
28103                ordinal => {
28104                    for _ in 0..num_handles {
28105                        decoder.drop_next_handle()?;
28106                    }
28107                    *self = LayoutParameter::__SourceBreaking { unknown_ordinal: ordinal };
28108                }
28109            }
28110            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28111                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28112            }
28113            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28114                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28115            }
28116            Ok(())
28117        }
28118    }
28119
28120    impl fidl::encoding::ValueTypeMarker for Offer {
28121        type Borrowed<'a> = &'a Self;
28122        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28123            value
28124        }
28125    }
28126
28127    unsafe impl fidl::encoding::TypeMarker for Offer {
28128        type Owned = Self;
28129
28130        #[inline(always)]
28131        fn inline_align(_context: fidl::encoding::Context) -> usize {
28132            8
28133        }
28134
28135        #[inline(always)]
28136        fn inline_size(_context: fidl::encoding::Context) -> usize {
28137            16
28138        }
28139    }
28140
28141    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
28142        #[inline]
28143        unsafe fn encode(
28144            self,
28145            encoder: &mut fidl::encoding::Encoder<'_, D>,
28146            offset: usize,
28147            _depth: fidl::encoding::Depth,
28148        ) -> fidl::Result<()> {
28149            encoder.debug_check_bounds::<Offer>(offset);
28150            encoder.write_num::<u64>(self.ordinal(), offset);
28151            match self {
28152                Offer::Service(ref val) => fidl::encoding::encode_in_envelope::<OfferService, D>(
28153                    <OfferService as fidl::encoding::ValueTypeMarker>::borrow(val),
28154                    encoder,
28155                    offset + 8,
28156                    _depth,
28157                ),
28158                Offer::Protocol(ref val) => fidl::encoding::encode_in_envelope::<OfferProtocol, D>(
28159                    <OfferProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
28160                    encoder,
28161                    offset + 8,
28162                    _depth,
28163                ),
28164                Offer::Directory(ref val) => {
28165                    fidl::encoding::encode_in_envelope::<OfferDirectory, D>(
28166                        <OfferDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
28167                        encoder,
28168                        offset + 8,
28169                        _depth,
28170                    )
28171                }
28172                Offer::Storage(ref val) => fidl::encoding::encode_in_envelope::<OfferStorage, D>(
28173                    <OfferStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
28174                    encoder,
28175                    offset + 8,
28176                    _depth,
28177                ),
28178                Offer::Runner(ref val) => fidl::encoding::encode_in_envelope::<OfferRunner, D>(
28179                    <OfferRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
28180                    encoder,
28181                    offset + 8,
28182                    _depth,
28183                ),
28184                Offer::Resolver(ref val) => fidl::encoding::encode_in_envelope::<OfferResolver, D>(
28185                    <OfferResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
28186                    encoder,
28187                    offset + 8,
28188                    _depth,
28189                ),
28190                Offer::EventStream(ref val) => {
28191                    fidl::encoding::encode_in_envelope::<OfferEventStream, D>(
28192                        <OfferEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
28193                        encoder,
28194                        offset + 8,
28195                        _depth,
28196                    )
28197                }
28198                Offer::Dictionary(ref val) => {
28199                    fidl::encoding::encode_in_envelope::<OfferDictionary, D>(
28200                        <OfferDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
28201                        encoder,
28202                        offset + 8,
28203                        _depth,
28204                    )
28205                }
28206                Offer::Config(ref val) => {
28207                    fidl::encoding::encode_in_envelope::<OfferConfiguration, D>(
28208                        <OfferConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
28209                        encoder,
28210                        offset + 8,
28211                        _depth,
28212                    )
28213                }
28214                Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28215            }
28216        }
28217    }
28218
28219    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
28220        #[inline(always)]
28221        fn new_empty() -> Self {
28222            Self::__SourceBreaking { unknown_ordinal: 0 }
28223        }
28224
28225        #[inline]
28226        unsafe fn decode(
28227            &mut self,
28228            decoder: &mut fidl::encoding::Decoder<'_, D>,
28229            offset: usize,
28230            mut depth: fidl::encoding::Depth,
28231        ) -> fidl::Result<()> {
28232            decoder.debug_check_bounds::<Self>(offset);
28233            #[allow(unused_variables)]
28234            let next_out_of_line = decoder.next_out_of_line();
28235            let handles_before = decoder.remaining_handles();
28236            let (ordinal, inlined, num_bytes, num_handles) =
28237                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28238
28239            let member_inline_size = match ordinal {
28240                1 => <OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28241                2 => <OfferProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28242                3 => <OfferDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28243                4 => <OfferStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28244                5 => <OfferRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28245                6 => <OfferResolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28246                8 => <OfferEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28247                9 => <OfferDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28248                10 => {
28249                    <OfferConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context)
28250                }
28251                0 => return Err(fidl::Error::UnknownUnionTag),
28252                _ => num_bytes as usize,
28253            };
28254
28255            if inlined != (member_inline_size <= 4) {
28256                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28257            }
28258            let _inner_offset;
28259            if inlined {
28260                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28261                _inner_offset = offset + 8;
28262            } else {
28263                depth.increment()?;
28264                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28265            }
28266            match ordinal {
28267                1 => {
28268                    #[allow(irrefutable_let_patterns)]
28269                    if let Offer::Service(_) = self {
28270                        // Do nothing, read the value into the object
28271                    } else {
28272                        // Initialize `self` to the right variant
28273                        *self = Offer::Service(fidl::new_empty!(OfferService, D));
28274                    }
28275                    #[allow(irrefutable_let_patterns)]
28276                    if let Offer::Service(ref mut val) = self {
28277                        fidl::decode!(OfferService, D, val, decoder, _inner_offset, depth)?;
28278                    } else {
28279                        unreachable!()
28280                    }
28281                }
28282                2 => {
28283                    #[allow(irrefutable_let_patterns)]
28284                    if let Offer::Protocol(_) = self {
28285                        // Do nothing, read the value into the object
28286                    } else {
28287                        // Initialize `self` to the right variant
28288                        *self = Offer::Protocol(fidl::new_empty!(OfferProtocol, D));
28289                    }
28290                    #[allow(irrefutable_let_patterns)]
28291                    if let Offer::Protocol(ref mut val) = self {
28292                        fidl::decode!(OfferProtocol, D, val, decoder, _inner_offset, depth)?;
28293                    } else {
28294                        unreachable!()
28295                    }
28296                }
28297                3 => {
28298                    #[allow(irrefutable_let_patterns)]
28299                    if let Offer::Directory(_) = self {
28300                        // Do nothing, read the value into the object
28301                    } else {
28302                        // Initialize `self` to the right variant
28303                        *self = Offer::Directory(fidl::new_empty!(OfferDirectory, D));
28304                    }
28305                    #[allow(irrefutable_let_patterns)]
28306                    if let Offer::Directory(ref mut val) = self {
28307                        fidl::decode!(OfferDirectory, D, val, decoder, _inner_offset, depth)?;
28308                    } else {
28309                        unreachable!()
28310                    }
28311                }
28312                4 => {
28313                    #[allow(irrefutable_let_patterns)]
28314                    if let Offer::Storage(_) = self {
28315                        // Do nothing, read the value into the object
28316                    } else {
28317                        // Initialize `self` to the right variant
28318                        *self = Offer::Storage(fidl::new_empty!(OfferStorage, D));
28319                    }
28320                    #[allow(irrefutable_let_patterns)]
28321                    if let Offer::Storage(ref mut val) = self {
28322                        fidl::decode!(OfferStorage, D, val, decoder, _inner_offset, depth)?;
28323                    } else {
28324                        unreachable!()
28325                    }
28326                }
28327                5 => {
28328                    #[allow(irrefutable_let_patterns)]
28329                    if let Offer::Runner(_) = self {
28330                        // Do nothing, read the value into the object
28331                    } else {
28332                        // Initialize `self` to the right variant
28333                        *self = Offer::Runner(fidl::new_empty!(OfferRunner, D));
28334                    }
28335                    #[allow(irrefutable_let_patterns)]
28336                    if let Offer::Runner(ref mut val) = self {
28337                        fidl::decode!(OfferRunner, D, val, decoder, _inner_offset, depth)?;
28338                    } else {
28339                        unreachable!()
28340                    }
28341                }
28342                6 => {
28343                    #[allow(irrefutable_let_patterns)]
28344                    if let Offer::Resolver(_) = self {
28345                        // Do nothing, read the value into the object
28346                    } else {
28347                        // Initialize `self` to the right variant
28348                        *self = Offer::Resolver(fidl::new_empty!(OfferResolver, D));
28349                    }
28350                    #[allow(irrefutable_let_patterns)]
28351                    if let Offer::Resolver(ref mut val) = self {
28352                        fidl::decode!(OfferResolver, D, val, decoder, _inner_offset, depth)?;
28353                    } else {
28354                        unreachable!()
28355                    }
28356                }
28357                8 => {
28358                    #[allow(irrefutable_let_patterns)]
28359                    if let Offer::EventStream(_) = self {
28360                        // Do nothing, read the value into the object
28361                    } else {
28362                        // Initialize `self` to the right variant
28363                        *self = Offer::EventStream(fidl::new_empty!(OfferEventStream, D));
28364                    }
28365                    #[allow(irrefutable_let_patterns)]
28366                    if let Offer::EventStream(ref mut val) = self {
28367                        fidl::decode!(OfferEventStream, D, val, decoder, _inner_offset, depth)?;
28368                    } else {
28369                        unreachable!()
28370                    }
28371                }
28372                9 => {
28373                    #[allow(irrefutable_let_patterns)]
28374                    if let Offer::Dictionary(_) = self {
28375                        // Do nothing, read the value into the object
28376                    } else {
28377                        // Initialize `self` to the right variant
28378                        *self = Offer::Dictionary(fidl::new_empty!(OfferDictionary, D));
28379                    }
28380                    #[allow(irrefutable_let_patterns)]
28381                    if let Offer::Dictionary(ref mut val) = self {
28382                        fidl::decode!(OfferDictionary, D, val, decoder, _inner_offset, depth)?;
28383                    } else {
28384                        unreachable!()
28385                    }
28386                }
28387                10 => {
28388                    #[allow(irrefutable_let_patterns)]
28389                    if let Offer::Config(_) = self {
28390                        // Do nothing, read the value into the object
28391                    } else {
28392                        // Initialize `self` to the right variant
28393                        *self = Offer::Config(fidl::new_empty!(OfferConfiguration, D));
28394                    }
28395                    #[allow(irrefutable_let_patterns)]
28396                    if let Offer::Config(ref mut val) = self {
28397                        fidl::decode!(OfferConfiguration, D, val, decoder, _inner_offset, depth)?;
28398                    } else {
28399                        unreachable!()
28400                    }
28401                }
28402                #[allow(deprecated)]
28403                ordinal => {
28404                    for _ in 0..num_handles {
28405                        decoder.drop_next_handle()?;
28406                    }
28407                    *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
28408                }
28409            }
28410            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28411                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28412            }
28413            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28414                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28415            }
28416            Ok(())
28417        }
28418    }
28419
28420    impl fidl::encoding::ValueTypeMarker for Ref {
28421        type Borrowed<'a> = &'a Self;
28422        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28423            value
28424        }
28425    }
28426
28427    unsafe impl fidl::encoding::TypeMarker for Ref {
28428        type Owned = Self;
28429
28430        #[inline(always)]
28431        fn inline_align(_context: fidl::encoding::Context) -> usize {
28432            8
28433        }
28434
28435        #[inline(always)]
28436        fn inline_size(_context: fidl::encoding::Context) -> usize {
28437            16
28438        }
28439    }
28440
28441    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ref, D> for &Ref {
28442        #[inline]
28443        unsafe fn encode(
28444            self,
28445            encoder: &mut fidl::encoding::Encoder<'_, D>,
28446            offset: usize,
28447            _depth: fidl::encoding::Depth,
28448        ) -> fidl::Result<()> {
28449            encoder.debug_check_bounds::<Ref>(offset);
28450            encoder.write_num::<u64>(self.ordinal(), offset);
28451            match self {
28452                Ref::Parent(ref val) => fidl::encoding::encode_in_envelope::<ParentRef, D>(
28453                    <ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28454                    encoder,
28455                    offset + 8,
28456                    _depth,
28457                ),
28458                Ref::Self_(ref val) => fidl::encoding::encode_in_envelope::<SelfRef, D>(
28459                    <SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28460                    encoder,
28461                    offset + 8,
28462                    _depth,
28463                ),
28464                Ref::Child(ref val) => fidl::encoding::encode_in_envelope::<ChildRef, D>(
28465                    <ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28466                    encoder,
28467                    offset + 8,
28468                    _depth,
28469                ),
28470                Ref::Collection(ref val) => fidl::encoding::encode_in_envelope::<CollectionRef, D>(
28471                    <CollectionRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28472                    encoder,
28473                    offset + 8,
28474                    _depth,
28475                ),
28476                Ref::Framework(ref val) => fidl::encoding::encode_in_envelope::<FrameworkRef, D>(
28477                    <FrameworkRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28478                    encoder,
28479                    offset + 8,
28480                    _depth,
28481                ),
28482                Ref::Capability(ref val) => fidl::encoding::encode_in_envelope::<CapabilityRef, D>(
28483                    <CapabilityRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28484                    encoder,
28485                    offset + 8,
28486                    _depth,
28487                ),
28488                Ref::Debug(ref val) => fidl::encoding::encode_in_envelope::<DebugRef, D>(
28489                    <DebugRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28490                    encoder,
28491                    offset + 8,
28492                    _depth,
28493                ),
28494                Ref::VoidType(ref val) => fidl::encoding::encode_in_envelope::<VoidRef, D>(
28495                    <VoidRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28496                    encoder,
28497                    offset + 8,
28498                    _depth,
28499                ),
28500                Ref::Environment(ref val) => {
28501                    fidl::encoding::encode_in_envelope::<EnvironmentRef, D>(
28502                        <EnvironmentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
28503                        encoder,
28504                        offset + 8,
28505                        _depth,
28506                    )
28507                }
28508                Ref::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28509            }
28510        }
28511    }
28512
28513    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ref {
28514        #[inline(always)]
28515        fn new_empty() -> Self {
28516            Self::__SourceBreaking { unknown_ordinal: 0 }
28517        }
28518
28519        #[inline]
28520        unsafe fn decode(
28521            &mut self,
28522            decoder: &mut fidl::encoding::Decoder<'_, D>,
28523            offset: usize,
28524            mut depth: fidl::encoding::Depth,
28525        ) -> fidl::Result<()> {
28526            decoder.debug_check_bounds::<Self>(offset);
28527            #[allow(unused_variables)]
28528            let next_out_of_line = decoder.next_out_of_line();
28529            let handles_before = decoder.remaining_handles();
28530            let (ordinal, inlined, num_bytes, num_handles) =
28531                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28532
28533            let member_inline_size = match ordinal {
28534                1 => <ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28535                2 => <SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28536                3 => <ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28537                4 => <CollectionRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28538                5 => <FrameworkRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28539                6 => <CapabilityRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28540                7 => <DebugRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28541                8 => <VoidRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28542                9 => <EnvironmentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
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 Ref::Parent(_) = self {
28562                        // Do nothing, read the value into the object
28563                    } else {
28564                        // Initialize `self` to the right variant
28565                        *self = Ref::Parent(fidl::new_empty!(ParentRef, D));
28566                    }
28567                    #[allow(irrefutable_let_patterns)]
28568                    if let Ref::Parent(ref mut val) = self {
28569                        fidl::decode!(ParentRef, D, val, decoder, _inner_offset, depth)?;
28570                    } else {
28571                        unreachable!()
28572                    }
28573                }
28574                2 => {
28575                    #[allow(irrefutable_let_patterns)]
28576                    if let Ref::Self_(_) = self {
28577                        // Do nothing, read the value into the object
28578                    } else {
28579                        // Initialize `self` to the right variant
28580                        *self = Ref::Self_(fidl::new_empty!(SelfRef, D));
28581                    }
28582                    #[allow(irrefutable_let_patterns)]
28583                    if let Ref::Self_(ref mut val) = self {
28584                        fidl::decode!(SelfRef, D, val, decoder, _inner_offset, depth)?;
28585                    } else {
28586                        unreachable!()
28587                    }
28588                }
28589                3 => {
28590                    #[allow(irrefutable_let_patterns)]
28591                    if let Ref::Child(_) = self {
28592                        // Do nothing, read the value into the object
28593                    } else {
28594                        // Initialize `self` to the right variant
28595                        *self = Ref::Child(fidl::new_empty!(ChildRef, D));
28596                    }
28597                    #[allow(irrefutable_let_patterns)]
28598                    if let Ref::Child(ref mut val) = self {
28599                        fidl::decode!(ChildRef, D, val, decoder, _inner_offset, depth)?;
28600                    } else {
28601                        unreachable!()
28602                    }
28603                }
28604                4 => {
28605                    #[allow(irrefutable_let_patterns)]
28606                    if let Ref::Collection(_) = self {
28607                        // Do nothing, read the value into the object
28608                    } else {
28609                        // Initialize `self` to the right variant
28610                        *self = Ref::Collection(fidl::new_empty!(CollectionRef, D));
28611                    }
28612                    #[allow(irrefutable_let_patterns)]
28613                    if let Ref::Collection(ref mut val) = self {
28614                        fidl::decode!(CollectionRef, D, val, decoder, _inner_offset, depth)?;
28615                    } else {
28616                        unreachable!()
28617                    }
28618                }
28619                5 => {
28620                    #[allow(irrefutable_let_patterns)]
28621                    if let Ref::Framework(_) = self {
28622                        // Do nothing, read the value into the object
28623                    } else {
28624                        // Initialize `self` to the right variant
28625                        *self = Ref::Framework(fidl::new_empty!(FrameworkRef, D));
28626                    }
28627                    #[allow(irrefutable_let_patterns)]
28628                    if let Ref::Framework(ref mut val) = self {
28629                        fidl::decode!(FrameworkRef, D, val, decoder, _inner_offset, depth)?;
28630                    } else {
28631                        unreachable!()
28632                    }
28633                }
28634                6 => {
28635                    #[allow(irrefutable_let_patterns)]
28636                    if let Ref::Capability(_) = self {
28637                        // Do nothing, read the value into the object
28638                    } else {
28639                        // Initialize `self` to the right variant
28640                        *self = Ref::Capability(fidl::new_empty!(CapabilityRef, D));
28641                    }
28642                    #[allow(irrefutable_let_patterns)]
28643                    if let Ref::Capability(ref mut val) = self {
28644                        fidl::decode!(CapabilityRef, D, val, decoder, _inner_offset, depth)?;
28645                    } else {
28646                        unreachable!()
28647                    }
28648                }
28649                7 => {
28650                    #[allow(irrefutable_let_patterns)]
28651                    if let Ref::Debug(_) = self {
28652                        // Do nothing, read the value into the object
28653                    } else {
28654                        // Initialize `self` to the right variant
28655                        *self = Ref::Debug(fidl::new_empty!(DebugRef, D));
28656                    }
28657                    #[allow(irrefutable_let_patterns)]
28658                    if let Ref::Debug(ref mut val) = self {
28659                        fidl::decode!(DebugRef, D, val, decoder, _inner_offset, depth)?;
28660                    } else {
28661                        unreachable!()
28662                    }
28663                }
28664                8 => {
28665                    #[allow(irrefutable_let_patterns)]
28666                    if let Ref::VoidType(_) = self {
28667                        // Do nothing, read the value into the object
28668                    } else {
28669                        // Initialize `self` to the right variant
28670                        *self = Ref::VoidType(fidl::new_empty!(VoidRef, D));
28671                    }
28672                    #[allow(irrefutable_let_patterns)]
28673                    if let Ref::VoidType(ref mut val) = self {
28674                        fidl::decode!(VoidRef, D, val, decoder, _inner_offset, depth)?;
28675                    } else {
28676                        unreachable!()
28677                    }
28678                }
28679                9 => {
28680                    #[allow(irrefutable_let_patterns)]
28681                    if let Ref::Environment(_) = self {
28682                        // Do nothing, read the value into the object
28683                    } else {
28684                        // Initialize `self` to the right variant
28685                        *self = Ref::Environment(fidl::new_empty!(EnvironmentRef, D));
28686                    }
28687                    #[allow(irrefutable_let_patterns)]
28688                    if let Ref::Environment(ref mut val) = self {
28689                        fidl::decode!(EnvironmentRef, 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 = Ref::__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 Use {
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 Use {
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<Use, D> for &Use {
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::<Use>(offset);
28742            encoder.write_num::<u64>(self.ordinal(), offset);
28743            match self {
28744                Use::Service(ref val) => fidl::encoding::encode_in_envelope::<UseService, D>(
28745                    <UseService as fidl::encoding::ValueTypeMarker>::borrow(val),
28746                    encoder,
28747                    offset + 8,
28748                    _depth,
28749                ),
28750                Use::Protocol(ref val) => fidl::encoding::encode_in_envelope::<UseProtocol, D>(
28751                    <UseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
28752                    encoder,
28753                    offset + 8,
28754                    _depth,
28755                ),
28756                Use::Directory(ref val) => fidl::encoding::encode_in_envelope::<UseDirectory, D>(
28757                    <UseDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
28758                    encoder,
28759                    offset + 8,
28760                    _depth,
28761                ),
28762                Use::Storage(ref val) => fidl::encoding::encode_in_envelope::<UseStorage, D>(
28763                    <UseStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
28764                    encoder,
28765                    offset + 8,
28766                    _depth,
28767                ),
28768                Use::EventStream(ref val) => {
28769                    fidl::encoding::encode_in_envelope::<UseEventStream, D>(
28770                        <UseEventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
28771                        encoder,
28772                        offset + 8,
28773                        _depth,
28774                    )
28775                }
28776                Use::Runner(ref val) => fidl::encoding::encode_in_envelope::<UseRunner, D>(
28777                    <UseRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
28778                    encoder,
28779                    offset + 8,
28780                    _depth,
28781                ),
28782                Use::Config(ref val) => fidl::encoding::encode_in_envelope::<UseConfiguration, D>(
28783                    <UseConfiguration as fidl::encoding::ValueTypeMarker>::borrow(val),
28784                    encoder,
28785                    offset + 8,
28786                    _depth,
28787                ),
28788                Use::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<UseDictionary, D>(
28789                    <UseDictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
28790                    encoder,
28791                    offset + 8,
28792                    _depth,
28793                ),
28794                Use::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
28795            }
28796        }
28797    }
28798
28799    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Use {
28800        #[inline(always)]
28801        fn new_empty() -> Self {
28802            Self::__SourceBreaking { unknown_ordinal: 0 }
28803        }
28804
28805        #[inline]
28806        unsafe fn decode(
28807            &mut self,
28808            decoder: &mut fidl::encoding::Decoder<'_, D>,
28809            offset: usize,
28810            mut depth: fidl::encoding::Depth,
28811        ) -> fidl::Result<()> {
28812            decoder.debug_check_bounds::<Self>(offset);
28813            #[allow(unused_variables)]
28814            let next_out_of_line = decoder.next_out_of_line();
28815            let handles_before = decoder.remaining_handles();
28816            let (ordinal, inlined, num_bytes, num_handles) =
28817                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
28818
28819            let member_inline_size = match ordinal {
28820                1 => <UseService as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28821                2 => <UseProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28822                3 => <UseDirectory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28823                4 => <UseStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28824                7 => <UseEventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28825                8 => <UseRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28826                9 => <UseConfiguration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28827                10 => <UseDictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
28828                0 => return Err(fidl::Error::UnknownUnionTag),
28829                _ => num_bytes as usize,
28830            };
28831
28832            if inlined != (member_inline_size <= 4) {
28833                return Err(fidl::Error::InvalidInlineBitInEnvelope);
28834            }
28835            let _inner_offset;
28836            if inlined {
28837                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
28838                _inner_offset = offset + 8;
28839            } else {
28840                depth.increment()?;
28841                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28842            }
28843            match ordinal {
28844                1 => {
28845                    #[allow(irrefutable_let_patterns)]
28846                    if let Use::Service(_) = self {
28847                        // Do nothing, read the value into the object
28848                    } else {
28849                        // Initialize `self` to the right variant
28850                        *self = Use::Service(fidl::new_empty!(UseService, D));
28851                    }
28852                    #[allow(irrefutable_let_patterns)]
28853                    if let Use::Service(ref mut val) = self {
28854                        fidl::decode!(UseService, D, val, decoder, _inner_offset, depth)?;
28855                    } else {
28856                        unreachable!()
28857                    }
28858                }
28859                2 => {
28860                    #[allow(irrefutable_let_patterns)]
28861                    if let Use::Protocol(_) = self {
28862                        // Do nothing, read the value into the object
28863                    } else {
28864                        // Initialize `self` to the right variant
28865                        *self = Use::Protocol(fidl::new_empty!(UseProtocol, D));
28866                    }
28867                    #[allow(irrefutable_let_patterns)]
28868                    if let Use::Protocol(ref mut val) = self {
28869                        fidl::decode!(UseProtocol, D, val, decoder, _inner_offset, depth)?;
28870                    } else {
28871                        unreachable!()
28872                    }
28873                }
28874                3 => {
28875                    #[allow(irrefutable_let_patterns)]
28876                    if let Use::Directory(_) = self {
28877                        // Do nothing, read the value into the object
28878                    } else {
28879                        // Initialize `self` to the right variant
28880                        *self = Use::Directory(fidl::new_empty!(UseDirectory, D));
28881                    }
28882                    #[allow(irrefutable_let_patterns)]
28883                    if let Use::Directory(ref mut val) = self {
28884                        fidl::decode!(UseDirectory, D, val, decoder, _inner_offset, depth)?;
28885                    } else {
28886                        unreachable!()
28887                    }
28888                }
28889                4 => {
28890                    #[allow(irrefutable_let_patterns)]
28891                    if let Use::Storage(_) = self {
28892                        // Do nothing, read the value into the object
28893                    } else {
28894                        // Initialize `self` to the right variant
28895                        *self = Use::Storage(fidl::new_empty!(UseStorage, D));
28896                    }
28897                    #[allow(irrefutable_let_patterns)]
28898                    if let Use::Storage(ref mut val) = self {
28899                        fidl::decode!(UseStorage, D, val, decoder, _inner_offset, depth)?;
28900                    } else {
28901                        unreachable!()
28902                    }
28903                }
28904                7 => {
28905                    #[allow(irrefutable_let_patterns)]
28906                    if let Use::EventStream(_) = self {
28907                        // Do nothing, read the value into the object
28908                    } else {
28909                        // Initialize `self` to the right variant
28910                        *self = Use::EventStream(fidl::new_empty!(UseEventStream, D));
28911                    }
28912                    #[allow(irrefutable_let_patterns)]
28913                    if let Use::EventStream(ref mut val) = self {
28914                        fidl::decode!(UseEventStream, D, val, decoder, _inner_offset, depth)?;
28915                    } else {
28916                        unreachable!()
28917                    }
28918                }
28919                8 => {
28920                    #[allow(irrefutable_let_patterns)]
28921                    if let Use::Runner(_) = self {
28922                        // Do nothing, read the value into the object
28923                    } else {
28924                        // Initialize `self` to the right variant
28925                        *self = Use::Runner(fidl::new_empty!(UseRunner, D));
28926                    }
28927                    #[allow(irrefutable_let_patterns)]
28928                    if let Use::Runner(ref mut val) = self {
28929                        fidl::decode!(UseRunner, D, val, decoder, _inner_offset, depth)?;
28930                    } else {
28931                        unreachable!()
28932                    }
28933                }
28934                9 => {
28935                    #[allow(irrefutable_let_patterns)]
28936                    if let Use::Config(_) = self {
28937                        // Do nothing, read the value into the object
28938                    } else {
28939                        // Initialize `self` to the right variant
28940                        *self = Use::Config(fidl::new_empty!(UseConfiguration, D));
28941                    }
28942                    #[allow(irrefutable_let_patterns)]
28943                    if let Use::Config(ref mut val) = self {
28944                        fidl::decode!(UseConfiguration, D, val, decoder, _inner_offset, depth)?;
28945                    } else {
28946                        unreachable!()
28947                    }
28948                }
28949                10 => {
28950                    #[allow(irrefutable_let_patterns)]
28951                    if let Use::Dictionary(_) = self {
28952                        // Do nothing, read the value into the object
28953                    } else {
28954                        // Initialize `self` to the right variant
28955                        *self = Use::Dictionary(fidl::new_empty!(UseDictionary, D));
28956                    }
28957                    #[allow(irrefutable_let_patterns)]
28958                    if let Use::Dictionary(ref mut val) = self {
28959                        fidl::decode!(UseDictionary, D, val, decoder, _inner_offset, depth)?;
28960                    } else {
28961                        unreachable!()
28962                    }
28963                }
28964                #[allow(deprecated)]
28965                ordinal => {
28966                    for _ in 0..num_handles {
28967                        decoder.drop_next_handle()?;
28968                    }
28969                    *self = Use::__SourceBreaking { unknown_ordinal: ordinal };
28970                }
28971            }
28972            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
28973                return Err(fidl::Error::InvalidNumBytesInEnvelope);
28974            }
28975            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28976                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28977            }
28978            Ok(())
28979        }
28980    }
28981}