fidl_fuchsia_component_test_common/
fidl_fuchsia_component_test_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
11pub const LOCAL_COMPONENT_NAME_KEY: &str = "LOCAL_COMPONENT_NAME";
12
13/// Maximum number of entries allowed in one call of `Realm.ReadOnlyDirectory`.
14pub const MAX_DIRECTORY_ENTRIES: u32 = 1024;
15
16/// Errors that may be returned by the `Realm` and `Builder` protocols.
17#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
18pub enum RealmBuilderError {
19    /// Child cannot be added to the realm, as there is already a child in the
20    /// realm with that name.
21    ChildAlreadyExists,
22    /// A legacy component URL was given to `AddChild`, or a modern component
23    /// url was given to `AddLegacyChild`.
24    InvalidManifestExtension,
25    /// A component declaration failed validation.
26    InvalidComponentDecl,
27    /// The referenced child does not exist.
28    NoSuchChild,
29    /// The component declaration for the referenced child cannot be viewed nor
30    /// manipulated by RealmBuilder, because the child was added to the realm
31    /// using an URL that was neither a fragment-only nor a legacy URL.
32    ChildDeclNotVisible,
33    /// The source does not exist.
34    NoSuchSource,
35    /// A target does not exist.
36    NoSuchTarget,
37    /// The `capabilities` field is empty.
38    CapabilitiesEmpty,
39    /// The `targets` field is empty.
40    TargetsEmpty,
41    /// The `from` value is equal to one of the elements in `to`.
42    SourceAndTargetMatch,
43    /// The test package does not contain the component declaration referenced
44    /// by a fragment-only component URL.
45    DeclNotFound,
46    /// Encountered an I/O error when attempting to read a component declaration
47    /// referenced by a fragment-only component URL from the test package.
48    DeclReadError,
49    /// The `Build` function has been called multiple times on this channel.
50    BuildAlreadyCalled,
51    /// A capability is invalid. This may occur if a required field is empty or
52    /// if an unsupported type is received.
53    CapabilityInvalid,
54    /// The handle the client provided for the child realm is not usable.
55    InvalidChildRealmHandle,
56    /// `ReplaceComponentDecl` was called on a legacy or local component with a
57    /// program declaration that did not match the one from the old component
58    /// declaration. This could render a legacy or local component
59    /// non-functional, and is disallowed.
60    ImmutableProgram,
61    /// The URL provided to `RealmBuilderFactory.CreateFromRelativeURL` is not a
62    /// fragment-only component URL.
63    UrlIsNotRelative,
64    /// The handle the client provided for the test's pkg directory is not
65    /// usable.
66    InvalidPkgDirHandle,
67    /// The component does not have a config schema defined. Attempting to
68    /// set a config value is not allowed.
69    NoConfigSchema,
70    /// The component's config schema does not have a field with that name.
71    NoSuchConfigField,
72    /// A config value is invalid. This may mean a type mismatch or an issue
73    /// with constraints like string/vector length.
74    ConfigValueInvalid,
75    /// A config value cannot be set because the realm has not chosen its override
76    /// policy.
77    ConfigOverrideUnsupported,
78    #[doc(hidden)]
79    __SourceBreaking { unknown_ordinal: u32 },
80}
81
82/// Pattern that matches an unknown `RealmBuilderError` member.
83#[macro_export]
84macro_rules! RealmBuilderErrorUnknown {
85    () => {
86        _
87    };
88}
89
90impl RealmBuilderError {
91    #[inline]
92    pub fn from_primitive(prim: u32) -> Option<Self> {
93        match prim {
94            0 => Some(Self::ChildAlreadyExists),
95            1 => Some(Self::InvalidManifestExtension),
96            2 => Some(Self::InvalidComponentDecl),
97            3 => Some(Self::NoSuchChild),
98            4 => Some(Self::ChildDeclNotVisible),
99            5 => Some(Self::NoSuchSource),
100            6 => Some(Self::NoSuchTarget),
101            7 => Some(Self::CapabilitiesEmpty),
102            8 => Some(Self::TargetsEmpty),
103            9 => Some(Self::SourceAndTargetMatch),
104            10 => Some(Self::DeclNotFound),
105            11 => Some(Self::DeclReadError),
106            12 => Some(Self::BuildAlreadyCalled),
107            13 => Some(Self::CapabilityInvalid),
108            14 => Some(Self::InvalidChildRealmHandle),
109            15 => Some(Self::ImmutableProgram),
110            16 => Some(Self::UrlIsNotRelative),
111            17 => Some(Self::InvalidPkgDirHandle),
112            18 => Some(Self::NoConfigSchema),
113            19 => Some(Self::NoSuchConfigField),
114            20 => Some(Self::ConfigValueInvalid),
115            21 => Some(Self::ConfigOverrideUnsupported),
116            _ => None,
117        }
118    }
119
120    #[inline]
121    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
122        match prim {
123            0 => Self::ChildAlreadyExists,
124            1 => Self::InvalidManifestExtension,
125            2 => Self::InvalidComponentDecl,
126            3 => Self::NoSuchChild,
127            4 => Self::ChildDeclNotVisible,
128            5 => Self::NoSuchSource,
129            6 => Self::NoSuchTarget,
130            7 => Self::CapabilitiesEmpty,
131            8 => Self::TargetsEmpty,
132            9 => Self::SourceAndTargetMatch,
133            10 => Self::DeclNotFound,
134            11 => Self::DeclReadError,
135            12 => Self::BuildAlreadyCalled,
136            13 => Self::CapabilityInvalid,
137            14 => Self::InvalidChildRealmHandle,
138            15 => Self::ImmutableProgram,
139            16 => Self::UrlIsNotRelative,
140            17 => Self::InvalidPkgDirHandle,
141            18 => Self::NoConfigSchema,
142            19 => Self::NoSuchConfigField,
143            20 => Self::ConfigValueInvalid,
144            21 => Self::ConfigOverrideUnsupported,
145            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
146        }
147    }
148
149    #[inline]
150    pub fn unknown() -> Self {
151        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
152    }
153
154    #[inline]
155    pub const fn into_primitive(self) -> u32 {
156        match self {
157            Self::ChildAlreadyExists => 0,
158            Self::InvalidManifestExtension => 1,
159            Self::InvalidComponentDecl => 2,
160            Self::NoSuchChild => 3,
161            Self::ChildDeclNotVisible => 4,
162            Self::NoSuchSource => 5,
163            Self::NoSuchTarget => 6,
164            Self::CapabilitiesEmpty => 7,
165            Self::TargetsEmpty => 8,
166            Self::SourceAndTargetMatch => 9,
167            Self::DeclNotFound => 10,
168            Self::DeclReadError => 11,
169            Self::BuildAlreadyCalled => 12,
170            Self::CapabilityInvalid => 13,
171            Self::InvalidChildRealmHandle => 14,
172            Self::ImmutableProgram => 15,
173            Self::UrlIsNotRelative => 16,
174            Self::InvalidPkgDirHandle => 17,
175            Self::NoConfigSchema => 18,
176            Self::NoSuchConfigField => 19,
177            Self::ConfigValueInvalid => 20,
178            Self::ConfigOverrideUnsupported => 21,
179            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
180        }
181    }
182
183    #[inline]
184    pub fn is_unknown(&self) -> bool {
185        match self {
186            Self::__SourceBreaking { unknown_ordinal: _ } => true,
187            _ => false,
188        }
189    }
190}
191
192#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
193pub struct BuilderBuildResponse {
194    pub root_component_url: String,
195}
196
197impl fidl::Persistable for BuilderBuildResponse {}
198
199#[derive(Clone, Debug, PartialEq)]
200pub struct RealmAddCapabilityRequest {
201    pub capability: fidl_fuchsia_component_decl::Capability,
202}
203
204impl fidl::Persistable for RealmAddCapabilityRequest {}
205
206#[derive(Clone, Debug, PartialEq)]
207pub struct RealmAddChildFromDeclRequest {
208    /// The name of the child that is being added.
209    pub name: String,
210    /// The component's declaration.
211    pub decl: fidl_fuchsia_component_decl::Component,
212    /// Additional properties for the child.
213    pub options: ChildOptions,
214}
215
216impl fidl::Persistable for RealmAddChildFromDeclRequest {}
217
218#[derive(Clone, Debug, PartialEq)]
219pub struct RealmAddChildRequest {
220    /// The name of the child that is being added.
221    pub name: String,
222    /// The component's URL.
223    pub url: String,
224    /// Additional properties for the child.
225    pub options: ChildOptions,
226}
227
228impl fidl::Persistable for RealmAddChildRequest {}
229
230#[derive(Clone, Debug, PartialEq)]
231pub struct RealmAddCollectionRequest {
232    pub collection: fidl_fuchsia_component_decl::Collection,
233}
234
235impl fidl::Persistable for RealmAddCollectionRequest {}
236
237#[derive(Clone, Debug, PartialEq)]
238pub struct RealmAddEnvironmentRequest {
239    pub environment: fidl_fuchsia_component_decl::Environment,
240}
241
242impl fidl::Persistable for RealmAddEnvironmentRequest {}
243
244#[derive(Clone, Debug, PartialEq)]
245pub struct RealmAddLocalChildRequest {
246    /// The name of the child that is being added.
247    pub name: String,
248    /// Additional properties for the child.
249    pub options: ChildOptions,
250}
251
252impl fidl::Persistable for RealmAddLocalChildRequest {}
253
254#[derive(Clone, Debug, PartialEq)]
255pub struct RealmAddRouteRequest {
256    /// The capabilities that are to be routed.
257    pub capabilities: Vec<Capability>,
258    /// The location where the elements of `capabilities` are available.
259    pub from: fidl_fuchsia_component_decl::Ref,
260    /// The locations that should be able to access `capabilities`.
261    pub to: Vec<fidl_fuchsia_component_decl::Ref>,
262}
263
264impl fidl::Persistable for RealmAddRouteRequest {}
265
266#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
267pub struct RealmGetComponentDeclRequest {
268    /// The name of the component whose declaration is being retrieved.
269    pub name: String,
270}
271
272impl fidl::Persistable for RealmGetComponentDeclRequest {}
273
274#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
275pub struct RealmInitMutableConfigFromPackageRequest {
276    pub name: String,
277}
278
279impl fidl::Persistable for RealmInitMutableConfigFromPackageRequest {}
280
281#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
282pub struct RealmInitMutableConfigToEmptyRequest {
283    pub name: String,
284}
285
286impl fidl::Persistable for RealmInitMutableConfigToEmptyRequest {}
287
288#[derive(Clone, Debug, PartialEq)]
289pub struct RealmReplaceComponentDeclRequest {
290    /// The name of the component whose declaration is being replaced.
291    pub name: String,
292    /// The new component declaration for `name`.
293    pub component_decl: fidl_fuchsia_component_decl::Component,
294}
295
296impl fidl::Persistable for RealmReplaceComponentDeclRequest {}
297
298#[derive(Clone, Debug, PartialEq)]
299pub struct RealmReplaceRealmDeclRequest {
300    /// The new component declaration for this realm.
301    pub component_decl: fidl_fuchsia_component_decl::Component,
302}
303
304impl fidl::Persistable for RealmReplaceRealmDeclRequest {}
305
306#[derive(Clone, Debug, PartialEq)]
307pub struct RealmSetConfigValueRequest {
308    /// The name of the component whose config value is being replaced.
309    pub name: String,
310    /// The key of the config field whose value is being replaced.
311    pub key: String,
312    /// The config value being replaced.
313    pub value: fidl_fuchsia_component_decl::ConfigValueSpec,
314}
315
316impl fidl::Persistable for RealmSetConfigValueRequest {}
317
318#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
319pub struct RealmUseNestedComponentManagerRequest {
320    pub component_manager_relative_url: String,
321}
322
323impl fidl::Persistable for RealmUseNestedComponentManagerRequest {}
324
325#[derive(Clone, Debug, PartialEq)]
326pub struct RealmGetComponentDeclResponse {
327    pub component_decl: fidl_fuchsia_component_decl::Component,
328}
329
330impl fidl::Persistable for RealmGetComponentDeclResponse {}
331
332#[derive(Clone, Debug, PartialEq)]
333pub struct RealmGetRealmDeclResponse {
334    pub component_decl: fidl_fuchsia_component_decl::Component,
335}
336
337impl fidl::Persistable for RealmGetRealmDeclResponse {}
338
339/// Properties that may be set on a child when it is added to a realm.
340#[derive(Clone, Debug, Default, PartialEq)]
341pub struct ChildOptions {
342    /// For information on this type, see
343    /// https://fuchsia.dev/go/components/declaration#StartupMode.
344    /// Defaults to `LAZY`.
345    pub startup: Option<fidl_fuchsia_component_decl::StartupMode>,
346    /// Specify a custom environment for the child to run under.
347    pub environment: Option<String>,
348    /// For information on this type, see
349    /// https://fuchsia.dev/go/components/declaration#OnTerminate.
350    /// Defaults to `NONE`.
351    pub on_terminate: Option<fidl_fuchsia_component_decl::OnTerminate>,
352    /// Structured Configuration overrides to be applied to the child.
353    /// Only keys declared by the child component as overridable by parent may
354    /// be provided. For information on overrides, see
355    /// [fuchsia.component.decl/ConfigOverride].
356    pub config_overrides: Option<Vec<fidl_fuchsia_component_decl::ConfigOverride>>,
357    #[doc(hidden)]
358    pub __source_breaking: fidl::marker::SourceBreaking,
359}
360
361impl fidl::Persistable for ChildOptions {}
362
363/// A configuration capability
364#[derive(Clone, Debug, Default, PartialEq)]
365pub struct Config {
366    /// The name of the capability.
367    pub name: Option<String>,
368    /// A rename of the capability, which can be set when routing to another
369    /// component. This field is optional.
370    pub as_: Option<String>,
371    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
372    /// component.
373    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
374    #[doc(hidden)]
375    pub __source_breaking: fidl::marker::SourceBreaking,
376}
377
378impl fidl::Persistable for Config {}
379
380/// A dictionary capability
381#[derive(Clone, Debug, Default, PartialEq)]
382pub struct Dictionary {
383    /// The name of the dictionary.
384    pub name: Option<String>,
385    /// A rename of the dictionary, which can be set when routing to another
386    /// component. This field is optional.
387    pub as_: Option<String>,
388    /// For information on this type, see
389    /// https://fuchsia.dev/go/components/declaration#DependencyType.
390    /// This field is optional and defaults to `STRONG`.
391    pub type_: Option<fidl_fuchsia_component_decl::DependencyType>,
392    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
393    /// component.
394    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
395    /// Optional. If set, the path to the dictionary routed by `from` which contains
396    /// the capability.
397    pub from_dictionary: Option<String>,
398    #[doc(hidden)]
399    pub __source_breaking: fidl::marker::SourceBreaking,
400}
401
402impl fidl::Persistable for Dictionary {}
403
404/// A directory capability.
405#[derive(Clone, Debug, Default, PartialEq)]
406pub struct Directory {
407    /// The name of the capability. This is not the path of the directory.
408    /// Instead it is a name used for routing.
409    pub name: Option<String>,
410    /// A rename of the capability, which can be set when routing to another
411    /// component. This field is optional.
412    pub as_: Option<String>,
413    /// For information on this type, see
414    /// https://fuchsia.dev/go/components/declaration#DependencyType.
415    /// This field is optional and defaults to `STRONG`.
416    pub type_: Option<fidl_fuchsia_component_decl::DependencyType>,
417    /// The subdirectory of this directory to offer instead of the root. For
418    /// example, if you set `bar/baz` as the subdir of `foo`, then `bar/baz`
419    /// will be the root of the target's `foo`. This field is optional.
420    pub subdir: Option<String>,
421    /// The maximum rights that can be set by a component using this directory.
422    /// This field is required if it is being routed to a local component,
423    /// otherwise, it is optional.
424    pub rights: Option<fidl_fuchsia_io::Operations>,
425    /// The path in which to install the directory. The path should have a
426    /// leading slash but no trailing slash, e.g. `/config/data`. This field
427    /// is required.
428    pub path: Option<String>,
429    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
430    /// component.
431    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
432    /// Optional. If set, the path to the dictionary routed by `from` which contains
433    /// the capability.
434    pub from_dictionary: Option<String>,
435    #[doc(hidden)]
436    pub __source_breaking: fidl::marker::SourceBreaking,
437}
438
439impl fidl::Persistable for Directory {}
440
441/// An event capability
442#[derive(Clone, Debug, Default, PartialEq)]
443pub struct Event {
444    /// The name of the capability.
445    pub name: Option<String>,
446    /// A rename of the capability, which can be set when routing to another
447    /// component. This field is optional.
448    pub as_: Option<String>,
449    /// A filter to apply on the event.
450    pub filter: Option<fidl_fuchsia_data::Dictionary>,
451    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
452    /// component.
453    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
454    #[doc(hidden)]
455    pub __source_breaking: fidl::marker::SourceBreaking,
456}
457
458impl fidl::Persistable for Event {}
459
460/// An event_stream capability
461#[derive(Clone, Debug, Default, PartialEq)]
462pub struct EventStream {
463    /// The name of the capability.
464    pub name: Option<String>,
465    /// A rename of the capability, which can be set when routing to another
466    pub as_: Option<String>,
467    /// Sets the path in which the event_stream is installed.
468    pub path: Option<String>,
469    /// A filter to apply on the event.
470    pub filter: Option<fidl_fuchsia_data::Dictionary>,
471    /// A list of objects underneath this component to downscope the event to.
472    /// Example: #my_child_component, #my_child_collection.
473    pub scope: Option<Vec<fidl_fuchsia_component_decl::Ref>>,
474    #[doc(hidden)]
475    pub __source_breaking: fidl::marker::SourceBreaking,
476}
477
478impl fidl::Persistable for EventStream {}
479
480/// A protocol capability
481#[derive(Clone, Debug, Default, PartialEq)]
482pub struct Protocol {
483    /// The name of the capability. This is usually the name of the FIDL
484    /// protocol, e.g. `fuchsia.logger.LogSink`. If path is not set, the
485    /// protocol will be installed in a target component's namespace at
486    /// `/svc/{name}`.
487    pub name: Option<String>,
488    /// A rename of the capability, which can be set when routing to another
489    /// component. This field is optional.
490    pub as_: Option<String>,
491    /// For information on this type, see
492    /// https://fuchsia.dev/go/components/declaration#DependencyType.
493    /// This field is optional and defaults to `STRONG`.
494    pub type_: Option<fidl_fuchsia_component_decl::DependencyType>,
495    /// Override the path in which the protocol is installed. Instead of
496    /// `/svc/{name}`, this value will be used. Path should begin with a
497    /// leading slash and omit a trailing slash, e.g.
498    /// `/foo/fuchsia.logger.LogSink`. This field is optional.
499    pub path: Option<String>,
500    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
501    /// component.
502    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
503    /// Optional. If set, the path to the dictionary routed by `from` which contains
504    /// the capability.
505    pub from_dictionary: Option<String>,
506    #[doc(hidden)]
507    pub __source_breaking: fidl::marker::SourceBreaking,
508}
509
510impl fidl::Persistable for Protocol {}
511
512/// A resolver capability
513#[derive(Clone, Debug, Default, PartialEq)]
514pub struct Resolver {
515    /// The name of the resolver.
516    pub name: Option<String>,
517    /// A rename of the resolver, which can be set when routing to another
518    /// component. This field is optional.
519    pub as_: Option<String>,
520    /// Override the path in which the resolver is installed. Instead of
521    /// `/svc/{name}`, this value will be used. Path should begin with a
522    /// leading slash and omit a trailing slash, e.g.
523    /// `/foo/fuchsia.logger.LogSink`. This field is optional.
524    pub path: Option<String>,
525    /// Optional. If set, the path to the dictionary routed by `from` which contains
526    /// the capability.
527    pub from_dictionary: Option<String>,
528    #[doc(hidden)]
529    pub __source_breaking: fidl::marker::SourceBreaking,
530}
531
532impl fidl::Persistable for Resolver {}
533
534/// A runner capability
535#[derive(Clone, Debug, Default, PartialEq)]
536pub struct Runner {
537    /// The name of the runner.
538    pub name: Option<String>,
539    /// A rename of the runner, which can be set when routing to another
540    /// component. This field is optional.
541    pub as_: Option<String>,
542    /// Override the path in which the runner is installed. Instead of
543    /// `/svc/{name}`, this value will be used. Path should begin with a
544    /// leading slash and omit a trailing slash, e.g.
545    /// `/foo/fuchsia.logger.LogSink`. This field is optional.
546    pub path: Option<String>,
547    /// Optional. If set, the path to the dictionary routed by `from` which contains
548    /// the capability.
549    pub from_dictionary: Option<String>,
550    #[doc(hidden)]
551    pub __source_breaking: fidl::marker::SourceBreaking,
552}
553
554impl fidl::Persistable for Runner {}
555
556/// A service capability
557#[derive(Clone, Debug, Default, PartialEq)]
558pub struct Service {
559    /// The name of the capability. This is usually the name of the FIDL
560    /// service, e.g. `fuchsia.echo.EchoService`. If path is not set, the
561    /// service will be installed in a target component's namespace at
562    /// `/svc/{name}`.
563    pub name: Option<String>,
564    /// A rename of the capability, which can be set when routing to another
565    /// component. This field is optional.
566    pub as_: Option<String>,
567    /// Override the path in which the service is installed. Instead of
568    /// `/svc/{name}`, this value will be used. Path should begin with a
569    /// leading slash and omit a trailing slash, e.g.
570    /// `/foo/fuchsia.echo.EchoService`. This field is optional.
571    pub path: Option<String>,
572    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
573    /// component.
574    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
575    /// Optional. If set, the path to the dictionary routed by `from` which contains
576    /// the capability.
577    pub from_dictionary: Option<String>,
578    #[doc(hidden)]
579    pub __source_breaking: fidl::marker::SourceBreaking,
580}
581
582impl fidl::Persistable for Service {}
583
584/// A storage capability
585#[derive(Clone, Debug, Default, PartialEq)]
586pub struct Storage {
587    /// The name of the capability. This is not the path of the directory.
588    /// Instead it is a name used for routing.
589    pub name: Option<String>,
590    /// A rename of the capability, which can be set when routing to another
591    /// component. This field is optional.
592    pub as_: Option<String>,
593    /// The path in which to install the directory. The path should have a
594    /// leading slash but no trailing slash, e.g. `/config/data`. This field
595    /// is required.
596    pub path: Option<String>,
597    /// Optional. Cannot be set to `SameAsTarget` if `to` contains a local
598    /// component.
599    pub availability: Option<fidl_fuchsia_component_decl::Availability>,
600    #[doc(hidden)]
601    pub __source_breaking: fidl::marker::SourceBreaking,
602}
603
604impl fidl::Persistable for Storage {}
605
606/// A capability that can be routed around a realm using `AddRoute`.
607///
608/// Will be renamed to `Capability` once the other definition under this name
609/// earlier in this file is removed.
610#[derive(Clone, Debug)]
611pub enum Capability {
612    Protocol(Protocol),
613    Directory(Directory),
614    Storage(Storage),
615    Service(Service),
616    EventStream(EventStream),
617    Config(Config),
618    Dictionary(Dictionary),
619    Resolver(Resolver),
620    Runner(Runner),
621    #[doc(hidden)]
622    __SourceBreaking {
623        unknown_ordinal: u64,
624    },
625}
626
627/// Pattern that matches an unknown `Capability` member.
628#[macro_export]
629macro_rules! CapabilityUnknown {
630    () => {
631        _
632    };
633}
634
635// Custom PartialEq so that unknown variants are not equal to themselves.
636impl PartialEq for Capability {
637    fn eq(&self, other: &Self) -> bool {
638        match (self, other) {
639            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
640            (Self::Directory(x), Self::Directory(y)) => *x == *y,
641            (Self::Storage(x), Self::Storage(y)) => *x == *y,
642            (Self::Service(x), Self::Service(y)) => *x == *y,
643            (Self::EventStream(x), Self::EventStream(y)) => *x == *y,
644            (Self::Config(x), Self::Config(y)) => *x == *y,
645            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
646            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
647            (Self::Runner(x), Self::Runner(y)) => *x == *y,
648            _ => false,
649        }
650    }
651}
652
653impl Capability {
654    #[inline]
655    pub fn ordinal(&self) -> u64 {
656        match *self {
657            Self::Protocol(_) => 1,
658            Self::Directory(_) => 2,
659            Self::Storage(_) => 3,
660            Self::Service(_) => 4,
661            Self::EventStream(_) => 6,
662            Self::Config(_) => 7,
663            Self::Dictionary(_) => 8,
664            Self::Resolver(_) => 9,
665            Self::Runner(_) => 10,
666            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
667        }
668    }
669
670    #[inline]
671    pub fn unknown_variant_for_testing() -> Self {
672        Self::__SourceBreaking { unknown_ordinal: 0 }
673    }
674
675    #[inline]
676    pub fn is_unknown(&self) -> bool {
677        match self {
678            Self::__SourceBreaking { .. } => true,
679            _ => false,
680        }
681    }
682}
683
684impl fidl::Persistable for Capability {}
685
686mod internal {
687    use super::*;
688    unsafe impl fidl::encoding::TypeMarker for RealmBuilderError {
689        type Owned = Self;
690
691        #[inline(always)]
692        fn inline_align(_context: fidl::encoding::Context) -> usize {
693            std::mem::align_of::<u32>()
694        }
695
696        #[inline(always)]
697        fn inline_size(_context: fidl::encoding::Context) -> usize {
698            std::mem::size_of::<u32>()
699        }
700
701        #[inline(always)]
702        fn encode_is_copy() -> bool {
703            false
704        }
705
706        #[inline(always)]
707        fn decode_is_copy() -> bool {
708            false
709        }
710    }
711
712    impl fidl::encoding::ValueTypeMarker for RealmBuilderError {
713        type Borrowed<'a> = Self;
714        #[inline(always)]
715        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
716            *value
717        }
718    }
719
720    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
721        for RealmBuilderError
722    {
723        #[inline]
724        unsafe fn encode(
725            self,
726            encoder: &mut fidl::encoding::Encoder<'_, D>,
727            offset: usize,
728            _depth: fidl::encoding::Depth,
729        ) -> fidl::Result<()> {
730            encoder.debug_check_bounds::<Self>(offset);
731            encoder.write_num(self.into_primitive(), offset);
732            Ok(())
733        }
734    }
735
736    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RealmBuilderError {
737        #[inline(always)]
738        fn new_empty() -> Self {
739            Self::unknown()
740        }
741
742        #[inline]
743        unsafe fn decode(
744            &mut self,
745            decoder: &mut fidl::encoding::Decoder<'_, D>,
746            offset: usize,
747            _depth: fidl::encoding::Depth,
748        ) -> fidl::Result<()> {
749            decoder.debug_check_bounds::<Self>(offset);
750            let prim = decoder.read_num::<u32>(offset);
751
752            *self = Self::from_primitive_allow_unknown(prim);
753            Ok(())
754        }
755    }
756
757    impl fidl::encoding::ValueTypeMarker for BuilderBuildResponse {
758        type Borrowed<'a> = &'a Self;
759        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
760            value
761        }
762    }
763
764    unsafe impl fidl::encoding::TypeMarker for BuilderBuildResponse {
765        type Owned = Self;
766
767        #[inline(always)]
768        fn inline_align(_context: fidl::encoding::Context) -> usize {
769            8
770        }
771
772        #[inline(always)]
773        fn inline_size(_context: fidl::encoding::Context) -> usize {
774            16
775        }
776    }
777
778    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BuilderBuildResponse, D>
779        for &BuilderBuildResponse
780    {
781        #[inline]
782        unsafe fn encode(
783            self,
784            encoder: &mut fidl::encoding::Encoder<'_, D>,
785            offset: usize,
786            _depth: fidl::encoding::Depth,
787        ) -> fidl::Result<()> {
788            encoder.debug_check_bounds::<BuilderBuildResponse>(offset);
789            // Delegate to tuple encoding.
790            fidl::encoding::Encode::<BuilderBuildResponse, D>::encode(
791                (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
792                    &self.root_component_url,
793                ),),
794                encoder,
795                offset,
796                _depth,
797            )
798        }
799    }
800    unsafe impl<
801            D: fidl::encoding::ResourceDialect,
802            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
803        > fidl::encoding::Encode<BuilderBuildResponse, D> for (T0,)
804    {
805        #[inline]
806        unsafe fn encode(
807            self,
808            encoder: &mut fidl::encoding::Encoder<'_, D>,
809            offset: usize,
810            depth: fidl::encoding::Depth,
811        ) -> fidl::Result<()> {
812            encoder.debug_check_bounds::<BuilderBuildResponse>(offset);
813            // Zero out padding regions. There's no need to apply masks
814            // because the unmasked parts will be overwritten by fields.
815            // Write the fields.
816            self.0.encode(encoder, offset + 0, depth)?;
817            Ok(())
818        }
819    }
820
821    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuilderBuildResponse {
822        #[inline(always)]
823        fn new_empty() -> Self {
824            Self { root_component_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
825        }
826
827        #[inline]
828        unsafe fn decode(
829            &mut self,
830            decoder: &mut fidl::encoding::Decoder<'_, D>,
831            offset: usize,
832            _depth: fidl::encoding::Depth,
833        ) -> fidl::Result<()> {
834            decoder.debug_check_bounds::<Self>(offset);
835            // Verify that padding bytes are zero.
836            fidl::decode!(
837                fidl::encoding::BoundedString<4096>,
838                D,
839                &mut self.root_component_url,
840                decoder,
841                offset + 0,
842                _depth
843            )?;
844            Ok(())
845        }
846    }
847
848    impl fidl::encoding::ValueTypeMarker for RealmAddCapabilityRequest {
849        type Borrowed<'a> = &'a Self;
850        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
851            value
852        }
853    }
854
855    unsafe impl fidl::encoding::TypeMarker for RealmAddCapabilityRequest {
856        type Owned = Self;
857
858        #[inline(always)]
859        fn inline_align(_context: fidl::encoding::Context) -> usize {
860            8
861        }
862
863        #[inline(always)]
864        fn inline_size(_context: fidl::encoding::Context) -> usize {
865            16
866        }
867    }
868
869    unsafe impl<D: fidl::encoding::ResourceDialect>
870        fidl::encoding::Encode<RealmAddCapabilityRequest, D> for &RealmAddCapabilityRequest
871    {
872        #[inline]
873        unsafe fn encode(
874            self,
875            encoder: &mut fidl::encoding::Encoder<'_, D>,
876            offset: usize,
877            _depth: fidl::encoding::Depth,
878        ) -> fidl::Result<()> {
879            encoder.debug_check_bounds::<RealmAddCapabilityRequest>(offset);
880            // Delegate to tuple encoding.
881            fidl::encoding::Encode::<RealmAddCapabilityRequest, D>::encode(
882                (
883                    <fidl_fuchsia_component_decl::Capability as fidl::encoding::ValueTypeMarker>::borrow(&self.capability),
884                ),
885                encoder, offset, _depth
886            )
887        }
888    }
889    unsafe impl<
890            D: fidl::encoding::ResourceDialect,
891            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Capability, D>,
892        > fidl::encoding::Encode<RealmAddCapabilityRequest, D> for (T0,)
893    {
894        #[inline]
895        unsafe fn encode(
896            self,
897            encoder: &mut fidl::encoding::Encoder<'_, D>,
898            offset: usize,
899            depth: fidl::encoding::Depth,
900        ) -> fidl::Result<()> {
901            encoder.debug_check_bounds::<RealmAddCapabilityRequest>(offset);
902            // Zero out padding regions. There's no need to apply masks
903            // because the unmasked parts will be overwritten by fields.
904            // Write the fields.
905            self.0.encode(encoder, offset + 0, depth)?;
906            Ok(())
907        }
908    }
909
910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
911        for RealmAddCapabilityRequest
912    {
913        #[inline(always)]
914        fn new_empty() -> Self {
915            Self { capability: fidl::new_empty!(fidl_fuchsia_component_decl::Capability, D) }
916        }
917
918        #[inline]
919        unsafe fn decode(
920            &mut self,
921            decoder: &mut fidl::encoding::Decoder<'_, D>,
922            offset: usize,
923            _depth: fidl::encoding::Depth,
924        ) -> fidl::Result<()> {
925            decoder.debug_check_bounds::<Self>(offset);
926            // Verify that padding bytes are zero.
927            fidl::decode!(
928                fidl_fuchsia_component_decl::Capability,
929                D,
930                &mut self.capability,
931                decoder,
932                offset + 0,
933                _depth
934            )?;
935            Ok(())
936        }
937    }
938
939    impl fidl::encoding::ValueTypeMarker for RealmAddChildFromDeclRequest {
940        type Borrowed<'a> = &'a Self;
941        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
942            value
943        }
944    }
945
946    unsafe impl fidl::encoding::TypeMarker for RealmAddChildFromDeclRequest {
947        type Owned = Self;
948
949        #[inline(always)]
950        fn inline_align(_context: fidl::encoding::Context) -> usize {
951            8
952        }
953
954        #[inline(always)]
955        fn inline_size(_context: fidl::encoding::Context) -> usize {
956            48
957        }
958    }
959
960    unsafe impl<D: fidl::encoding::ResourceDialect>
961        fidl::encoding::Encode<RealmAddChildFromDeclRequest, D> for &RealmAddChildFromDeclRequest
962    {
963        #[inline]
964        unsafe fn encode(
965            self,
966            encoder: &mut fidl::encoding::Encoder<'_, D>,
967            offset: usize,
968            _depth: fidl::encoding::Depth,
969        ) -> fidl::Result<()> {
970            encoder.debug_check_bounds::<RealmAddChildFromDeclRequest>(offset);
971            // Delegate to tuple encoding.
972            fidl::encoding::Encode::<RealmAddChildFromDeclRequest, D>::encode(
973                (
974                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
975                    <fidl_fuchsia_component_decl::Component as fidl::encoding::ValueTypeMarker>::borrow(&self.decl),
976                    <ChildOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
977                ),
978                encoder, offset, _depth
979            )
980        }
981    }
982    unsafe impl<
983            D: fidl::encoding::ResourceDialect,
984            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
985            T1: fidl::encoding::Encode<fidl_fuchsia_component_decl::Component, D>,
986            T2: fidl::encoding::Encode<ChildOptions, D>,
987        > fidl::encoding::Encode<RealmAddChildFromDeclRequest, D> for (T0, T1, T2)
988    {
989        #[inline]
990        unsafe fn encode(
991            self,
992            encoder: &mut fidl::encoding::Encoder<'_, D>,
993            offset: usize,
994            depth: fidl::encoding::Depth,
995        ) -> fidl::Result<()> {
996            encoder.debug_check_bounds::<RealmAddChildFromDeclRequest>(offset);
997            // Zero out padding regions. There's no need to apply masks
998            // because the unmasked parts will be overwritten by fields.
999            // Write the fields.
1000            self.0.encode(encoder, offset + 0, depth)?;
1001            self.1.encode(encoder, offset + 16, depth)?;
1002            self.2.encode(encoder, offset + 32, depth)?;
1003            Ok(())
1004        }
1005    }
1006
1007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1008        for RealmAddChildFromDeclRequest
1009    {
1010        #[inline(always)]
1011        fn new_empty() -> Self {
1012            Self {
1013                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
1014                decl: fidl::new_empty!(fidl_fuchsia_component_decl::Component, D),
1015                options: fidl::new_empty!(ChildOptions, D),
1016            }
1017        }
1018
1019        #[inline]
1020        unsafe fn decode(
1021            &mut self,
1022            decoder: &mut fidl::encoding::Decoder<'_, D>,
1023            offset: usize,
1024            _depth: fidl::encoding::Depth,
1025        ) -> fidl::Result<()> {
1026            decoder.debug_check_bounds::<Self>(offset);
1027            // Verify that padding bytes are zero.
1028            fidl::decode!(
1029                fidl::encoding::BoundedString<1024>,
1030                D,
1031                &mut self.name,
1032                decoder,
1033                offset + 0,
1034                _depth
1035            )?;
1036            fidl::decode!(
1037                fidl_fuchsia_component_decl::Component,
1038                D,
1039                &mut self.decl,
1040                decoder,
1041                offset + 16,
1042                _depth
1043            )?;
1044            fidl::decode!(ChildOptions, D, &mut self.options, decoder, offset + 32, _depth)?;
1045            Ok(())
1046        }
1047    }
1048
1049    impl fidl::encoding::ValueTypeMarker for RealmAddChildRequest {
1050        type Borrowed<'a> = &'a Self;
1051        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1052            value
1053        }
1054    }
1055
1056    unsafe impl fidl::encoding::TypeMarker for RealmAddChildRequest {
1057        type Owned = Self;
1058
1059        #[inline(always)]
1060        fn inline_align(_context: fidl::encoding::Context) -> usize {
1061            8
1062        }
1063
1064        #[inline(always)]
1065        fn inline_size(_context: fidl::encoding::Context) -> usize {
1066            48
1067        }
1068    }
1069
1070    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RealmAddChildRequest, D>
1071        for &RealmAddChildRequest
1072    {
1073        #[inline]
1074        unsafe fn encode(
1075            self,
1076            encoder: &mut fidl::encoding::Encoder<'_, D>,
1077            offset: usize,
1078            _depth: fidl::encoding::Depth,
1079        ) -> fidl::Result<()> {
1080            encoder.debug_check_bounds::<RealmAddChildRequest>(offset);
1081            // Delegate to tuple encoding.
1082            fidl::encoding::Encode::<RealmAddChildRequest, D>::encode(
1083                (
1084                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1085                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.url),
1086                    <ChildOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
1087                ),
1088                encoder, offset, _depth
1089            )
1090        }
1091    }
1092    unsafe impl<
1093            D: fidl::encoding::ResourceDialect,
1094            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1095            T1: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1096            T2: fidl::encoding::Encode<ChildOptions, D>,
1097        > fidl::encoding::Encode<RealmAddChildRequest, D> for (T0, T1, T2)
1098    {
1099        #[inline]
1100        unsafe fn encode(
1101            self,
1102            encoder: &mut fidl::encoding::Encoder<'_, D>,
1103            offset: usize,
1104            depth: fidl::encoding::Depth,
1105        ) -> fidl::Result<()> {
1106            encoder.debug_check_bounds::<RealmAddChildRequest>(offset);
1107            // Zero out padding regions. There's no need to apply masks
1108            // because the unmasked parts will be overwritten by fields.
1109            // Write the fields.
1110            self.0.encode(encoder, offset + 0, depth)?;
1111            self.1.encode(encoder, offset + 16, depth)?;
1112            self.2.encode(encoder, offset + 32, depth)?;
1113            Ok(())
1114        }
1115    }
1116
1117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RealmAddChildRequest {
1118        #[inline(always)]
1119        fn new_empty() -> Self {
1120            Self {
1121                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
1122                url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1123                options: fidl::new_empty!(ChildOptions, D),
1124            }
1125        }
1126
1127        #[inline]
1128        unsafe fn decode(
1129            &mut self,
1130            decoder: &mut fidl::encoding::Decoder<'_, D>,
1131            offset: usize,
1132            _depth: fidl::encoding::Depth,
1133        ) -> fidl::Result<()> {
1134            decoder.debug_check_bounds::<Self>(offset);
1135            // Verify that padding bytes are zero.
1136            fidl::decode!(
1137                fidl::encoding::BoundedString<1024>,
1138                D,
1139                &mut self.name,
1140                decoder,
1141                offset + 0,
1142                _depth
1143            )?;
1144            fidl::decode!(
1145                fidl::encoding::BoundedString<4096>,
1146                D,
1147                &mut self.url,
1148                decoder,
1149                offset + 16,
1150                _depth
1151            )?;
1152            fidl::decode!(ChildOptions, D, &mut self.options, decoder, offset + 32, _depth)?;
1153            Ok(())
1154        }
1155    }
1156
1157    impl fidl::encoding::ValueTypeMarker for RealmAddCollectionRequest {
1158        type Borrowed<'a> = &'a Self;
1159        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1160            value
1161        }
1162    }
1163
1164    unsafe impl fidl::encoding::TypeMarker for RealmAddCollectionRequest {
1165        type Owned = Self;
1166
1167        #[inline(always)]
1168        fn inline_align(_context: fidl::encoding::Context) -> usize {
1169            8
1170        }
1171
1172        #[inline(always)]
1173        fn inline_size(_context: fidl::encoding::Context) -> usize {
1174            16
1175        }
1176    }
1177
1178    unsafe impl<D: fidl::encoding::ResourceDialect>
1179        fidl::encoding::Encode<RealmAddCollectionRequest, D> for &RealmAddCollectionRequest
1180    {
1181        #[inline]
1182        unsafe fn encode(
1183            self,
1184            encoder: &mut fidl::encoding::Encoder<'_, D>,
1185            offset: usize,
1186            _depth: fidl::encoding::Depth,
1187        ) -> fidl::Result<()> {
1188            encoder.debug_check_bounds::<RealmAddCollectionRequest>(offset);
1189            // Delegate to tuple encoding.
1190            fidl::encoding::Encode::<RealmAddCollectionRequest, D>::encode(
1191                (
1192                    <fidl_fuchsia_component_decl::Collection as fidl::encoding::ValueTypeMarker>::borrow(&self.collection),
1193                ),
1194                encoder, offset, _depth
1195            )
1196        }
1197    }
1198    unsafe impl<
1199            D: fidl::encoding::ResourceDialect,
1200            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Collection, D>,
1201        > fidl::encoding::Encode<RealmAddCollectionRequest, D> for (T0,)
1202    {
1203        #[inline]
1204        unsafe fn encode(
1205            self,
1206            encoder: &mut fidl::encoding::Encoder<'_, D>,
1207            offset: usize,
1208            depth: fidl::encoding::Depth,
1209        ) -> fidl::Result<()> {
1210            encoder.debug_check_bounds::<RealmAddCollectionRequest>(offset);
1211            // Zero out padding regions. There's no need to apply masks
1212            // because the unmasked parts will be overwritten by fields.
1213            // Write the fields.
1214            self.0.encode(encoder, offset + 0, depth)?;
1215            Ok(())
1216        }
1217    }
1218
1219    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1220        for RealmAddCollectionRequest
1221    {
1222        #[inline(always)]
1223        fn new_empty() -> Self {
1224            Self { collection: fidl::new_empty!(fidl_fuchsia_component_decl::Collection, D) }
1225        }
1226
1227        #[inline]
1228        unsafe fn decode(
1229            &mut self,
1230            decoder: &mut fidl::encoding::Decoder<'_, D>,
1231            offset: usize,
1232            _depth: fidl::encoding::Depth,
1233        ) -> fidl::Result<()> {
1234            decoder.debug_check_bounds::<Self>(offset);
1235            // Verify that padding bytes are zero.
1236            fidl::decode!(
1237                fidl_fuchsia_component_decl::Collection,
1238                D,
1239                &mut self.collection,
1240                decoder,
1241                offset + 0,
1242                _depth
1243            )?;
1244            Ok(())
1245        }
1246    }
1247
1248    impl fidl::encoding::ValueTypeMarker for RealmAddEnvironmentRequest {
1249        type Borrowed<'a> = &'a Self;
1250        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1251            value
1252        }
1253    }
1254
1255    unsafe impl fidl::encoding::TypeMarker for RealmAddEnvironmentRequest {
1256        type Owned = Self;
1257
1258        #[inline(always)]
1259        fn inline_align(_context: fidl::encoding::Context) -> usize {
1260            8
1261        }
1262
1263        #[inline(always)]
1264        fn inline_size(_context: fidl::encoding::Context) -> usize {
1265            16
1266        }
1267    }
1268
1269    unsafe impl<D: fidl::encoding::ResourceDialect>
1270        fidl::encoding::Encode<RealmAddEnvironmentRequest, D> for &RealmAddEnvironmentRequest
1271    {
1272        #[inline]
1273        unsafe fn encode(
1274            self,
1275            encoder: &mut fidl::encoding::Encoder<'_, D>,
1276            offset: usize,
1277            _depth: fidl::encoding::Depth,
1278        ) -> fidl::Result<()> {
1279            encoder.debug_check_bounds::<RealmAddEnvironmentRequest>(offset);
1280            // Delegate to tuple encoding.
1281            fidl::encoding::Encode::<RealmAddEnvironmentRequest, D>::encode(
1282                (
1283                    <fidl_fuchsia_component_decl::Environment as fidl::encoding::ValueTypeMarker>::borrow(&self.environment),
1284                ),
1285                encoder, offset, _depth
1286            )
1287        }
1288    }
1289    unsafe impl<
1290            D: fidl::encoding::ResourceDialect,
1291            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Environment, D>,
1292        > fidl::encoding::Encode<RealmAddEnvironmentRequest, D> for (T0,)
1293    {
1294        #[inline]
1295        unsafe fn encode(
1296            self,
1297            encoder: &mut fidl::encoding::Encoder<'_, D>,
1298            offset: usize,
1299            depth: fidl::encoding::Depth,
1300        ) -> fidl::Result<()> {
1301            encoder.debug_check_bounds::<RealmAddEnvironmentRequest>(offset);
1302            // Zero out padding regions. There's no need to apply masks
1303            // because the unmasked parts will be overwritten by fields.
1304            // Write the fields.
1305            self.0.encode(encoder, offset + 0, depth)?;
1306            Ok(())
1307        }
1308    }
1309
1310    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1311        for RealmAddEnvironmentRequest
1312    {
1313        #[inline(always)]
1314        fn new_empty() -> Self {
1315            Self { environment: fidl::new_empty!(fidl_fuchsia_component_decl::Environment, D) }
1316        }
1317
1318        #[inline]
1319        unsafe fn decode(
1320            &mut self,
1321            decoder: &mut fidl::encoding::Decoder<'_, D>,
1322            offset: usize,
1323            _depth: fidl::encoding::Depth,
1324        ) -> fidl::Result<()> {
1325            decoder.debug_check_bounds::<Self>(offset);
1326            // Verify that padding bytes are zero.
1327            fidl::decode!(
1328                fidl_fuchsia_component_decl::Environment,
1329                D,
1330                &mut self.environment,
1331                decoder,
1332                offset + 0,
1333                _depth
1334            )?;
1335            Ok(())
1336        }
1337    }
1338
1339    impl fidl::encoding::ValueTypeMarker for RealmAddLocalChildRequest {
1340        type Borrowed<'a> = &'a Self;
1341        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1342            value
1343        }
1344    }
1345
1346    unsafe impl fidl::encoding::TypeMarker for RealmAddLocalChildRequest {
1347        type Owned = Self;
1348
1349        #[inline(always)]
1350        fn inline_align(_context: fidl::encoding::Context) -> usize {
1351            8
1352        }
1353
1354        #[inline(always)]
1355        fn inline_size(_context: fidl::encoding::Context) -> usize {
1356            32
1357        }
1358    }
1359
1360    unsafe impl<D: fidl::encoding::ResourceDialect>
1361        fidl::encoding::Encode<RealmAddLocalChildRequest, D> for &RealmAddLocalChildRequest
1362    {
1363        #[inline]
1364        unsafe fn encode(
1365            self,
1366            encoder: &mut fidl::encoding::Encoder<'_, D>,
1367            offset: usize,
1368            _depth: fidl::encoding::Depth,
1369        ) -> fidl::Result<()> {
1370            encoder.debug_check_bounds::<RealmAddLocalChildRequest>(offset);
1371            // Delegate to tuple encoding.
1372            fidl::encoding::Encode::<RealmAddLocalChildRequest, D>::encode(
1373                (
1374                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1375                    <ChildOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
1376                ),
1377                encoder, offset, _depth
1378            )
1379        }
1380    }
1381    unsafe impl<
1382            D: fidl::encoding::ResourceDialect,
1383            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1384            T1: fidl::encoding::Encode<ChildOptions, D>,
1385        > fidl::encoding::Encode<RealmAddLocalChildRequest, D> for (T0, T1)
1386    {
1387        #[inline]
1388        unsafe fn encode(
1389            self,
1390            encoder: &mut fidl::encoding::Encoder<'_, D>,
1391            offset: usize,
1392            depth: fidl::encoding::Depth,
1393        ) -> fidl::Result<()> {
1394            encoder.debug_check_bounds::<RealmAddLocalChildRequest>(offset);
1395            // Zero out padding regions. There's no need to apply masks
1396            // because the unmasked parts will be overwritten by fields.
1397            // Write the fields.
1398            self.0.encode(encoder, offset + 0, depth)?;
1399            self.1.encode(encoder, offset + 16, depth)?;
1400            Ok(())
1401        }
1402    }
1403
1404    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1405        for RealmAddLocalChildRequest
1406    {
1407        #[inline(always)]
1408        fn new_empty() -> Self {
1409            Self {
1410                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
1411                options: fidl::new_empty!(ChildOptions, D),
1412            }
1413        }
1414
1415        #[inline]
1416        unsafe fn decode(
1417            &mut self,
1418            decoder: &mut fidl::encoding::Decoder<'_, D>,
1419            offset: usize,
1420            _depth: fidl::encoding::Depth,
1421        ) -> fidl::Result<()> {
1422            decoder.debug_check_bounds::<Self>(offset);
1423            // Verify that padding bytes are zero.
1424            fidl::decode!(
1425                fidl::encoding::BoundedString<1024>,
1426                D,
1427                &mut self.name,
1428                decoder,
1429                offset + 0,
1430                _depth
1431            )?;
1432            fidl::decode!(ChildOptions, D, &mut self.options, decoder, offset + 16, _depth)?;
1433            Ok(())
1434        }
1435    }
1436
1437    impl fidl::encoding::ValueTypeMarker for RealmAddRouteRequest {
1438        type Borrowed<'a> = &'a Self;
1439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1440            value
1441        }
1442    }
1443
1444    unsafe impl fidl::encoding::TypeMarker for RealmAddRouteRequest {
1445        type Owned = Self;
1446
1447        #[inline(always)]
1448        fn inline_align(_context: fidl::encoding::Context) -> usize {
1449            8
1450        }
1451
1452        #[inline(always)]
1453        fn inline_size(_context: fidl::encoding::Context) -> usize {
1454            48
1455        }
1456    }
1457
1458    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RealmAddRouteRequest, D>
1459        for &RealmAddRouteRequest
1460    {
1461        #[inline]
1462        unsafe fn encode(
1463            self,
1464            encoder: &mut fidl::encoding::Encoder<'_, D>,
1465            offset: usize,
1466            _depth: fidl::encoding::Depth,
1467        ) -> fidl::Result<()> {
1468            encoder.debug_check_bounds::<RealmAddRouteRequest>(offset);
1469            // Delegate to tuple encoding.
1470            fidl::encoding::Encode::<RealmAddRouteRequest, D>::encode(
1471                (
1472                    <fidl::encoding::UnboundedVector<Capability> as fidl::encoding::ValueTypeMarker>::borrow(&self.capabilities),
1473                    <fidl_fuchsia_component_decl::Ref as fidl::encoding::ValueTypeMarker>::borrow(&self.from),
1474                    <fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref> as fidl::encoding::ValueTypeMarker>::borrow(&self.to),
1475                ),
1476                encoder, offset, _depth
1477            )
1478        }
1479    }
1480    unsafe impl<
1481            D: fidl::encoding::ResourceDialect,
1482            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Capability>, D>,
1483            T1: fidl::encoding::Encode<fidl_fuchsia_component_decl::Ref, D>,
1484            T2: fidl::encoding::Encode<
1485                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>,
1486                D,
1487            >,
1488        > fidl::encoding::Encode<RealmAddRouteRequest, D> for (T0, T1, T2)
1489    {
1490        #[inline]
1491        unsafe fn encode(
1492            self,
1493            encoder: &mut fidl::encoding::Encoder<'_, D>,
1494            offset: usize,
1495            depth: fidl::encoding::Depth,
1496        ) -> fidl::Result<()> {
1497            encoder.debug_check_bounds::<RealmAddRouteRequest>(offset);
1498            // Zero out padding regions. There's no need to apply masks
1499            // because the unmasked parts will be overwritten by fields.
1500            // Write the fields.
1501            self.0.encode(encoder, offset + 0, depth)?;
1502            self.1.encode(encoder, offset + 16, depth)?;
1503            self.2.encode(encoder, offset + 32, depth)?;
1504            Ok(())
1505        }
1506    }
1507
1508    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RealmAddRouteRequest {
1509        #[inline(always)]
1510        fn new_empty() -> Self {
1511            Self {
1512                capabilities: fidl::new_empty!(fidl::encoding::UnboundedVector<Capability>, D),
1513                from: fidl::new_empty!(fidl_fuchsia_component_decl::Ref, D),
1514                to: fidl::new_empty!(
1515                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>,
1516                    D
1517                ),
1518            }
1519        }
1520
1521        #[inline]
1522        unsafe fn decode(
1523            &mut self,
1524            decoder: &mut fidl::encoding::Decoder<'_, D>,
1525            offset: usize,
1526            _depth: fidl::encoding::Depth,
1527        ) -> fidl::Result<()> {
1528            decoder.debug_check_bounds::<Self>(offset);
1529            // Verify that padding bytes are zero.
1530            fidl::decode!(
1531                fidl::encoding::UnboundedVector<Capability>,
1532                D,
1533                &mut self.capabilities,
1534                decoder,
1535                offset + 0,
1536                _depth
1537            )?;
1538            fidl::decode!(
1539                fidl_fuchsia_component_decl::Ref,
1540                D,
1541                &mut self.from,
1542                decoder,
1543                offset + 16,
1544                _depth
1545            )?;
1546            fidl::decode!(
1547                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>,
1548                D,
1549                &mut self.to,
1550                decoder,
1551                offset + 32,
1552                _depth
1553            )?;
1554            Ok(())
1555        }
1556    }
1557
1558    impl fidl::encoding::ValueTypeMarker for RealmGetComponentDeclRequest {
1559        type Borrowed<'a> = &'a Self;
1560        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1561            value
1562        }
1563    }
1564
1565    unsafe impl fidl::encoding::TypeMarker for RealmGetComponentDeclRequest {
1566        type Owned = Self;
1567
1568        #[inline(always)]
1569        fn inline_align(_context: fidl::encoding::Context) -> usize {
1570            8
1571        }
1572
1573        #[inline(always)]
1574        fn inline_size(_context: fidl::encoding::Context) -> usize {
1575            16
1576        }
1577    }
1578
1579    unsafe impl<D: fidl::encoding::ResourceDialect>
1580        fidl::encoding::Encode<RealmGetComponentDeclRequest, D> for &RealmGetComponentDeclRequest
1581    {
1582        #[inline]
1583        unsafe fn encode(
1584            self,
1585            encoder: &mut fidl::encoding::Encoder<'_, D>,
1586            offset: usize,
1587            _depth: fidl::encoding::Depth,
1588        ) -> fidl::Result<()> {
1589            encoder.debug_check_bounds::<RealmGetComponentDeclRequest>(offset);
1590            // Delegate to tuple encoding.
1591            fidl::encoding::Encode::<RealmGetComponentDeclRequest, D>::encode(
1592                (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1593                    &self.name,
1594                ),),
1595                encoder,
1596                offset,
1597                _depth,
1598            )
1599        }
1600    }
1601    unsafe impl<
1602            D: fidl::encoding::ResourceDialect,
1603            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1604        > fidl::encoding::Encode<RealmGetComponentDeclRequest, D> for (T0,)
1605    {
1606        #[inline]
1607        unsafe fn encode(
1608            self,
1609            encoder: &mut fidl::encoding::Encoder<'_, D>,
1610            offset: usize,
1611            depth: fidl::encoding::Depth,
1612        ) -> fidl::Result<()> {
1613            encoder.debug_check_bounds::<RealmGetComponentDeclRequest>(offset);
1614            // Zero out padding regions. There's no need to apply masks
1615            // because the unmasked parts will be overwritten by fields.
1616            // Write the fields.
1617            self.0.encode(encoder, offset + 0, depth)?;
1618            Ok(())
1619        }
1620    }
1621
1622    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1623        for RealmGetComponentDeclRequest
1624    {
1625        #[inline(always)]
1626        fn new_empty() -> Self {
1627            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1628        }
1629
1630        #[inline]
1631        unsafe fn decode(
1632            &mut self,
1633            decoder: &mut fidl::encoding::Decoder<'_, D>,
1634            offset: usize,
1635            _depth: fidl::encoding::Depth,
1636        ) -> fidl::Result<()> {
1637            decoder.debug_check_bounds::<Self>(offset);
1638            // Verify that padding bytes are zero.
1639            fidl::decode!(
1640                fidl::encoding::BoundedString<1024>,
1641                D,
1642                &mut self.name,
1643                decoder,
1644                offset + 0,
1645                _depth
1646            )?;
1647            Ok(())
1648        }
1649    }
1650
1651    impl fidl::encoding::ValueTypeMarker for RealmInitMutableConfigFromPackageRequest {
1652        type Borrowed<'a> = &'a Self;
1653        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1654            value
1655        }
1656    }
1657
1658    unsafe impl fidl::encoding::TypeMarker for RealmInitMutableConfigFromPackageRequest {
1659        type Owned = Self;
1660
1661        #[inline(always)]
1662        fn inline_align(_context: fidl::encoding::Context) -> usize {
1663            8
1664        }
1665
1666        #[inline(always)]
1667        fn inline_size(_context: fidl::encoding::Context) -> usize {
1668            16
1669        }
1670    }
1671
1672    unsafe impl<D: fidl::encoding::ResourceDialect>
1673        fidl::encoding::Encode<RealmInitMutableConfigFromPackageRequest, D>
1674        for &RealmInitMutableConfigFromPackageRequest
1675    {
1676        #[inline]
1677        unsafe fn encode(
1678            self,
1679            encoder: &mut fidl::encoding::Encoder<'_, D>,
1680            offset: usize,
1681            _depth: fidl::encoding::Depth,
1682        ) -> fidl::Result<()> {
1683            encoder.debug_check_bounds::<RealmInitMutableConfigFromPackageRequest>(offset);
1684            // Delegate to tuple encoding.
1685            fidl::encoding::Encode::<RealmInitMutableConfigFromPackageRequest, D>::encode(
1686                (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
1687                    &self.name,
1688                ),),
1689                encoder,
1690                offset,
1691                _depth,
1692            )
1693        }
1694    }
1695    unsafe impl<
1696            D: fidl::encoding::ResourceDialect,
1697            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
1698        > fidl::encoding::Encode<RealmInitMutableConfigFromPackageRequest, D> for (T0,)
1699    {
1700        #[inline]
1701        unsafe fn encode(
1702            self,
1703            encoder: &mut fidl::encoding::Encoder<'_, D>,
1704            offset: usize,
1705            depth: fidl::encoding::Depth,
1706        ) -> fidl::Result<()> {
1707            encoder.debug_check_bounds::<RealmInitMutableConfigFromPackageRequest>(offset);
1708            // Zero out padding regions. There's no need to apply masks
1709            // because the unmasked parts will be overwritten by fields.
1710            // Write the fields.
1711            self.0.encode(encoder, offset + 0, depth)?;
1712            Ok(())
1713        }
1714    }
1715
1716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1717        for RealmInitMutableConfigFromPackageRequest
1718    {
1719        #[inline(always)]
1720        fn new_empty() -> Self {
1721            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
1722        }
1723
1724        #[inline]
1725        unsafe fn decode(
1726            &mut self,
1727            decoder: &mut fidl::encoding::Decoder<'_, D>,
1728            offset: usize,
1729            _depth: fidl::encoding::Depth,
1730        ) -> fidl::Result<()> {
1731            decoder.debug_check_bounds::<Self>(offset);
1732            // Verify that padding bytes are zero.
1733            fidl::decode!(
1734                fidl::encoding::BoundedString<255>,
1735                D,
1736                &mut self.name,
1737                decoder,
1738                offset + 0,
1739                _depth
1740            )?;
1741            Ok(())
1742        }
1743    }
1744
1745    impl fidl::encoding::ValueTypeMarker for RealmInitMutableConfigToEmptyRequest {
1746        type Borrowed<'a> = &'a Self;
1747        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1748            value
1749        }
1750    }
1751
1752    unsafe impl fidl::encoding::TypeMarker for RealmInitMutableConfigToEmptyRequest {
1753        type Owned = Self;
1754
1755        #[inline(always)]
1756        fn inline_align(_context: fidl::encoding::Context) -> usize {
1757            8
1758        }
1759
1760        #[inline(always)]
1761        fn inline_size(_context: fidl::encoding::Context) -> usize {
1762            16
1763        }
1764    }
1765
1766    unsafe impl<D: fidl::encoding::ResourceDialect>
1767        fidl::encoding::Encode<RealmInitMutableConfigToEmptyRequest, D>
1768        for &RealmInitMutableConfigToEmptyRequest
1769    {
1770        #[inline]
1771        unsafe fn encode(
1772            self,
1773            encoder: &mut fidl::encoding::Encoder<'_, D>,
1774            offset: usize,
1775            _depth: fidl::encoding::Depth,
1776        ) -> fidl::Result<()> {
1777            encoder.debug_check_bounds::<RealmInitMutableConfigToEmptyRequest>(offset);
1778            // Delegate to tuple encoding.
1779            fidl::encoding::Encode::<RealmInitMutableConfigToEmptyRequest, D>::encode(
1780                (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
1781                    &self.name,
1782                ),),
1783                encoder,
1784                offset,
1785                _depth,
1786            )
1787        }
1788    }
1789    unsafe impl<
1790            D: fidl::encoding::ResourceDialect,
1791            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
1792        > fidl::encoding::Encode<RealmInitMutableConfigToEmptyRequest, D> for (T0,)
1793    {
1794        #[inline]
1795        unsafe fn encode(
1796            self,
1797            encoder: &mut fidl::encoding::Encoder<'_, D>,
1798            offset: usize,
1799            depth: fidl::encoding::Depth,
1800        ) -> fidl::Result<()> {
1801            encoder.debug_check_bounds::<RealmInitMutableConfigToEmptyRequest>(offset);
1802            // Zero out padding regions. There's no need to apply masks
1803            // because the unmasked parts will be overwritten by fields.
1804            // Write the fields.
1805            self.0.encode(encoder, offset + 0, depth)?;
1806            Ok(())
1807        }
1808    }
1809
1810    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1811        for RealmInitMutableConfigToEmptyRequest
1812    {
1813        #[inline(always)]
1814        fn new_empty() -> Self {
1815            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
1816        }
1817
1818        #[inline]
1819        unsafe fn decode(
1820            &mut self,
1821            decoder: &mut fidl::encoding::Decoder<'_, D>,
1822            offset: usize,
1823            _depth: fidl::encoding::Depth,
1824        ) -> fidl::Result<()> {
1825            decoder.debug_check_bounds::<Self>(offset);
1826            // Verify that padding bytes are zero.
1827            fidl::decode!(
1828                fidl::encoding::BoundedString<255>,
1829                D,
1830                &mut self.name,
1831                decoder,
1832                offset + 0,
1833                _depth
1834            )?;
1835            Ok(())
1836        }
1837    }
1838
1839    impl fidl::encoding::ValueTypeMarker for RealmReplaceComponentDeclRequest {
1840        type Borrowed<'a> = &'a Self;
1841        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1842            value
1843        }
1844    }
1845
1846    unsafe impl fidl::encoding::TypeMarker for RealmReplaceComponentDeclRequest {
1847        type Owned = Self;
1848
1849        #[inline(always)]
1850        fn inline_align(_context: fidl::encoding::Context) -> usize {
1851            8
1852        }
1853
1854        #[inline(always)]
1855        fn inline_size(_context: fidl::encoding::Context) -> usize {
1856            32
1857        }
1858    }
1859
1860    unsafe impl<D: fidl::encoding::ResourceDialect>
1861        fidl::encoding::Encode<RealmReplaceComponentDeclRequest, D>
1862        for &RealmReplaceComponentDeclRequest
1863    {
1864        #[inline]
1865        unsafe fn encode(
1866            self,
1867            encoder: &mut fidl::encoding::Encoder<'_, D>,
1868            offset: usize,
1869            _depth: fidl::encoding::Depth,
1870        ) -> fidl::Result<()> {
1871            encoder.debug_check_bounds::<RealmReplaceComponentDeclRequest>(offset);
1872            // Delegate to tuple encoding.
1873            fidl::encoding::Encode::<RealmReplaceComponentDeclRequest, D>::encode(
1874                (
1875                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1876                    <fidl_fuchsia_component_decl::Component as fidl::encoding::ValueTypeMarker>::borrow(&self.component_decl),
1877                ),
1878                encoder, offset, _depth
1879            )
1880        }
1881    }
1882    unsafe impl<
1883            D: fidl::encoding::ResourceDialect,
1884            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1885            T1: fidl::encoding::Encode<fidl_fuchsia_component_decl::Component, D>,
1886        > fidl::encoding::Encode<RealmReplaceComponentDeclRequest, D> for (T0, T1)
1887    {
1888        #[inline]
1889        unsafe fn encode(
1890            self,
1891            encoder: &mut fidl::encoding::Encoder<'_, D>,
1892            offset: usize,
1893            depth: fidl::encoding::Depth,
1894        ) -> fidl::Result<()> {
1895            encoder.debug_check_bounds::<RealmReplaceComponentDeclRequest>(offset);
1896            // Zero out padding regions. There's no need to apply masks
1897            // because the unmasked parts will be overwritten by fields.
1898            // Write the fields.
1899            self.0.encode(encoder, offset + 0, depth)?;
1900            self.1.encode(encoder, offset + 16, depth)?;
1901            Ok(())
1902        }
1903    }
1904
1905    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1906        for RealmReplaceComponentDeclRequest
1907    {
1908        #[inline(always)]
1909        fn new_empty() -> Self {
1910            Self {
1911                name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
1912                component_decl: fidl::new_empty!(fidl_fuchsia_component_decl::Component, D),
1913            }
1914        }
1915
1916        #[inline]
1917        unsafe fn decode(
1918            &mut self,
1919            decoder: &mut fidl::encoding::Decoder<'_, D>,
1920            offset: usize,
1921            _depth: fidl::encoding::Depth,
1922        ) -> fidl::Result<()> {
1923            decoder.debug_check_bounds::<Self>(offset);
1924            // Verify that padding bytes are zero.
1925            fidl::decode!(
1926                fidl::encoding::BoundedString<1024>,
1927                D,
1928                &mut self.name,
1929                decoder,
1930                offset + 0,
1931                _depth
1932            )?;
1933            fidl::decode!(
1934                fidl_fuchsia_component_decl::Component,
1935                D,
1936                &mut self.component_decl,
1937                decoder,
1938                offset + 16,
1939                _depth
1940            )?;
1941            Ok(())
1942        }
1943    }
1944
1945    impl fidl::encoding::ValueTypeMarker for RealmReplaceRealmDeclRequest {
1946        type Borrowed<'a> = &'a Self;
1947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1948            value
1949        }
1950    }
1951
1952    unsafe impl fidl::encoding::TypeMarker for RealmReplaceRealmDeclRequest {
1953        type Owned = Self;
1954
1955        #[inline(always)]
1956        fn inline_align(_context: fidl::encoding::Context) -> usize {
1957            8
1958        }
1959
1960        #[inline(always)]
1961        fn inline_size(_context: fidl::encoding::Context) -> usize {
1962            16
1963        }
1964    }
1965
1966    unsafe impl<D: fidl::encoding::ResourceDialect>
1967        fidl::encoding::Encode<RealmReplaceRealmDeclRequest, D> for &RealmReplaceRealmDeclRequest
1968    {
1969        #[inline]
1970        unsafe fn encode(
1971            self,
1972            encoder: &mut fidl::encoding::Encoder<'_, D>,
1973            offset: usize,
1974            _depth: fidl::encoding::Depth,
1975        ) -> fidl::Result<()> {
1976            encoder.debug_check_bounds::<RealmReplaceRealmDeclRequest>(offset);
1977            // Delegate to tuple encoding.
1978            fidl::encoding::Encode::<RealmReplaceRealmDeclRequest, D>::encode(
1979                (
1980                    <fidl_fuchsia_component_decl::Component as fidl::encoding::ValueTypeMarker>::borrow(&self.component_decl),
1981                ),
1982                encoder, offset, _depth
1983            )
1984        }
1985    }
1986    unsafe impl<
1987            D: fidl::encoding::ResourceDialect,
1988            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Component, D>,
1989        > fidl::encoding::Encode<RealmReplaceRealmDeclRequest, D> for (T0,)
1990    {
1991        #[inline]
1992        unsafe fn encode(
1993            self,
1994            encoder: &mut fidl::encoding::Encoder<'_, D>,
1995            offset: usize,
1996            depth: fidl::encoding::Depth,
1997        ) -> fidl::Result<()> {
1998            encoder.debug_check_bounds::<RealmReplaceRealmDeclRequest>(offset);
1999            // Zero out padding regions. There's no need to apply masks
2000            // because the unmasked parts will be overwritten by fields.
2001            // Write the fields.
2002            self.0.encode(encoder, offset + 0, depth)?;
2003            Ok(())
2004        }
2005    }
2006
2007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2008        for RealmReplaceRealmDeclRequest
2009    {
2010        #[inline(always)]
2011        fn new_empty() -> Self {
2012            Self { component_decl: fidl::new_empty!(fidl_fuchsia_component_decl::Component, D) }
2013        }
2014
2015        #[inline]
2016        unsafe fn decode(
2017            &mut self,
2018            decoder: &mut fidl::encoding::Decoder<'_, D>,
2019            offset: usize,
2020            _depth: fidl::encoding::Depth,
2021        ) -> fidl::Result<()> {
2022            decoder.debug_check_bounds::<Self>(offset);
2023            // Verify that padding bytes are zero.
2024            fidl::decode!(
2025                fidl_fuchsia_component_decl::Component,
2026                D,
2027                &mut self.component_decl,
2028                decoder,
2029                offset + 0,
2030                _depth
2031            )?;
2032            Ok(())
2033        }
2034    }
2035
2036    impl fidl::encoding::ValueTypeMarker for RealmSetConfigValueRequest {
2037        type Borrowed<'a> = &'a Self;
2038        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2039            value
2040        }
2041    }
2042
2043    unsafe impl fidl::encoding::TypeMarker for RealmSetConfigValueRequest {
2044        type Owned = Self;
2045
2046        #[inline(always)]
2047        fn inline_align(_context: fidl::encoding::Context) -> usize {
2048            8
2049        }
2050
2051        #[inline(always)]
2052        fn inline_size(_context: fidl::encoding::Context) -> usize {
2053            48
2054        }
2055    }
2056
2057    unsafe impl<D: fidl::encoding::ResourceDialect>
2058        fidl::encoding::Encode<RealmSetConfigValueRequest, D> for &RealmSetConfigValueRequest
2059    {
2060        #[inline]
2061        unsafe fn encode(
2062            self,
2063            encoder: &mut fidl::encoding::Encoder<'_, D>,
2064            offset: usize,
2065            _depth: fidl::encoding::Depth,
2066        ) -> fidl::Result<()> {
2067            encoder.debug_check_bounds::<RealmSetConfigValueRequest>(offset);
2068            // Delegate to tuple encoding.
2069            fidl::encoding::Encode::<RealmSetConfigValueRequest, D>::encode(
2070                (
2071                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2072                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
2073                    <fidl_fuchsia_component_decl::ConfigValueSpec as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2074                ),
2075                encoder, offset, _depth
2076            )
2077        }
2078    }
2079    unsafe impl<
2080            D: fidl::encoding::ResourceDialect,
2081            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
2082            T1: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
2083            T2: fidl::encoding::Encode<fidl_fuchsia_component_decl::ConfigValueSpec, D>,
2084        > fidl::encoding::Encode<RealmSetConfigValueRequest, D> for (T0, T1, T2)
2085    {
2086        #[inline]
2087        unsafe fn encode(
2088            self,
2089            encoder: &mut fidl::encoding::Encoder<'_, D>,
2090            offset: usize,
2091            depth: fidl::encoding::Depth,
2092        ) -> fidl::Result<()> {
2093            encoder.debug_check_bounds::<RealmSetConfigValueRequest>(offset);
2094            // Zero out padding regions. There's no need to apply masks
2095            // because the unmasked parts will be overwritten by fields.
2096            // Write the fields.
2097            self.0.encode(encoder, offset + 0, depth)?;
2098            self.1.encode(encoder, offset + 16, depth)?;
2099            self.2.encode(encoder, offset + 32, depth)?;
2100            Ok(())
2101        }
2102    }
2103
2104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2105        for RealmSetConfigValueRequest
2106    {
2107        #[inline(always)]
2108        fn new_empty() -> Self {
2109            Self {
2110                name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D),
2111                key: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
2112                value: fidl::new_empty!(fidl_fuchsia_component_decl::ConfigValueSpec, D),
2113            }
2114        }
2115
2116        #[inline]
2117        unsafe fn decode(
2118            &mut self,
2119            decoder: &mut fidl::encoding::Decoder<'_, D>,
2120            offset: usize,
2121            _depth: fidl::encoding::Depth,
2122        ) -> fidl::Result<()> {
2123            decoder.debug_check_bounds::<Self>(offset);
2124            // Verify that padding bytes are zero.
2125            fidl::decode!(
2126                fidl::encoding::BoundedString<255>,
2127                D,
2128                &mut self.name,
2129                decoder,
2130                offset + 0,
2131                _depth
2132            )?;
2133            fidl::decode!(
2134                fidl::encoding::BoundedString<64>,
2135                D,
2136                &mut self.key,
2137                decoder,
2138                offset + 16,
2139                _depth
2140            )?;
2141            fidl::decode!(
2142                fidl_fuchsia_component_decl::ConfigValueSpec,
2143                D,
2144                &mut self.value,
2145                decoder,
2146                offset + 32,
2147                _depth
2148            )?;
2149            Ok(())
2150        }
2151    }
2152
2153    impl fidl::encoding::ValueTypeMarker for RealmUseNestedComponentManagerRequest {
2154        type Borrowed<'a> = &'a Self;
2155        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2156            value
2157        }
2158    }
2159
2160    unsafe impl fidl::encoding::TypeMarker for RealmUseNestedComponentManagerRequest {
2161        type Owned = Self;
2162
2163        #[inline(always)]
2164        fn inline_align(_context: fidl::encoding::Context) -> usize {
2165            8
2166        }
2167
2168        #[inline(always)]
2169        fn inline_size(_context: fidl::encoding::Context) -> usize {
2170            16
2171        }
2172    }
2173
2174    unsafe impl<D: fidl::encoding::ResourceDialect>
2175        fidl::encoding::Encode<RealmUseNestedComponentManagerRequest, D>
2176        for &RealmUseNestedComponentManagerRequest
2177    {
2178        #[inline]
2179        unsafe fn encode(
2180            self,
2181            encoder: &mut fidl::encoding::Encoder<'_, D>,
2182            offset: usize,
2183            _depth: fidl::encoding::Depth,
2184        ) -> fidl::Result<()> {
2185            encoder.debug_check_bounds::<RealmUseNestedComponentManagerRequest>(offset);
2186            // Delegate to tuple encoding.
2187            fidl::encoding::Encode::<RealmUseNestedComponentManagerRequest, D>::encode(
2188                (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
2189                    &self.component_manager_relative_url,
2190                ),),
2191                encoder,
2192                offset,
2193                _depth,
2194            )
2195        }
2196    }
2197    unsafe impl<
2198            D: fidl::encoding::ResourceDialect,
2199            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
2200        > fidl::encoding::Encode<RealmUseNestedComponentManagerRequest, D> for (T0,)
2201    {
2202        #[inline]
2203        unsafe fn encode(
2204            self,
2205            encoder: &mut fidl::encoding::Encoder<'_, D>,
2206            offset: usize,
2207            depth: fidl::encoding::Depth,
2208        ) -> fidl::Result<()> {
2209            encoder.debug_check_bounds::<RealmUseNestedComponentManagerRequest>(offset);
2210            // Zero out padding regions. There's no need to apply masks
2211            // because the unmasked parts will be overwritten by fields.
2212            // Write the fields.
2213            self.0.encode(encoder, offset + 0, depth)?;
2214            Ok(())
2215        }
2216    }
2217
2218    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2219        for RealmUseNestedComponentManagerRequest
2220    {
2221        #[inline(always)]
2222        fn new_empty() -> Self {
2223            Self {
2224                component_manager_relative_url: fidl::new_empty!(
2225                    fidl::encoding::BoundedString<4096>,
2226                    D
2227                ),
2228            }
2229        }
2230
2231        #[inline]
2232        unsafe fn decode(
2233            &mut self,
2234            decoder: &mut fidl::encoding::Decoder<'_, D>,
2235            offset: usize,
2236            _depth: fidl::encoding::Depth,
2237        ) -> fidl::Result<()> {
2238            decoder.debug_check_bounds::<Self>(offset);
2239            // Verify that padding bytes are zero.
2240            fidl::decode!(
2241                fidl::encoding::BoundedString<4096>,
2242                D,
2243                &mut self.component_manager_relative_url,
2244                decoder,
2245                offset + 0,
2246                _depth
2247            )?;
2248            Ok(())
2249        }
2250    }
2251
2252    impl fidl::encoding::ValueTypeMarker for RealmGetComponentDeclResponse {
2253        type Borrowed<'a> = &'a Self;
2254        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2255            value
2256        }
2257    }
2258
2259    unsafe impl fidl::encoding::TypeMarker for RealmGetComponentDeclResponse {
2260        type Owned = Self;
2261
2262        #[inline(always)]
2263        fn inline_align(_context: fidl::encoding::Context) -> usize {
2264            8
2265        }
2266
2267        #[inline(always)]
2268        fn inline_size(_context: fidl::encoding::Context) -> usize {
2269            16
2270        }
2271    }
2272
2273    unsafe impl<D: fidl::encoding::ResourceDialect>
2274        fidl::encoding::Encode<RealmGetComponentDeclResponse, D>
2275        for &RealmGetComponentDeclResponse
2276    {
2277        #[inline]
2278        unsafe fn encode(
2279            self,
2280            encoder: &mut fidl::encoding::Encoder<'_, D>,
2281            offset: usize,
2282            _depth: fidl::encoding::Depth,
2283        ) -> fidl::Result<()> {
2284            encoder.debug_check_bounds::<RealmGetComponentDeclResponse>(offset);
2285            // Delegate to tuple encoding.
2286            fidl::encoding::Encode::<RealmGetComponentDeclResponse, D>::encode(
2287                (
2288                    <fidl_fuchsia_component_decl::Component as fidl::encoding::ValueTypeMarker>::borrow(&self.component_decl),
2289                ),
2290                encoder, offset, _depth
2291            )
2292        }
2293    }
2294    unsafe impl<
2295            D: fidl::encoding::ResourceDialect,
2296            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Component, D>,
2297        > fidl::encoding::Encode<RealmGetComponentDeclResponse, D> for (T0,)
2298    {
2299        #[inline]
2300        unsafe fn encode(
2301            self,
2302            encoder: &mut fidl::encoding::Encoder<'_, D>,
2303            offset: usize,
2304            depth: fidl::encoding::Depth,
2305        ) -> fidl::Result<()> {
2306            encoder.debug_check_bounds::<RealmGetComponentDeclResponse>(offset);
2307            // Zero out padding regions. There's no need to apply masks
2308            // because the unmasked parts will be overwritten by fields.
2309            // Write the fields.
2310            self.0.encode(encoder, offset + 0, depth)?;
2311            Ok(())
2312        }
2313    }
2314
2315    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2316        for RealmGetComponentDeclResponse
2317    {
2318        #[inline(always)]
2319        fn new_empty() -> Self {
2320            Self { component_decl: fidl::new_empty!(fidl_fuchsia_component_decl::Component, D) }
2321        }
2322
2323        #[inline]
2324        unsafe fn decode(
2325            &mut self,
2326            decoder: &mut fidl::encoding::Decoder<'_, D>,
2327            offset: usize,
2328            _depth: fidl::encoding::Depth,
2329        ) -> fidl::Result<()> {
2330            decoder.debug_check_bounds::<Self>(offset);
2331            // Verify that padding bytes are zero.
2332            fidl::decode!(
2333                fidl_fuchsia_component_decl::Component,
2334                D,
2335                &mut self.component_decl,
2336                decoder,
2337                offset + 0,
2338                _depth
2339            )?;
2340            Ok(())
2341        }
2342    }
2343
2344    impl fidl::encoding::ValueTypeMarker for RealmGetRealmDeclResponse {
2345        type Borrowed<'a> = &'a Self;
2346        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2347            value
2348        }
2349    }
2350
2351    unsafe impl fidl::encoding::TypeMarker for RealmGetRealmDeclResponse {
2352        type Owned = Self;
2353
2354        #[inline(always)]
2355        fn inline_align(_context: fidl::encoding::Context) -> usize {
2356            8
2357        }
2358
2359        #[inline(always)]
2360        fn inline_size(_context: fidl::encoding::Context) -> usize {
2361            16
2362        }
2363    }
2364
2365    unsafe impl<D: fidl::encoding::ResourceDialect>
2366        fidl::encoding::Encode<RealmGetRealmDeclResponse, D> for &RealmGetRealmDeclResponse
2367    {
2368        #[inline]
2369        unsafe fn encode(
2370            self,
2371            encoder: &mut fidl::encoding::Encoder<'_, D>,
2372            offset: usize,
2373            _depth: fidl::encoding::Depth,
2374        ) -> fidl::Result<()> {
2375            encoder.debug_check_bounds::<RealmGetRealmDeclResponse>(offset);
2376            // Delegate to tuple encoding.
2377            fidl::encoding::Encode::<RealmGetRealmDeclResponse, D>::encode(
2378                (
2379                    <fidl_fuchsia_component_decl::Component as fidl::encoding::ValueTypeMarker>::borrow(&self.component_decl),
2380                ),
2381                encoder, offset, _depth
2382            )
2383        }
2384    }
2385    unsafe impl<
2386            D: fidl::encoding::ResourceDialect,
2387            T0: fidl::encoding::Encode<fidl_fuchsia_component_decl::Component, D>,
2388        > fidl::encoding::Encode<RealmGetRealmDeclResponse, D> for (T0,)
2389    {
2390        #[inline]
2391        unsafe fn encode(
2392            self,
2393            encoder: &mut fidl::encoding::Encoder<'_, D>,
2394            offset: usize,
2395            depth: fidl::encoding::Depth,
2396        ) -> fidl::Result<()> {
2397            encoder.debug_check_bounds::<RealmGetRealmDeclResponse>(offset);
2398            // Zero out padding regions. There's no need to apply masks
2399            // because the unmasked parts will be overwritten by fields.
2400            // Write the fields.
2401            self.0.encode(encoder, offset + 0, depth)?;
2402            Ok(())
2403        }
2404    }
2405
2406    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2407        for RealmGetRealmDeclResponse
2408    {
2409        #[inline(always)]
2410        fn new_empty() -> Self {
2411            Self { component_decl: fidl::new_empty!(fidl_fuchsia_component_decl::Component, D) }
2412        }
2413
2414        #[inline]
2415        unsafe fn decode(
2416            &mut self,
2417            decoder: &mut fidl::encoding::Decoder<'_, D>,
2418            offset: usize,
2419            _depth: fidl::encoding::Depth,
2420        ) -> fidl::Result<()> {
2421            decoder.debug_check_bounds::<Self>(offset);
2422            // Verify that padding bytes are zero.
2423            fidl::decode!(
2424                fidl_fuchsia_component_decl::Component,
2425                D,
2426                &mut self.component_decl,
2427                decoder,
2428                offset + 0,
2429                _depth
2430            )?;
2431            Ok(())
2432        }
2433    }
2434
2435    impl ChildOptions {
2436        #[inline(always)]
2437        fn max_ordinal_present(&self) -> u64 {
2438            if let Some(_) = self.config_overrides {
2439                return 4;
2440            }
2441            if let Some(_) = self.on_terminate {
2442                return 3;
2443            }
2444            if let Some(_) = self.environment {
2445                return 2;
2446            }
2447            if let Some(_) = self.startup {
2448                return 1;
2449            }
2450            0
2451        }
2452    }
2453
2454    impl fidl::encoding::ValueTypeMarker for ChildOptions {
2455        type Borrowed<'a> = &'a Self;
2456        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2457            value
2458        }
2459    }
2460
2461    unsafe impl fidl::encoding::TypeMarker for ChildOptions {
2462        type Owned = Self;
2463
2464        #[inline(always)]
2465        fn inline_align(_context: fidl::encoding::Context) -> usize {
2466            8
2467        }
2468
2469        #[inline(always)]
2470        fn inline_size(_context: fidl::encoding::Context) -> usize {
2471            16
2472        }
2473    }
2474
2475    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildOptions, D>
2476        for &ChildOptions
2477    {
2478        unsafe fn encode(
2479            self,
2480            encoder: &mut fidl::encoding::Encoder<'_, D>,
2481            offset: usize,
2482            mut depth: fidl::encoding::Depth,
2483        ) -> fidl::Result<()> {
2484            encoder.debug_check_bounds::<ChildOptions>(offset);
2485            // Vector header
2486            let max_ordinal: u64 = self.max_ordinal_present();
2487            encoder.write_num(max_ordinal, offset);
2488            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2489            // Calling encoder.out_of_line_offset(0) is not allowed.
2490            if max_ordinal == 0 {
2491                return Ok(());
2492            }
2493            depth.increment()?;
2494            let envelope_size = 8;
2495            let bytes_len = max_ordinal as usize * envelope_size;
2496            #[allow(unused_variables)]
2497            let offset = encoder.out_of_line_offset(bytes_len);
2498            let mut _prev_end_offset: usize = 0;
2499            if 1 > max_ordinal {
2500                return Ok(());
2501            }
2502
2503            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2504            // are envelope_size bytes.
2505            let cur_offset: usize = (1 - 1) * envelope_size;
2506
2507            // Zero reserved fields.
2508            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2509
2510            // Safety:
2511            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2512            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2513            //   envelope_size bytes, there is always sufficient room.
2514            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::StartupMode, D>(
2515            self.startup.as_ref().map(<fidl_fuchsia_component_decl::StartupMode as fidl::encoding::ValueTypeMarker>::borrow),
2516            encoder, offset + cur_offset, depth
2517        )?;
2518
2519            _prev_end_offset = cur_offset + envelope_size;
2520            if 2 > max_ordinal {
2521                return Ok(());
2522            }
2523
2524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2525            // are envelope_size bytes.
2526            let cur_offset: usize = (2 - 1) * envelope_size;
2527
2528            // Zero reserved fields.
2529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2530
2531            // Safety:
2532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2534            //   envelope_size bytes, there is always sufficient room.
2535            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
2536                self.environment.as_ref().map(
2537                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2538                ),
2539                encoder,
2540                offset + cur_offset,
2541                depth,
2542            )?;
2543
2544            _prev_end_offset = cur_offset + envelope_size;
2545            if 3 > max_ordinal {
2546                return Ok(());
2547            }
2548
2549            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2550            // are envelope_size bytes.
2551            let cur_offset: usize = (3 - 1) * envelope_size;
2552
2553            // Zero reserved fields.
2554            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2555
2556            // Safety:
2557            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2558            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2559            //   envelope_size bytes, there is always sufficient room.
2560            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::OnTerminate, D>(
2561            self.on_terminate.as_ref().map(<fidl_fuchsia_component_decl::OnTerminate as fidl::encoding::ValueTypeMarker>::borrow),
2562            encoder, offset + cur_offset, depth
2563        )?;
2564
2565            _prev_end_offset = cur_offset + envelope_size;
2566            if 4 > max_ordinal {
2567                return Ok(());
2568            }
2569
2570            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2571            // are envelope_size bytes.
2572            let cur_offset: usize = (4 - 1) * envelope_size;
2573
2574            // Zero reserved fields.
2575            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2576
2577            // Safety:
2578            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2579            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2580            //   envelope_size bytes, there is always sufficient room.
2581            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::ConfigOverride>, D>(
2582            self.config_overrides.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::ConfigOverride> as fidl::encoding::ValueTypeMarker>::borrow),
2583            encoder, offset + cur_offset, depth
2584        )?;
2585
2586            _prev_end_offset = cur_offset + envelope_size;
2587
2588            Ok(())
2589        }
2590    }
2591
2592    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildOptions {
2593        #[inline(always)]
2594        fn new_empty() -> Self {
2595            Self::default()
2596        }
2597
2598        unsafe fn decode(
2599            &mut self,
2600            decoder: &mut fidl::encoding::Decoder<'_, D>,
2601            offset: usize,
2602            mut depth: fidl::encoding::Depth,
2603        ) -> fidl::Result<()> {
2604            decoder.debug_check_bounds::<Self>(offset);
2605            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2606                None => return Err(fidl::Error::NotNullable),
2607                Some(len) => len,
2608            };
2609            // Calling decoder.out_of_line_offset(0) is not allowed.
2610            if len == 0 {
2611                return Ok(());
2612            };
2613            depth.increment()?;
2614            let envelope_size = 8;
2615            let bytes_len = len * envelope_size;
2616            let offset = decoder.out_of_line_offset(bytes_len)?;
2617            // Decode the envelope for each type.
2618            let mut _next_ordinal_to_read = 0;
2619            let mut next_offset = offset;
2620            let end_offset = offset + bytes_len;
2621            _next_ordinal_to_read += 1;
2622            if next_offset >= end_offset {
2623                return Ok(());
2624            }
2625
2626            // Decode unknown envelopes for gaps in ordinals.
2627            while _next_ordinal_to_read < 1 {
2628                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2629                _next_ordinal_to_read += 1;
2630                next_offset += envelope_size;
2631            }
2632
2633            let next_out_of_line = decoder.next_out_of_line();
2634            let handles_before = decoder.remaining_handles();
2635            if let Some((inlined, num_bytes, num_handles)) =
2636                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2637            {
2638                let member_inline_size = <fidl_fuchsia_component_decl::StartupMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2639                if inlined != (member_inline_size <= 4) {
2640                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2641                }
2642                let inner_offset;
2643                let mut inner_depth = depth.clone();
2644                if inlined {
2645                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2646                    inner_offset = next_offset;
2647                } else {
2648                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2649                    inner_depth.increment()?;
2650                }
2651                let val_ref = self.startup.get_or_insert_with(|| {
2652                    fidl::new_empty!(fidl_fuchsia_component_decl::StartupMode, D)
2653                });
2654                fidl::decode!(
2655                    fidl_fuchsia_component_decl::StartupMode,
2656                    D,
2657                    val_ref,
2658                    decoder,
2659                    inner_offset,
2660                    inner_depth
2661                )?;
2662                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2663                {
2664                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2665                }
2666                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2667                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2668                }
2669            }
2670
2671            next_offset += envelope_size;
2672            _next_ordinal_to_read += 1;
2673            if next_offset >= end_offset {
2674                return Ok(());
2675            }
2676
2677            // Decode unknown envelopes for gaps in ordinals.
2678            while _next_ordinal_to_read < 2 {
2679                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2680                _next_ordinal_to_read += 1;
2681                next_offset += envelope_size;
2682            }
2683
2684            let next_out_of_line = decoder.next_out_of_line();
2685            let handles_before = decoder.remaining_handles();
2686            if let Some((inlined, num_bytes, num_handles)) =
2687                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2688            {
2689                let member_inline_size =
2690                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2691                        decoder.context,
2692                    );
2693                if inlined != (member_inline_size <= 4) {
2694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2695                }
2696                let inner_offset;
2697                let mut inner_depth = depth.clone();
2698                if inlined {
2699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2700                    inner_offset = next_offset;
2701                } else {
2702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2703                    inner_depth.increment()?;
2704                }
2705                let val_ref = self
2706                    .environment
2707                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2708                fidl::decode!(
2709                    fidl::encoding::BoundedString<255>,
2710                    D,
2711                    val_ref,
2712                    decoder,
2713                    inner_offset,
2714                    inner_depth
2715                )?;
2716                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2717                {
2718                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2719                }
2720                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2721                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2722                }
2723            }
2724
2725            next_offset += envelope_size;
2726            _next_ordinal_to_read += 1;
2727            if next_offset >= end_offset {
2728                return Ok(());
2729            }
2730
2731            // Decode unknown envelopes for gaps in ordinals.
2732            while _next_ordinal_to_read < 3 {
2733                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2734                _next_ordinal_to_read += 1;
2735                next_offset += envelope_size;
2736            }
2737
2738            let next_out_of_line = decoder.next_out_of_line();
2739            let handles_before = decoder.remaining_handles();
2740            if let Some((inlined, num_bytes, num_handles)) =
2741                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2742            {
2743                let member_inline_size = <fidl_fuchsia_component_decl::OnTerminate as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2744                if inlined != (member_inline_size <= 4) {
2745                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2746                }
2747                let inner_offset;
2748                let mut inner_depth = depth.clone();
2749                if inlined {
2750                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2751                    inner_offset = next_offset;
2752                } else {
2753                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2754                    inner_depth.increment()?;
2755                }
2756                let val_ref = self.on_terminate.get_or_insert_with(|| {
2757                    fidl::new_empty!(fidl_fuchsia_component_decl::OnTerminate, D)
2758                });
2759                fidl::decode!(
2760                    fidl_fuchsia_component_decl::OnTerminate,
2761                    D,
2762                    val_ref,
2763                    decoder,
2764                    inner_offset,
2765                    inner_depth
2766                )?;
2767                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2768                {
2769                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2770                }
2771                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2772                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2773                }
2774            }
2775
2776            next_offset += envelope_size;
2777            _next_ordinal_to_read += 1;
2778            if next_offset >= end_offset {
2779                return Ok(());
2780            }
2781
2782            // Decode unknown envelopes for gaps in ordinals.
2783            while _next_ordinal_to_read < 4 {
2784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2785                _next_ordinal_to_read += 1;
2786                next_offset += envelope_size;
2787            }
2788
2789            let next_out_of_line = decoder.next_out_of_line();
2790            let handles_before = decoder.remaining_handles();
2791            if let Some((inlined, num_bytes, num_handles)) =
2792                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2793            {
2794                let member_inline_size = <fidl::encoding::UnboundedVector<
2795                    fidl_fuchsia_component_decl::ConfigOverride,
2796                > as fidl::encoding::TypeMarker>::inline_size(
2797                    decoder.context
2798                );
2799                if inlined != (member_inline_size <= 4) {
2800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2801                }
2802                let inner_offset;
2803                let mut inner_depth = depth.clone();
2804                if inlined {
2805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2806                    inner_offset = next_offset;
2807                } else {
2808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2809                    inner_depth.increment()?;
2810                }
2811                let val_ref = self.config_overrides.get_or_insert_with(|| {
2812                    fidl::new_empty!(
2813                        fidl::encoding::UnboundedVector<
2814                            fidl_fuchsia_component_decl::ConfigOverride,
2815                        >,
2816                        D
2817                    )
2818                });
2819                fidl::decode!(
2820                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::ConfigOverride>,
2821                    D,
2822                    val_ref,
2823                    decoder,
2824                    inner_offset,
2825                    inner_depth
2826                )?;
2827                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2828                {
2829                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2830                }
2831                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2832                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2833                }
2834            }
2835
2836            next_offset += envelope_size;
2837
2838            // Decode the remaining unknown envelopes.
2839            while next_offset < end_offset {
2840                _next_ordinal_to_read += 1;
2841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2842                next_offset += envelope_size;
2843            }
2844
2845            Ok(())
2846        }
2847    }
2848
2849    impl Config {
2850        #[inline(always)]
2851        fn max_ordinal_present(&self) -> u64 {
2852            if let Some(_) = self.availability {
2853                return 3;
2854            }
2855            if let Some(_) = self.as_ {
2856                return 2;
2857            }
2858            if let Some(_) = self.name {
2859                return 1;
2860            }
2861            0
2862        }
2863    }
2864
2865    impl fidl::encoding::ValueTypeMarker for Config {
2866        type Borrowed<'a> = &'a Self;
2867        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2868            value
2869        }
2870    }
2871
2872    unsafe impl fidl::encoding::TypeMarker for Config {
2873        type Owned = Self;
2874
2875        #[inline(always)]
2876        fn inline_align(_context: fidl::encoding::Context) -> usize {
2877            8
2878        }
2879
2880        #[inline(always)]
2881        fn inline_size(_context: fidl::encoding::Context) -> usize {
2882            16
2883        }
2884    }
2885
2886    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
2887        unsafe fn encode(
2888            self,
2889            encoder: &mut fidl::encoding::Encoder<'_, D>,
2890            offset: usize,
2891            mut depth: fidl::encoding::Depth,
2892        ) -> fidl::Result<()> {
2893            encoder.debug_check_bounds::<Config>(offset);
2894            // Vector header
2895            let max_ordinal: u64 = self.max_ordinal_present();
2896            encoder.write_num(max_ordinal, offset);
2897            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2898            // Calling encoder.out_of_line_offset(0) is not allowed.
2899            if max_ordinal == 0 {
2900                return Ok(());
2901            }
2902            depth.increment()?;
2903            let envelope_size = 8;
2904            let bytes_len = max_ordinal as usize * envelope_size;
2905            #[allow(unused_variables)]
2906            let offset = encoder.out_of_line_offset(bytes_len);
2907            let mut _prev_end_offset: usize = 0;
2908            if 1 > max_ordinal {
2909                return Ok(());
2910            }
2911
2912            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2913            // are envelope_size bytes.
2914            let cur_offset: usize = (1 - 1) * envelope_size;
2915
2916            // Zero reserved fields.
2917            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2918
2919            // Safety:
2920            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2921            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2922            //   envelope_size bytes, there is always sufficient room.
2923            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
2924                self.name.as_ref().map(
2925                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2926                ),
2927                encoder,
2928                offset + cur_offset,
2929                depth,
2930            )?;
2931
2932            _prev_end_offset = cur_offset + envelope_size;
2933            if 2 > max_ordinal {
2934                return Ok(());
2935            }
2936
2937            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2938            // are envelope_size bytes.
2939            let cur_offset: usize = (2 - 1) * envelope_size;
2940
2941            // Zero reserved fields.
2942            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2943
2944            // Safety:
2945            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2946            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2947            //   envelope_size bytes, there is always sufficient room.
2948            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
2949                self.as_.as_ref().map(
2950                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2951                ),
2952                encoder,
2953                offset + cur_offset,
2954                depth,
2955            )?;
2956
2957            _prev_end_offset = cur_offset + envelope_size;
2958            if 3 > max_ordinal {
2959                return Ok(());
2960            }
2961
2962            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2963            // are envelope_size bytes.
2964            let cur_offset: usize = (3 - 1) * envelope_size;
2965
2966            // Zero reserved fields.
2967            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2968
2969            // Safety:
2970            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2971            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2972            //   envelope_size bytes, there is always sufficient room.
2973            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
2974            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
2975            encoder, offset + cur_offset, depth
2976        )?;
2977
2978            _prev_end_offset = cur_offset + envelope_size;
2979
2980            Ok(())
2981        }
2982    }
2983
2984    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
2985        #[inline(always)]
2986        fn new_empty() -> Self {
2987            Self::default()
2988        }
2989
2990        unsafe fn decode(
2991            &mut self,
2992            decoder: &mut fidl::encoding::Decoder<'_, D>,
2993            offset: usize,
2994            mut depth: fidl::encoding::Depth,
2995        ) -> fidl::Result<()> {
2996            decoder.debug_check_bounds::<Self>(offset);
2997            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2998                None => return Err(fidl::Error::NotNullable),
2999                Some(len) => len,
3000            };
3001            // Calling decoder.out_of_line_offset(0) is not allowed.
3002            if len == 0 {
3003                return Ok(());
3004            };
3005            depth.increment()?;
3006            let envelope_size = 8;
3007            let bytes_len = len * envelope_size;
3008            let offset = decoder.out_of_line_offset(bytes_len)?;
3009            // Decode the envelope for each type.
3010            let mut _next_ordinal_to_read = 0;
3011            let mut next_offset = offset;
3012            let end_offset = offset + bytes_len;
3013            _next_ordinal_to_read += 1;
3014            if next_offset >= end_offset {
3015                return Ok(());
3016            }
3017
3018            // Decode unknown envelopes for gaps in ordinals.
3019            while _next_ordinal_to_read < 1 {
3020                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3021                _next_ordinal_to_read += 1;
3022                next_offset += envelope_size;
3023            }
3024
3025            let next_out_of_line = decoder.next_out_of_line();
3026            let handles_before = decoder.remaining_handles();
3027            if let Some((inlined, num_bytes, num_handles)) =
3028                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3029            {
3030                let member_inline_size =
3031                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3032                        decoder.context,
3033                    );
3034                if inlined != (member_inline_size <= 4) {
3035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3036                }
3037                let inner_offset;
3038                let mut inner_depth = depth.clone();
3039                if inlined {
3040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3041                    inner_offset = next_offset;
3042                } else {
3043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3044                    inner_depth.increment()?;
3045                }
3046                let val_ref = self
3047                    .name
3048                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3049                fidl::decode!(
3050                    fidl::encoding::BoundedString<255>,
3051                    D,
3052                    val_ref,
3053                    decoder,
3054                    inner_offset,
3055                    inner_depth
3056                )?;
3057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3058                {
3059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3060                }
3061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3063                }
3064            }
3065
3066            next_offset += envelope_size;
3067            _next_ordinal_to_read += 1;
3068            if next_offset >= end_offset {
3069                return Ok(());
3070            }
3071
3072            // Decode unknown envelopes for gaps in ordinals.
3073            while _next_ordinal_to_read < 2 {
3074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3075                _next_ordinal_to_read += 1;
3076                next_offset += envelope_size;
3077            }
3078
3079            let next_out_of_line = decoder.next_out_of_line();
3080            let handles_before = decoder.remaining_handles();
3081            if let Some((inlined, num_bytes, num_handles)) =
3082                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3083            {
3084                let member_inline_size =
3085                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3086                        decoder.context,
3087                    );
3088                if inlined != (member_inline_size <= 4) {
3089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3090                }
3091                let inner_offset;
3092                let mut inner_depth = depth.clone();
3093                if inlined {
3094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3095                    inner_offset = next_offset;
3096                } else {
3097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3098                    inner_depth.increment()?;
3099                }
3100                let val_ref = self
3101                    .as_
3102                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3103                fidl::decode!(
3104                    fidl::encoding::BoundedString<255>,
3105                    D,
3106                    val_ref,
3107                    decoder,
3108                    inner_offset,
3109                    inner_depth
3110                )?;
3111                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3112                {
3113                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3114                }
3115                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3116                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3117                }
3118            }
3119
3120            next_offset += envelope_size;
3121            _next_ordinal_to_read += 1;
3122            if next_offset >= end_offset {
3123                return Ok(());
3124            }
3125
3126            // Decode unknown envelopes for gaps in ordinals.
3127            while _next_ordinal_to_read < 3 {
3128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3129                _next_ordinal_to_read += 1;
3130                next_offset += envelope_size;
3131            }
3132
3133            let next_out_of_line = decoder.next_out_of_line();
3134            let handles_before = decoder.remaining_handles();
3135            if let Some((inlined, num_bytes, num_handles)) =
3136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3137            {
3138                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3139                if inlined != (member_inline_size <= 4) {
3140                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3141                }
3142                let inner_offset;
3143                let mut inner_depth = depth.clone();
3144                if inlined {
3145                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3146                    inner_offset = next_offset;
3147                } else {
3148                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3149                    inner_depth.increment()?;
3150                }
3151                let val_ref = self.availability.get_or_insert_with(|| {
3152                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
3153                });
3154                fidl::decode!(
3155                    fidl_fuchsia_component_decl::Availability,
3156                    D,
3157                    val_ref,
3158                    decoder,
3159                    inner_offset,
3160                    inner_depth
3161                )?;
3162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3163                {
3164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3165                }
3166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3168                }
3169            }
3170
3171            next_offset += envelope_size;
3172
3173            // Decode the remaining unknown envelopes.
3174            while next_offset < end_offset {
3175                _next_ordinal_to_read += 1;
3176                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3177                next_offset += envelope_size;
3178            }
3179
3180            Ok(())
3181        }
3182    }
3183
3184    impl Dictionary {
3185        #[inline(always)]
3186        fn max_ordinal_present(&self) -> u64 {
3187            if let Some(_) = self.from_dictionary {
3188                return 5;
3189            }
3190            if let Some(_) = self.availability {
3191                return 4;
3192            }
3193            if let Some(_) = self.type_ {
3194                return 3;
3195            }
3196            if let Some(_) = self.as_ {
3197                return 2;
3198            }
3199            if let Some(_) = self.name {
3200                return 1;
3201            }
3202            0
3203        }
3204    }
3205
3206    impl fidl::encoding::ValueTypeMarker for Dictionary {
3207        type Borrowed<'a> = &'a Self;
3208        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3209            value
3210        }
3211    }
3212
3213    unsafe impl fidl::encoding::TypeMarker for Dictionary {
3214        type Owned = Self;
3215
3216        #[inline(always)]
3217        fn inline_align(_context: fidl::encoding::Context) -> usize {
3218            8
3219        }
3220
3221        #[inline(always)]
3222        fn inline_size(_context: fidl::encoding::Context) -> usize {
3223            16
3224        }
3225    }
3226
3227    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dictionary, D>
3228        for &Dictionary
3229    {
3230        unsafe fn encode(
3231            self,
3232            encoder: &mut fidl::encoding::Encoder<'_, D>,
3233            offset: usize,
3234            mut depth: fidl::encoding::Depth,
3235        ) -> fidl::Result<()> {
3236            encoder.debug_check_bounds::<Dictionary>(offset);
3237            // Vector header
3238            let max_ordinal: u64 = self.max_ordinal_present();
3239            encoder.write_num(max_ordinal, offset);
3240            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3241            // Calling encoder.out_of_line_offset(0) is not allowed.
3242            if max_ordinal == 0 {
3243                return Ok(());
3244            }
3245            depth.increment()?;
3246            let envelope_size = 8;
3247            let bytes_len = max_ordinal as usize * envelope_size;
3248            #[allow(unused_variables)]
3249            let offset = encoder.out_of_line_offset(bytes_len);
3250            let mut _prev_end_offset: usize = 0;
3251            if 1 > max_ordinal {
3252                return Ok(());
3253            }
3254
3255            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3256            // are envelope_size bytes.
3257            let cur_offset: usize = (1 - 1) * envelope_size;
3258
3259            // Zero reserved fields.
3260            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3261
3262            // Safety:
3263            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3264            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3265            //   envelope_size bytes, there is always sufficient room.
3266            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3267                self.name.as_ref().map(
3268                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3269                ),
3270                encoder,
3271                offset + cur_offset,
3272                depth,
3273            )?;
3274
3275            _prev_end_offset = cur_offset + envelope_size;
3276            if 2 > max_ordinal {
3277                return Ok(());
3278            }
3279
3280            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3281            // are envelope_size bytes.
3282            let cur_offset: usize = (2 - 1) * envelope_size;
3283
3284            // Zero reserved fields.
3285            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3286
3287            // Safety:
3288            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3289            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3290            //   envelope_size bytes, there is always sufficient room.
3291            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3292                self.as_.as_ref().map(
3293                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3294                ),
3295                encoder,
3296                offset + cur_offset,
3297                depth,
3298            )?;
3299
3300            _prev_end_offset = cur_offset + envelope_size;
3301            if 3 > max_ordinal {
3302                return Ok(());
3303            }
3304
3305            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3306            // are envelope_size bytes.
3307            let cur_offset: usize = (3 - 1) * envelope_size;
3308
3309            // Zero reserved fields.
3310            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3311
3312            // Safety:
3313            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3314            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3315            //   envelope_size bytes, there is always sufficient room.
3316            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::DependencyType, D>(
3317            self.type_.as_ref().map(<fidl_fuchsia_component_decl::DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
3318            encoder, offset + cur_offset, depth
3319        )?;
3320
3321            _prev_end_offset = cur_offset + envelope_size;
3322            if 4 > max_ordinal {
3323                return Ok(());
3324            }
3325
3326            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3327            // are envelope_size bytes.
3328            let cur_offset: usize = (4 - 1) * envelope_size;
3329
3330            // Zero reserved fields.
3331            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3332
3333            // Safety:
3334            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3335            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3336            //   envelope_size bytes, there is always sufficient room.
3337            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
3338            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
3339            encoder, offset + cur_offset, depth
3340        )?;
3341
3342            _prev_end_offset = cur_offset + envelope_size;
3343            if 5 > max_ordinal {
3344                return Ok(());
3345            }
3346
3347            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3348            // are envelope_size bytes.
3349            let cur_offset: usize = (5 - 1) * envelope_size;
3350
3351            // Zero reserved fields.
3352            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3353
3354            // Safety:
3355            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3356            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3357            //   envelope_size bytes, there is always sufficient room.
3358            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3359                self.from_dictionary.as_ref().map(
3360                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3361                ),
3362                encoder,
3363                offset + cur_offset,
3364                depth,
3365            )?;
3366
3367            _prev_end_offset = cur_offset + envelope_size;
3368
3369            Ok(())
3370        }
3371    }
3372
3373    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dictionary {
3374        #[inline(always)]
3375        fn new_empty() -> Self {
3376            Self::default()
3377        }
3378
3379        unsafe fn decode(
3380            &mut self,
3381            decoder: &mut fidl::encoding::Decoder<'_, D>,
3382            offset: usize,
3383            mut depth: fidl::encoding::Depth,
3384        ) -> fidl::Result<()> {
3385            decoder.debug_check_bounds::<Self>(offset);
3386            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3387                None => return Err(fidl::Error::NotNullable),
3388                Some(len) => len,
3389            };
3390            // Calling decoder.out_of_line_offset(0) is not allowed.
3391            if len == 0 {
3392                return Ok(());
3393            };
3394            depth.increment()?;
3395            let envelope_size = 8;
3396            let bytes_len = len * envelope_size;
3397            let offset = decoder.out_of_line_offset(bytes_len)?;
3398            // Decode the envelope for each type.
3399            let mut _next_ordinal_to_read = 0;
3400            let mut next_offset = offset;
3401            let end_offset = offset + bytes_len;
3402            _next_ordinal_to_read += 1;
3403            if next_offset >= end_offset {
3404                return Ok(());
3405            }
3406
3407            // Decode unknown envelopes for gaps in ordinals.
3408            while _next_ordinal_to_read < 1 {
3409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3410                _next_ordinal_to_read += 1;
3411                next_offset += envelope_size;
3412            }
3413
3414            let next_out_of_line = decoder.next_out_of_line();
3415            let handles_before = decoder.remaining_handles();
3416            if let Some((inlined, num_bytes, num_handles)) =
3417                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3418            {
3419                let member_inline_size =
3420                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3421                        decoder.context,
3422                    );
3423                if inlined != (member_inline_size <= 4) {
3424                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3425                }
3426                let inner_offset;
3427                let mut inner_depth = depth.clone();
3428                if inlined {
3429                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3430                    inner_offset = next_offset;
3431                } else {
3432                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3433                    inner_depth.increment()?;
3434                }
3435                let val_ref = self
3436                    .name
3437                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3438                fidl::decode!(
3439                    fidl::encoding::BoundedString<255>,
3440                    D,
3441                    val_ref,
3442                    decoder,
3443                    inner_offset,
3444                    inner_depth
3445                )?;
3446                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3447                {
3448                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3449                }
3450                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3451                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3452                }
3453            }
3454
3455            next_offset += envelope_size;
3456            _next_ordinal_to_read += 1;
3457            if next_offset >= end_offset {
3458                return Ok(());
3459            }
3460
3461            // Decode unknown envelopes for gaps in ordinals.
3462            while _next_ordinal_to_read < 2 {
3463                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3464                _next_ordinal_to_read += 1;
3465                next_offset += envelope_size;
3466            }
3467
3468            let next_out_of_line = decoder.next_out_of_line();
3469            let handles_before = decoder.remaining_handles();
3470            if let Some((inlined, num_bytes, num_handles)) =
3471                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3472            {
3473                let member_inline_size =
3474                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3475                        decoder.context,
3476                    );
3477                if inlined != (member_inline_size <= 4) {
3478                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3479                }
3480                let inner_offset;
3481                let mut inner_depth = depth.clone();
3482                if inlined {
3483                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3484                    inner_offset = next_offset;
3485                } else {
3486                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3487                    inner_depth.increment()?;
3488                }
3489                let val_ref = self
3490                    .as_
3491                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3492                fidl::decode!(
3493                    fidl::encoding::BoundedString<255>,
3494                    D,
3495                    val_ref,
3496                    decoder,
3497                    inner_offset,
3498                    inner_depth
3499                )?;
3500                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3501                {
3502                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3503                }
3504                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3505                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3506                }
3507            }
3508
3509            next_offset += envelope_size;
3510            _next_ordinal_to_read += 1;
3511            if next_offset >= end_offset {
3512                return Ok(());
3513            }
3514
3515            // Decode unknown envelopes for gaps in ordinals.
3516            while _next_ordinal_to_read < 3 {
3517                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3518                _next_ordinal_to_read += 1;
3519                next_offset += envelope_size;
3520            }
3521
3522            let next_out_of_line = decoder.next_out_of_line();
3523            let handles_before = decoder.remaining_handles();
3524            if let Some((inlined, num_bytes, num_handles)) =
3525                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3526            {
3527                let member_inline_size = <fidl_fuchsia_component_decl::DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3528                if inlined != (member_inline_size <= 4) {
3529                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3530                }
3531                let inner_offset;
3532                let mut inner_depth = depth.clone();
3533                if inlined {
3534                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3535                    inner_offset = next_offset;
3536                } else {
3537                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3538                    inner_depth.increment()?;
3539                }
3540                let val_ref = self.type_.get_or_insert_with(|| {
3541                    fidl::new_empty!(fidl_fuchsia_component_decl::DependencyType, D)
3542                });
3543                fidl::decode!(
3544                    fidl_fuchsia_component_decl::DependencyType,
3545                    D,
3546                    val_ref,
3547                    decoder,
3548                    inner_offset,
3549                    inner_depth
3550                )?;
3551                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3552                {
3553                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3554                }
3555                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3556                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3557                }
3558            }
3559
3560            next_offset += envelope_size;
3561            _next_ordinal_to_read += 1;
3562            if next_offset >= end_offset {
3563                return Ok(());
3564            }
3565
3566            // Decode unknown envelopes for gaps in ordinals.
3567            while _next_ordinal_to_read < 4 {
3568                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3569                _next_ordinal_to_read += 1;
3570                next_offset += envelope_size;
3571            }
3572
3573            let next_out_of_line = decoder.next_out_of_line();
3574            let handles_before = decoder.remaining_handles();
3575            if let Some((inlined, num_bytes, num_handles)) =
3576                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3577            {
3578                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3579                if inlined != (member_inline_size <= 4) {
3580                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3581                }
3582                let inner_offset;
3583                let mut inner_depth = depth.clone();
3584                if inlined {
3585                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3586                    inner_offset = next_offset;
3587                } else {
3588                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3589                    inner_depth.increment()?;
3590                }
3591                let val_ref = self.availability.get_or_insert_with(|| {
3592                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
3593                });
3594                fidl::decode!(
3595                    fidl_fuchsia_component_decl::Availability,
3596                    D,
3597                    val_ref,
3598                    decoder,
3599                    inner_offset,
3600                    inner_depth
3601                )?;
3602                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3603                {
3604                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3605                }
3606                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3607                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3608                }
3609            }
3610
3611            next_offset += envelope_size;
3612            _next_ordinal_to_read += 1;
3613            if next_offset >= end_offset {
3614                return Ok(());
3615            }
3616
3617            // Decode unknown envelopes for gaps in ordinals.
3618            while _next_ordinal_to_read < 5 {
3619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3620                _next_ordinal_to_read += 1;
3621                next_offset += envelope_size;
3622            }
3623
3624            let next_out_of_line = decoder.next_out_of_line();
3625            let handles_before = decoder.remaining_handles();
3626            if let Some((inlined, num_bytes, num_handles)) =
3627                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3628            {
3629                let member_inline_size =
3630                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3631                        decoder.context,
3632                    );
3633                if inlined != (member_inline_size <= 4) {
3634                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3635                }
3636                let inner_offset;
3637                let mut inner_depth = depth.clone();
3638                if inlined {
3639                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3640                    inner_offset = next_offset;
3641                } else {
3642                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3643                    inner_depth.increment()?;
3644                }
3645                let val_ref = self
3646                    .from_dictionary
3647                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3648                fidl::decode!(
3649                    fidl::encoding::UnboundedString,
3650                    D,
3651                    val_ref,
3652                    decoder,
3653                    inner_offset,
3654                    inner_depth
3655                )?;
3656                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3657                {
3658                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3659                }
3660                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3661                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3662                }
3663            }
3664
3665            next_offset += envelope_size;
3666
3667            // Decode the remaining unknown envelopes.
3668            while next_offset < end_offset {
3669                _next_ordinal_to_read += 1;
3670                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3671                next_offset += envelope_size;
3672            }
3673
3674            Ok(())
3675        }
3676    }
3677
3678    impl Directory {
3679        #[inline(always)]
3680        fn max_ordinal_present(&self) -> u64 {
3681            if let Some(_) = self.from_dictionary {
3682                return 8;
3683            }
3684            if let Some(_) = self.availability {
3685                return 7;
3686            }
3687            if let Some(_) = self.path {
3688                return 6;
3689            }
3690            if let Some(_) = self.rights {
3691                return 5;
3692            }
3693            if let Some(_) = self.subdir {
3694                return 4;
3695            }
3696            if let Some(_) = self.type_ {
3697                return 3;
3698            }
3699            if let Some(_) = self.as_ {
3700                return 2;
3701            }
3702            if let Some(_) = self.name {
3703                return 1;
3704            }
3705            0
3706        }
3707    }
3708
3709    impl fidl::encoding::ValueTypeMarker for Directory {
3710        type Borrowed<'a> = &'a Self;
3711        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3712            value
3713        }
3714    }
3715
3716    unsafe impl fidl::encoding::TypeMarker for Directory {
3717        type Owned = Self;
3718
3719        #[inline(always)]
3720        fn inline_align(_context: fidl::encoding::Context) -> usize {
3721            8
3722        }
3723
3724        #[inline(always)]
3725        fn inline_size(_context: fidl::encoding::Context) -> usize {
3726            16
3727        }
3728    }
3729
3730    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Directory, D>
3731        for &Directory
3732    {
3733        unsafe fn encode(
3734            self,
3735            encoder: &mut fidl::encoding::Encoder<'_, D>,
3736            offset: usize,
3737            mut depth: fidl::encoding::Depth,
3738        ) -> fidl::Result<()> {
3739            encoder.debug_check_bounds::<Directory>(offset);
3740            // Vector header
3741            let max_ordinal: u64 = self.max_ordinal_present();
3742            encoder.write_num(max_ordinal, offset);
3743            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3744            // Calling encoder.out_of_line_offset(0) is not allowed.
3745            if max_ordinal == 0 {
3746                return Ok(());
3747            }
3748            depth.increment()?;
3749            let envelope_size = 8;
3750            let bytes_len = max_ordinal as usize * envelope_size;
3751            #[allow(unused_variables)]
3752            let offset = encoder.out_of_line_offset(bytes_len);
3753            let mut _prev_end_offset: usize = 0;
3754            if 1 > max_ordinal {
3755                return Ok(());
3756            }
3757
3758            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3759            // are envelope_size bytes.
3760            let cur_offset: usize = (1 - 1) * envelope_size;
3761
3762            // Zero reserved fields.
3763            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3764
3765            // Safety:
3766            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3767            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3768            //   envelope_size bytes, there is always sufficient room.
3769            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3770                self.name.as_ref().map(
3771                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3772                ),
3773                encoder,
3774                offset + cur_offset,
3775                depth,
3776            )?;
3777
3778            _prev_end_offset = cur_offset + envelope_size;
3779            if 2 > max_ordinal {
3780                return Ok(());
3781            }
3782
3783            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3784            // are envelope_size bytes.
3785            let cur_offset: usize = (2 - 1) * envelope_size;
3786
3787            // Zero reserved fields.
3788            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3789
3790            // Safety:
3791            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3792            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3793            //   envelope_size bytes, there is always sufficient room.
3794            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3795                self.as_.as_ref().map(
3796                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3797                ),
3798                encoder,
3799                offset + cur_offset,
3800                depth,
3801            )?;
3802
3803            _prev_end_offset = cur_offset + envelope_size;
3804            if 3 > max_ordinal {
3805                return Ok(());
3806            }
3807
3808            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3809            // are envelope_size bytes.
3810            let cur_offset: usize = (3 - 1) * envelope_size;
3811
3812            // Zero reserved fields.
3813            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3814
3815            // Safety:
3816            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3817            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3818            //   envelope_size bytes, there is always sufficient room.
3819            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::DependencyType, D>(
3820            self.type_.as_ref().map(<fidl_fuchsia_component_decl::DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
3821            encoder, offset + cur_offset, depth
3822        )?;
3823
3824            _prev_end_offset = cur_offset + envelope_size;
3825            if 4 > max_ordinal {
3826                return Ok(());
3827            }
3828
3829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3830            // are envelope_size bytes.
3831            let cur_offset: usize = (4 - 1) * envelope_size;
3832
3833            // Zero reserved fields.
3834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3835
3836            // Safety:
3837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3839            //   envelope_size bytes, there is always sufficient room.
3840            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
3841            self.subdir.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
3842            encoder, offset + cur_offset, depth
3843        )?;
3844
3845            _prev_end_offset = cur_offset + envelope_size;
3846            if 5 > max_ordinal {
3847                return Ok(());
3848            }
3849
3850            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3851            // are envelope_size bytes.
3852            let cur_offset: usize = (5 - 1) * envelope_size;
3853
3854            // Zero reserved fields.
3855            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3856
3857            // Safety:
3858            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3859            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3860            //   envelope_size bytes, there is always sufficient room.
3861            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_io::Operations, D>(
3862                self.rights
3863                    .as_ref()
3864                    .map(<fidl_fuchsia_io::Operations as fidl::encoding::ValueTypeMarker>::borrow),
3865                encoder,
3866                offset + cur_offset,
3867                depth,
3868            )?;
3869
3870            _prev_end_offset = cur_offset + envelope_size;
3871            if 6 > max_ordinal {
3872                return Ok(());
3873            }
3874
3875            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3876            // are envelope_size bytes.
3877            let cur_offset: usize = (6 - 1) * envelope_size;
3878
3879            // Zero reserved fields.
3880            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3881
3882            // Safety:
3883            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3884            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3885            //   envelope_size bytes, there is always sufficient room.
3886            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
3887            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
3888            encoder, offset + cur_offset, depth
3889        )?;
3890
3891            _prev_end_offset = cur_offset + envelope_size;
3892            if 7 > max_ordinal {
3893                return Ok(());
3894            }
3895
3896            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3897            // are envelope_size bytes.
3898            let cur_offset: usize = (7 - 1) * envelope_size;
3899
3900            // Zero reserved fields.
3901            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3902
3903            // Safety:
3904            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3905            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3906            //   envelope_size bytes, there is always sufficient room.
3907            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
3908            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
3909            encoder, offset + cur_offset, depth
3910        )?;
3911
3912            _prev_end_offset = cur_offset + envelope_size;
3913            if 8 > max_ordinal {
3914                return Ok(());
3915            }
3916
3917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3918            // are envelope_size bytes.
3919            let cur_offset: usize = (8 - 1) * envelope_size;
3920
3921            // Zero reserved fields.
3922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3923
3924            // Safety:
3925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3927            //   envelope_size bytes, there is always sufficient room.
3928            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3929                self.from_dictionary.as_ref().map(
3930                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3931                ),
3932                encoder,
3933                offset + cur_offset,
3934                depth,
3935            )?;
3936
3937            _prev_end_offset = cur_offset + envelope_size;
3938
3939            Ok(())
3940        }
3941    }
3942
3943    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Directory {
3944        #[inline(always)]
3945        fn new_empty() -> Self {
3946            Self::default()
3947        }
3948
3949        unsafe fn decode(
3950            &mut self,
3951            decoder: &mut fidl::encoding::Decoder<'_, D>,
3952            offset: usize,
3953            mut depth: fidl::encoding::Depth,
3954        ) -> fidl::Result<()> {
3955            decoder.debug_check_bounds::<Self>(offset);
3956            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3957                None => return Err(fidl::Error::NotNullable),
3958                Some(len) => len,
3959            };
3960            // Calling decoder.out_of_line_offset(0) is not allowed.
3961            if len == 0 {
3962                return Ok(());
3963            };
3964            depth.increment()?;
3965            let envelope_size = 8;
3966            let bytes_len = len * envelope_size;
3967            let offset = decoder.out_of_line_offset(bytes_len)?;
3968            // Decode the envelope for each type.
3969            let mut _next_ordinal_to_read = 0;
3970            let mut next_offset = offset;
3971            let end_offset = offset + bytes_len;
3972            _next_ordinal_to_read += 1;
3973            if next_offset >= end_offset {
3974                return Ok(());
3975            }
3976
3977            // Decode unknown envelopes for gaps in ordinals.
3978            while _next_ordinal_to_read < 1 {
3979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3980                _next_ordinal_to_read += 1;
3981                next_offset += envelope_size;
3982            }
3983
3984            let next_out_of_line = decoder.next_out_of_line();
3985            let handles_before = decoder.remaining_handles();
3986            if let Some((inlined, num_bytes, num_handles)) =
3987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3988            {
3989                let member_inline_size =
3990                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3991                        decoder.context,
3992                    );
3993                if inlined != (member_inline_size <= 4) {
3994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3995                }
3996                let inner_offset;
3997                let mut inner_depth = depth.clone();
3998                if inlined {
3999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4000                    inner_offset = next_offset;
4001                } else {
4002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4003                    inner_depth.increment()?;
4004                }
4005                let val_ref = self
4006                    .name
4007                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4008                fidl::decode!(
4009                    fidl::encoding::BoundedString<255>,
4010                    D,
4011                    val_ref,
4012                    decoder,
4013                    inner_offset,
4014                    inner_depth
4015                )?;
4016                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4017                {
4018                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4019                }
4020                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4021                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4022                }
4023            }
4024
4025            next_offset += envelope_size;
4026            _next_ordinal_to_read += 1;
4027            if next_offset >= end_offset {
4028                return Ok(());
4029            }
4030
4031            // Decode unknown envelopes for gaps in ordinals.
4032            while _next_ordinal_to_read < 2 {
4033                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4034                _next_ordinal_to_read += 1;
4035                next_offset += envelope_size;
4036            }
4037
4038            let next_out_of_line = decoder.next_out_of_line();
4039            let handles_before = decoder.remaining_handles();
4040            if let Some((inlined, num_bytes, num_handles)) =
4041                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4042            {
4043                let member_inline_size =
4044                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4045                        decoder.context,
4046                    );
4047                if inlined != (member_inline_size <= 4) {
4048                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4049                }
4050                let inner_offset;
4051                let mut inner_depth = depth.clone();
4052                if inlined {
4053                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4054                    inner_offset = next_offset;
4055                } else {
4056                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4057                    inner_depth.increment()?;
4058                }
4059                let val_ref = self
4060                    .as_
4061                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4062                fidl::decode!(
4063                    fidl::encoding::BoundedString<255>,
4064                    D,
4065                    val_ref,
4066                    decoder,
4067                    inner_offset,
4068                    inner_depth
4069                )?;
4070                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4071                {
4072                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4073                }
4074                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4075                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4076                }
4077            }
4078
4079            next_offset += envelope_size;
4080            _next_ordinal_to_read += 1;
4081            if next_offset >= end_offset {
4082                return Ok(());
4083            }
4084
4085            // Decode unknown envelopes for gaps in ordinals.
4086            while _next_ordinal_to_read < 3 {
4087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4088                _next_ordinal_to_read += 1;
4089                next_offset += envelope_size;
4090            }
4091
4092            let next_out_of_line = decoder.next_out_of_line();
4093            let handles_before = decoder.remaining_handles();
4094            if let Some((inlined, num_bytes, num_handles)) =
4095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4096            {
4097                let member_inline_size = <fidl_fuchsia_component_decl::DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4098                if inlined != (member_inline_size <= 4) {
4099                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4100                }
4101                let inner_offset;
4102                let mut inner_depth = depth.clone();
4103                if inlined {
4104                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4105                    inner_offset = next_offset;
4106                } else {
4107                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4108                    inner_depth.increment()?;
4109                }
4110                let val_ref = self.type_.get_or_insert_with(|| {
4111                    fidl::new_empty!(fidl_fuchsia_component_decl::DependencyType, D)
4112                });
4113                fidl::decode!(
4114                    fidl_fuchsia_component_decl::DependencyType,
4115                    D,
4116                    val_ref,
4117                    decoder,
4118                    inner_offset,
4119                    inner_depth
4120                )?;
4121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4122                {
4123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4124                }
4125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4127                }
4128            }
4129
4130            next_offset += envelope_size;
4131            _next_ordinal_to_read += 1;
4132            if next_offset >= end_offset {
4133                return Ok(());
4134            }
4135
4136            // Decode unknown envelopes for gaps in ordinals.
4137            while _next_ordinal_to_read < 4 {
4138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4139                _next_ordinal_to_read += 1;
4140                next_offset += envelope_size;
4141            }
4142
4143            let next_out_of_line = decoder.next_out_of_line();
4144            let handles_before = decoder.remaining_handles();
4145            if let Some((inlined, num_bytes, num_handles)) =
4146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4147            {
4148                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4149                if inlined != (member_inline_size <= 4) {
4150                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4151                }
4152                let inner_offset;
4153                let mut inner_depth = depth.clone();
4154                if inlined {
4155                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4156                    inner_offset = next_offset;
4157                } else {
4158                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4159                    inner_depth.increment()?;
4160                }
4161                let val_ref = self.subdir.get_or_insert_with(|| {
4162                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
4163                });
4164                fidl::decode!(
4165                    fidl::encoding::BoundedString<4095>,
4166                    D,
4167                    val_ref,
4168                    decoder,
4169                    inner_offset,
4170                    inner_depth
4171                )?;
4172                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4173                {
4174                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4175                }
4176                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4177                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4178                }
4179            }
4180
4181            next_offset += envelope_size;
4182            _next_ordinal_to_read += 1;
4183            if next_offset >= end_offset {
4184                return Ok(());
4185            }
4186
4187            // Decode unknown envelopes for gaps in ordinals.
4188            while _next_ordinal_to_read < 5 {
4189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4190                _next_ordinal_to_read += 1;
4191                next_offset += envelope_size;
4192            }
4193
4194            let next_out_of_line = decoder.next_out_of_line();
4195            let handles_before = decoder.remaining_handles();
4196            if let Some((inlined, num_bytes, num_handles)) =
4197                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4198            {
4199                let member_inline_size =
4200                    <fidl_fuchsia_io::Operations as fidl::encoding::TypeMarker>::inline_size(
4201                        decoder.context,
4202                    );
4203                if inlined != (member_inline_size <= 4) {
4204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4205                }
4206                let inner_offset;
4207                let mut inner_depth = depth.clone();
4208                if inlined {
4209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4210                    inner_offset = next_offset;
4211                } else {
4212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4213                    inner_depth.increment()?;
4214                }
4215                let val_ref = self
4216                    .rights
4217                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_io::Operations, D));
4218                fidl::decode!(
4219                    fidl_fuchsia_io::Operations,
4220                    D,
4221                    val_ref,
4222                    decoder,
4223                    inner_offset,
4224                    inner_depth
4225                )?;
4226                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4227                {
4228                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4229                }
4230                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4231                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4232                }
4233            }
4234
4235            next_offset += envelope_size;
4236            _next_ordinal_to_read += 1;
4237            if next_offset >= end_offset {
4238                return Ok(());
4239            }
4240
4241            // Decode unknown envelopes for gaps in ordinals.
4242            while _next_ordinal_to_read < 6 {
4243                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4244                _next_ordinal_to_read += 1;
4245                next_offset += envelope_size;
4246            }
4247
4248            let next_out_of_line = decoder.next_out_of_line();
4249            let handles_before = decoder.remaining_handles();
4250            if let Some((inlined, num_bytes, num_handles)) =
4251                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4252            {
4253                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4254                if inlined != (member_inline_size <= 4) {
4255                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4256                }
4257                let inner_offset;
4258                let mut inner_depth = depth.clone();
4259                if inlined {
4260                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4261                    inner_offset = next_offset;
4262                } else {
4263                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4264                    inner_depth.increment()?;
4265                }
4266                let val_ref = self.path.get_or_insert_with(|| {
4267                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
4268                });
4269                fidl::decode!(
4270                    fidl::encoding::BoundedString<4095>,
4271                    D,
4272                    val_ref,
4273                    decoder,
4274                    inner_offset,
4275                    inner_depth
4276                )?;
4277                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4278                {
4279                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4280                }
4281                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4282                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4283                }
4284            }
4285
4286            next_offset += envelope_size;
4287            _next_ordinal_to_read += 1;
4288            if next_offset >= end_offset {
4289                return Ok(());
4290            }
4291
4292            // Decode unknown envelopes for gaps in ordinals.
4293            while _next_ordinal_to_read < 7 {
4294                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4295                _next_ordinal_to_read += 1;
4296                next_offset += envelope_size;
4297            }
4298
4299            let next_out_of_line = decoder.next_out_of_line();
4300            let handles_before = decoder.remaining_handles();
4301            if let Some((inlined, num_bytes, num_handles)) =
4302                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4303            {
4304                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4305                if inlined != (member_inline_size <= 4) {
4306                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4307                }
4308                let inner_offset;
4309                let mut inner_depth = depth.clone();
4310                if inlined {
4311                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4312                    inner_offset = next_offset;
4313                } else {
4314                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4315                    inner_depth.increment()?;
4316                }
4317                let val_ref = self.availability.get_or_insert_with(|| {
4318                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
4319                });
4320                fidl::decode!(
4321                    fidl_fuchsia_component_decl::Availability,
4322                    D,
4323                    val_ref,
4324                    decoder,
4325                    inner_offset,
4326                    inner_depth
4327                )?;
4328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4329                {
4330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4331                }
4332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4334                }
4335            }
4336
4337            next_offset += envelope_size;
4338            _next_ordinal_to_read += 1;
4339            if next_offset >= end_offset {
4340                return Ok(());
4341            }
4342
4343            // Decode unknown envelopes for gaps in ordinals.
4344            while _next_ordinal_to_read < 8 {
4345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4346                _next_ordinal_to_read += 1;
4347                next_offset += envelope_size;
4348            }
4349
4350            let next_out_of_line = decoder.next_out_of_line();
4351            let handles_before = decoder.remaining_handles();
4352            if let Some((inlined, num_bytes, num_handles)) =
4353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4354            {
4355                let member_inline_size =
4356                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4357                        decoder.context,
4358                    );
4359                if inlined != (member_inline_size <= 4) {
4360                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4361                }
4362                let inner_offset;
4363                let mut inner_depth = depth.clone();
4364                if inlined {
4365                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4366                    inner_offset = next_offset;
4367                } else {
4368                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4369                    inner_depth.increment()?;
4370                }
4371                let val_ref = self
4372                    .from_dictionary
4373                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4374                fidl::decode!(
4375                    fidl::encoding::UnboundedString,
4376                    D,
4377                    val_ref,
4378                    decoder,
4379                    inner_offset,
4380                    inner_depth
4381                )?;
4382                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4383                {
4384                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4385                }
4386                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4387                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4388                }
4389            }
4390
4391            next_offset += envelope_size;
4392
4393            // Decode the remaining unknown envelopes.
4394            while next_offset < end_offset {
4395                _next_ordinal_to_read += 1;
4396                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4397                next_offset += envelope_size;
4398            }
4399
4400            Ok(())
4401        }
4402    }
4403
4404    impl Event {
4405        #[inline(always)]
4406        fn max_ordinal_present(&self) -> u64 {
4407            if let Some(_) = self.availability {
4408                return 4;
4409            }
4410            if let Some(_) = self.filter {
4411                return 3;
4412            }
4413            if let Some(_) = self.as_ {
4414                return 2;
4415            }
4416            if let Some(_) = self.name {
4417                return 1;
4418            }
4419            0
4420        }
4421    }
4422
4423    impl fidl::encoding::ValueTypeMarker for Event {
4424        type Borrowed<'a> = &'a Self;
4425        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4426            value
4427        }
4428    }
4429
4430    unsafe impl fidl::encoding::TypeMarker for Event {
4431        type Owned = Self;
4432
4433        #[inline(always)]
4434        fn inline_align(_context: fidl::encoding::Context) -> usize {
4435            8
4436        }
4437
4438        #[inline(always)]
4439        fn inline_size(_context: fidl::encoding::Context) -> usize {
4440            16
4441        }
4442    }
4443
4444    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Event, D> for &Event {
4445        unsafe fn encode(
4446            self,
4447            encoder: &mut fidl::encoding::Encoder<'_, D>,
4448            offset: usize,
4449            mut depth: fidl::encoding::Depth,
4450        ) -> fidl::Result<()> {
4451            encoder.debug_check_bounds::<Event>(offset);
4452            // Vector header
4453            let max_ordinal: u64 = self.max_ordinal_present();
4454            encoder.write_num(max_ordinal, offset);
4455            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4456            // Calling encoder.out_of_line_offset(0) is not allowed.
4457            if max_ordinal == 0 {
4458                return Ok(());
4459            }
4460            depth.increment()?;
4461            let envelope_size = 8;
4462            let bytes_len = max_ordinal as usize * envelope_size;
4463            #[allow(unused_variables)]
4464            let offset = encoder.out_of_line_offset(bytes_len);
4465            let mut _prev_end_offset: usize = 0;
4466            if 1 > max_ordinal {
4467                return Ok(());
4468            }
4469
4470            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4471            // are envelope_size bytes.
4472            let cur_offset: usize = (1 - 1) * envelope_size;
4473
4474            // Zero reserved fields.
4475            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4476
4477            // Safety:
4478            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4479            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4480            //   envelope_size bytes, there is always sufficient room.
4481            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4482                self.name.as_ref().map(
4483                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4484                ),
4485                encoder,
4486                offset + cur_offset,
4487                depth,
4488            )?;
4489
4490            _prev_end_offset = cur_offset + envelope_size;
4491            if 2 > max_ordinal {
4492                return Ok(());
4493            }
4494
4495            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4496            // are envelope_size bytes.
4497            let cur_offset: usize = (2 - 1) * envelope_size;
4498
4499            // Zero reserved fields.
4500            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4501
4502            // Safety:
4503            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4504            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4505            //   envelope_size bytes, there is always sufficient room.
4506            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4507                self.as_.as_ref().map(
4508                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4509                ),
4510                encoder,
4511                offset + cur_offset,
4512                depth,
4513            )?;
4514
4515            _prev_end_offset = cur_offset + envelope_size;
4516            if 3 > max_ordinal {
4517                return Ok(());
4518            }
4519
4520            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4521            // are envelope_size bytes.
4522            let cur_offset: usize = (3 - 1) * envelope_size;
4523
4524            // Zero reserved fields.
4525            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4526
4527            // Safety:
4528            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4529            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4530            //   envelope_size bytes, there is always sufficient room.
4531            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data::Dictionary, D>(
4532                self.filter.as_ref().map(
4533                    <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
4534                ),
4535                encoder,
4536                offset + cur_offset,
4537                depth,
4538            )?;
4539
4540            _prev_end_offset = cur_offset + envelope_size;
4541            if 4 > max_ordinal {
4542                return Ok(());
4543            }
4544
4545            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4546            // are envelope_size bytes.
4547            let cur_offset: usize = (4 - 1) * envelope_size;
4548
4549            // Zero reserved fields.
4550            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4551
4552            // Safety:
4553            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4554            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4555            //   envelope_size bytes, there is always sufficient room.
4556            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
4557            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
4558            encoder, offset + cur_offset, depth
4559        )?;
4560
4561            _prev_end_offset = cur_offset + envelope_size;
4562
4563            Ok(())
4564        }
4565    }
4566
4567    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Event {
4568        #[inline(always)]
4569        fn new_empty() -> Self {
4570            Self::default()
4571        }
4572
4573        unsafe fn decode(
4574            &mut self,
4575            decoder: &mut fidl::encoding::Decoder<'_, D>,
4576            offset: usize,
4577            mut depth: fidl::encoding::Depth,
4578        ) -> fidl::Result<()> {
4579            decoder.debug_check_bounds::<Self>(offset);
4580            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4581                None => return Err(fidl::Error::NotNullable),
4582                Some(len) => len,
4583            };
4584            // Calling decoder.out_of_line_offset(0) is not allowed.
4585            if len == 0 {
4586                return Ok(());
4587            };
4588            depth.increment()?;
4589            let envelope_size = 8;
4590            let bytes_len = len * envelope_size;
4591            let offset = decoder.out_of_line_offset(bytes_len)?;
4592            // Decode the envelope for each type.
4593            let mut _next_ordinal_to_read = 0;
4594            let mut next_offset = offset;
4595            let end_offset = offset + bytes_len;
4596            _next_ordinal_to_read += 1;
4597            if next_offset >= end_offset {
4598                return Ok(());
4599            }
4600
4601            // Decode unknown envelopes for gaps in ordinals.
4602            while _next_ordinal_to_read < 1 {
4603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4604                _next_ordinal_to_read += 1;
4605                next_offset += envelope_size;
4606            }
4607
4608            let next_out_of_line = decoder.next_out_of_line();
4609            let handles_before = decoder.remaining_handles();
4610            if let Some((inlined, num_bytes, num_handles)) =
4611                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4612            {
4613                let member_inline_size =
4614                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4615                        decoder.context,
4616                    );
4617                if inlined != (member_inline_size <= 4) {
4618                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4619                }
4620                let inner_offset;
4621                let mut inner_depth = depth.clone();
4622                if inlined {
4623                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4624                    inner_offset = next_offset;
4625                } else {
4626                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4627                    inner_depth.increment()?;
4628                }
4629                let val_ref = self
4630                    .name
4631                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4632                fidl::decode!(
4633                    fidl::encoding::BoundedString<255>,
4634                    D,
4635                    val_ref,
4636                    decoder,
4637                    inner_offset,
4638                    inner_depth
4639                )?;
4640                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4641                {
4642                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4643                }
4644                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4645                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4646                }
4647            }
4648
4649            next_offset += envelope_size;
4650            _next_ordinal_to_read += 1;
4651            if next_offset >= end_offset {
4652                return Ok(());
4653            }
4654
4655            // Decode unknown envelopes for gaps in ordinals.
4656            while _next_ordinal_to_read < 2 {
4657                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4658                _next_ordinal_to_read += 1;
4659                next_offset += envelope_size;
4660            }
4661
4662            let next_out_of_line = decoder.next_out_of_line();
4663            let handles_before = decoder.remaining_handles();
4664            if let Some((inlined, num_bytes, num_handles)) =
4665                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4666            {
4667                let member_inline_size =
4668                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4669                        decoder.context,
4670                    );
4671                if inlined != (member_inline_size <= 4) {
4672                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4673                }
4674                let inner_offset;
4675                let mut inner_depth = depth.clone();
4676                if inlined {
4677                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4678                    inner_offset = next_offset;
4679                } else {
4680                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4681                    inner_depth.increment()?;
4682                }
4683                let val_ref = self
4684                    .as_
4685                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4686                fidl::decode!(
4687                    fidl::encoding::BoundedString<255>,
4688                    D,
4689                    val_ref,
4690                    decoder,
4691                    inner_offset,
4692                    inner_depth
4693                )?;
4694                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4695                {
4696                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4697                }
4698                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4699                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4700                }
4701            }
4702
4703            next_offset += envelope_size;
4704            _next_ordinal_to_read += 1;
4705            if next_offset >= end_offset {
4706                return Ok(());
4707            }
4708
4709            // Decode unknown envelopes for gaps in ordinals.
4710            while _next_ordinal_to_read < 3 {
4711                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4712                _next_ordinal_to_read += 1;
4713                next_offset += envelope_size;
4714            }
4715
4716            let next_out_of_line = decoder.next_out_of_line();
4717            let handles_before = decoder.remaining_handles();
4718            if let Some((inlined, num_bytes, num_handles)) =
4719                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4720            {
4721                let member_inline_size =
4722                    <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
4723                        decoder.context,
4724                    );
4725                if inlined != (member_inline_size <= 4) {
4726                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4727                }
4728                let inner_offset;
4729                let mut inner_depth = depth.clone();
4730                if inlined {
4731                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4732                    inner_offset = next_offset;
4733                } else {
4734                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4735                    inner_depth.increment()?;
4736                }
4737                let val_ref = self
4738                    .filter
4739                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_data::Dictionary, D));
4740                fidl::decode!(
4741                    fidl_fuchsia_data::Dictionary,
4742                    D,
4743                    val_ref,
4744                    decoder,
4745                    inner_offset,
4746                    inner_depth
4747                )?;
4748                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4749                {
4750                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4751                }
4752                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4753                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4754                }
4755            }
4756
4757            next_offset += envelope_size;
4758            _next_ordinal_to_read += 1;
4759            if next_offset >= end_offset {
4760                return Ok(());
4761            }
4762
4763            // Decode unknown envelopes for gaps in ordinals.
4764            while _next_ordinal_to_read < 4 {
4765                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4766                _next_ordinal_to_read += 1;
4767                next_offset += envelope_size;
4768            }
4769
4770            let next_out_of_line = decoder.next_out_of_line();
4771            let handles_before = decoder.remaining_handles();
4772            if let Some((inlined, num_bytes, num_handles)) =
4773                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4774            {
4775                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4776                if inlined != (member_inline_size <= 4) {
4777                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4778                }
4779                let inner_offset;
4780                let mut inner_depth = depth.clone();
4781                if inlined {
4782                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4783                    inner_offset = next_offset;
4784                } else {
4785                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4786                    inner_depth.increment()?;
4787                }
4788                let val_ref = self.availability.get_or_insert_with(|| {
4789                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
4790                });
4791                fidl::decode!(
4792                    fidl_fuchsia_component_decl::Availability,
4793                    D,
4794                    val_ref,
4795                    decoder,
4796                    inner_offset,
4797                    inner_depth
4798                )?;
4799                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4800                {
4801                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4802                }
4803                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4804                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4805                }
4806            }
4807
4808            next_offset += envelope_size;
4809
4810            // Decode the remaining unknown envelopes.
4811            while next_offset < end_offset {
4812                _next_ordinal_to_read += 1;
4813                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4814                next_offset += envelope_size;
4815            }
4816
4817            Ok(())
4818        }
4819    }
4820
4821    impl EventStream {
4822        #[inline(always)]
4823        fn max_ordinal_present(&self) -> u64 {
4824            if let Some(_) = self.scope {
4825                return 5;
4826            }
4827            if let Some(_) = self.filter {
4828                return 4;
4829            }
4830            if let Some(_) = self.path {
4831                return 3;
4832            }
4833            if let Some(_) = self.as_ {
4834                return 2;
4835            }
4836            if let Some(_) = self.name {
4837                return 1;
4838            }
4839            0
4840        }
4841    }
4842
4843    impl fidl::encoding::ValueTypeMarker for EventStream {
4844        type Borrowed<'a> = &'a Self;
4845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4846            value
4847        }
4848    }
4849
4850    unsafe impl fidl::encoding::TypeMarker for EventStream {
4851        type Owned = Self;
4852
4853        #[inline(always)]
4854        fn inline_align(_context: fidl::encoding::Context) -> usize {
4855            8
4856        }
4857
4858        #[inline(always)]
4859        fn inline_size(_context: fidl::encoding::Context) -> usize {
4860            16
4861        }
4862    }
4863
4864    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventStream, D>
4865        for &EventStream
4866    {
4867        unsafe fn encode(
4868            self,
4869            encoder: &mut fidl::encoding::Encoder<'_, D>,
4870            offset: usize,
4871            mut depth: fidl::encoding::Depth,
4872        ) -> fidl::Result<()> {
4873            encoder.debug_check_bounds::<EventStream>(offset);
4874            // Vector header
4875            let max_ordinal: u64 = self.max_ordinal_present();
4876            encoder.write_num(max_ordinal, offset);
4877            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4878            // Calling encoder.out_of_line_offset(0) is not allowed.
4879            if max_ordinal == 0 {
4880                return Ok(());
4881            }
4882            depth.increment()?;
4883            let envelope_size = 8;
4884            let bytes_len = max_ordinal as usize * envelope_size;
4885            #[allow(unused_variables)]
4886            let offset = encoder.out_of_line_offset(bytes_len);
4887            let mut _prev_end_offset: usize = 0;
4888            if 1 > max_ordinal {
4889                return Ok(());
4890            }
4891
4892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4893            // are envelope_size bytes.
4894            let cur_offset: usize = (1 - 1) * envelope_size;
4895
4896            // Zero reserved fields.
4897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4898
4899            // Safety:
4900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4902            //   envelope_size bytes, there is always sufficient room.
4903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4904                self.name.as_ref().map(
4905                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4906                ),
4907                encoder,
4908                offset + cur_offset,
4909                depth,
4910            )?;
4911
4912            _prev_end_offset = cur_offset + envelope_size;
4913            if 2 > max_ordinal {
4914                return Ok(());
4915            }
4916
4917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4918            // are envelope_size bytes.
4919            let cur_offset: usize = (2 - 1) * envelope_size;
4920
4921            // Zero reserved fields.
4922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4923
4924            // Safety:
4925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4927            //   envelope_size bytes, there is always sufficient room.
4928            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4929                self.as_.as_ref().map(
4930                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4931                ),
4932                encoder,
4933                offset + cur_offset,
4934                depth,
4935            )?;
4936
4937            _prev_end_offset = cur_offset + envelope_size;
4938            if 3 > max_ordinal {
4939                return Ok(());
4940            }
4941
4942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4943            // are envelope_size bytes.
4944            let cur_offset: usize = (3 - 1) * envelope_size;
4945
4946            // Zero reserved fields.
4947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4948
4949            // Safety:
4950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4952            //   envelope_size bytes, there is always sufficient room.
4953            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
4954            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
4955            encoder, offset + cur_offset, depth
4956        )?;
4957
4958            _prev_end_offset = cur_offset + envelope_size;
4959            if 4 > max_ordinal {
4960                return Ok(());
4961            }
4962
4963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4964            // are envelope_size bytes.
4965            let cur_offset: usize = (4 - 1) * envelope_size;
4966
4967            // Zero reserved fields.
4968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4969
4970            // Safety:
4971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4973            //   envelope_size bytes, there is always sufficient room.
4974            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_data::Dictionary, D>(
4975                self.filter.as_ref().map(
4976                    <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
4977                ),
4978                encoder,
4979                offset + cur_offset,
4980                depth,
4981            )?;
4982
4983            _prev_end_offset = cur_offset + envelope_size;
4984            if 5 > max_ordinal {
4985                return Ok(());
4986            }
4987
4988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4989            // are envelope_size bytes.
4990            let cur_offset: usize = (5 - 1) * envelope_size;
4991
4992            // Zero reserved fields.
4993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4994
4995            // Safety:
4996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4998            //   envelope_size bytes, there is always sufficient room.
4999            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>, D>(
5000            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
5001            encoder, offset + cur_offset, depth
5002        )?;
5003
5004            _prev_end_offset = cur_offset + envelope_size;
5005
5006            Ok(())
5007        }
5008    }
5009
5010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventStream {
5011        #[inline(always)]
5012        fn new_empty() -> Self {
5013            Self::default()
5014        }
5015
5016        unsafe fn decode(
5017            &mut self,
5018            decoder: &mut fidl::encoding::Decoder<'_, D>,
5019            offset: usize,
5020            mut depth: fidl::encoding::Depth,
5021        ) -> fidl::Result<()> {
5022            decoder.debug_check_bounds::<Self>(offset);
5023            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5024                None => return Err(fidl::Error::NotNullable),
5025                Some(len) => len,
5026            };
5027            // Calling decoder.out_of_line_offset(0) is not allowed.
5028            if len == 0 {
5029                return Ok(());
5030            };
5031            depth.increment()?;
5032            let envelope_size = 8;
5033            let bytes_len = len * envelope_size;
5034            let offset = decoder.out_of_line_offset(bytes_len)?;
5035            // Decode the envelope for each type.
5036            let mut _next_ordinal_to_read = 0;
5037            let mut next_offset = offset;
5038            let end_offset = offset + bytes_len;
5039            _next_ordinal_to_read += 1;
5040            if next_offset >= end_offset {
5041                return Ok(());
5042            }
5043
5044            // Decode unknown envelopes for gaps in ordinals.
5045            while _next_ordinal_to_read < 1 {
5046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5047                _next_ordinal_to_read += 1;
5048                next_offset += envelope_size;
5049            }
5050
5051            let next_out_of_line = decoder.next_out_of_line();
5052            let handles_before = decoder.remaining_handles();
5053            if let Some((inlined, num_bytes, num_handles)) =
5054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5055            {
5056                let member_inline_size =
5057                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5058                        decoder.context,
5059                    );
5060                if inlined != (member_inline_size <= 4) {
5061                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5062                }
5063                let inner_offset;
5064                let mut inner_depth = depth.clone();
5065                if inlined {
5066                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5067                    inner_offset = next_offset;
5068                } else {
5069                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5070                    inner_depth.increment()?;
5071                }
5072                let val_ref = self
5073                    .name
5074                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5075                fidl::decode!(
5076                    fidl::encoding::BoundedString<255>,
5077                    D,
5078                    val_ref,
5079                    decoder,
5080                    inner_offset,
5081                    inner_depth
5082                )?;
5083                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5084                {
5085                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5086                }
5087                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5088                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5089                }
5090            }
5091
5092            next_offset += envelope_size;
5093            _next_ordinal_to_read += 1;
5094            if next_offset >= end_offset {
5095                return Ok(());
5096            }
5097
5098            // Decode unknown envelopes for gaps in ordinals.
5099            while _next_ordinal_to_read < 2 {
5100                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5101                _next_ordinal_to_read += 1;
5102                next_offset += envelope_size;
5103            }
5104
5105            let next_out_of_line = decoder.next_out_of_line();
5106            let handles_before = decoder.remaining_handles();
5107            if let Some((inlined, num_bytes, num_handles)) =
5108                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5109            {
5110                let member_inline_size =
5111                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5112                        decoder.context,
5113                    );
5114                if inlined != (member_inline_size <= 4) {
5115                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5116                }
5117                let inner_offset;
5118                let mut inner_depth = depth.clone();
5119                if inlined {
5120                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5121                    inner_offset = next_offset;
5122                } else {
5123                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5124                    inner_depth.increment()?;
5125                }
5126                let val_ref = self
5127                    .as_
5128                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5129                fidl::decode!(
5130                    fidl::encoding::BoundedString<255>,
5131                    D,
5132                    val_ref,
5133                    decoder,
5134                    inner_offset,
5135                    inner_depth
5136                )?;
5137                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5138                {
5139                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5140                }
5141                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5142                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5143                }
5144            }
5145
5146            next_offset += envelope_size;
5147            _next_ordinal_to_read += 1;
5148            if next_offset >= end_offset {
5149                return Ok(());
5150            }
5151
5152            // Decode unknown envelopes for gaps in ordinals.
5153            while _next_ordinal_to_read < 3 {
5154                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5155                _next_ordinal_to_read += 1;
5156                next_offset += envelope_size;
5157            }
5158
5159            let next_out_of_line = decoder.next_out_of_line();
5160            let handles_before = decoder.remaining_handles();
5161            if let Some((inlined, num_bytes, num_handles)) =
5162                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5163            {
5164                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5165                if inlined != (member_inline_size <= 4) {
5166                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5167                }
5168                let inner_offset;
5169                let mut inner_depth = depth.clone();
5170                if inlined {
5171                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5172                    inner_offset = next_offset;
5173                } else {
5174                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5175                    inner_depth.increment()?;
5176                }
5177                let val_ref = self.path.get_or_insert_with(|| {
5178                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
5179                });
5180                fidl::decode!(
5181                    fidl::encoding::BoundedString<4095>,
5182                    D,
5183                    val_ref,
5184                    decoder,
5185                    inner_offset,
5186                    inner_depth
5187                )?;
5188                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5189                {
5190                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5191                }
5192                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5193                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5194                }
5195            }
5196
5197            next_offset += envelope_size;
5198            _next_ordinal_to_read += 1;
5199            if next_offset >= end_offset {
5200                return Ok(());
5201            }
5202
5203            // Decode unknown envelopes for gaps in ordinals.
5204            while _next_ordinal_to_read < 4 {
5205                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5206                _next_ordinal_to_read += 1;
5207                next_offset += envelope_size;
5208            }
5209
5210            let next_out_of_line = decoder.next_out_of_line();
5211            let handles_before = decoder.remaining_handles();
5212            if let Some((inlined, num_bytes, num_handles)) =
5213                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5214            {
5215                let member_inline_size =
5216                    <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
5217                        decoder.context,
5218                    );
5219                if inlined != (member_inline_size <= 4) {
5220                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5221                }
5222                let inner_offset;
5223                let mut inner_depth = depth.clone();
5224                if inlined {
5225                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5226                    inner_offset = next_offset;
5227                } else {
5228                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5229                    inner_depth.increment()?;
5230                }
5231                let val_ref = self
5232                    .filter
5233                    .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_data::Dictionary, D));
5234                fidl::decode!(
5235                    fidl_fuchsia_data::Dictionary,
5236                    D,
5237                    val_ref,
5238                    decoder,
5239                    inner_offset,
5240                    inner_depth
5241                )?;
5242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5243                {
5244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5245                }
5246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5248                }
5249            }
5250
5251            next_offset += envelope_size;
5252            _next_ordinal_to_read += 1;
5253            if next_offset >= end_offset {
5254                return Ok(());
5255            }
5256
5257            // Decode unknown envelopes for gaps in ordinals.
5258            while _next_ordinal_to_read < 5 {
5259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5260                _next_ordinal_to_read += 1;
5261                next_offset += envelope_size;
5262            }
5263
5264            let next_out_of_line = decoder.next_out_of_line();
5265            let handles_before = decoder.remaining_handles();
5266            if let Some((inlined, num_bytes, num_handles)) =
5267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5268            {
5269                let member_inline_size = <fidl::encoding::UnboundedVector<
5270                    fidl_fuchsia_component_decl::Ref,
5271                > as fidl::encoding::TypeMarker>::inline_size(
5272                    decoder.context
5273                );
5274                if inlined != (member_inline_size <= 4) {
5275                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5276                }
5277                let inner_offset;
5278                let mut inner_depth = depth.clone();
5279                if inlined {
5280                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5281                    inner_offset = next_offset;
5282                } else {
5283                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5284                    inner_depth.increment()?;
5285                }
5286                let val_ref = self.scope.get_or_insert_with(|| {
5287                    fidl::new_empty!(
5288                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>,
5289                        D
5290                    )
5291                });
5292                fidl::decode!(
5293                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl::Ref>,
5294                    D,
5295                    val_ref,
5296                    decoder,
5297                    inner_offset,
5298                    inner_depth
5299                )?;
5300                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5301                {
5302                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5303                }
5304                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5305                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5306                }
5307            }
5308
5309            next_offset += envelope_size;
5310
5311            // Decode the remaining unknown envelopes.
5312            while next_offset < end_offset {
5313                _next_ordinal_to_read += 1;
5314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5315                next_offset += envelope_size;
5316            }
5317
5318            Ok(())
5319        }
5320    }
5321
5322    impl Protocol {
5323        #[inline(always)]
5324        fn max_ordinal_present(&self) -> u64 {
5325            if let Some(_) = self.from_dictionary {
5326                return 6;
5327            }
5328            if let Some(_) = self.availability {
5329                return 5;
5330            }
5331            if let Some(_) = self.path {
5332                return 4;
5333            }
5334            if let Some(_) = self.type_ {
5335                return 3;
5336            }
5337            if let Some(_) = self.as_ {
5338                return 2;
5339            }
5340            if let Some(_) = self.name {
5341                return 1;
5342            }
5343            0
5344        }
5345    }
5346
5347    impl fidl::encoding::ValueTypeMarker for Protocol {
5348        type Borrowed<'a> = &'a Self;
5349        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5350            value
5351        }
5352    }
5353
5354    unsafe impl fidl::encoding::TypeMarker for Protocol {
5355        type Owned = Self;
5356
5357        #[inline(always)]
5358        fn inline_align(_context: fidl::encoding::Context) -> usize {
5359            8
5360        }
5361
5362        #[inline(always)]
5363        fn inline_size(_context: fidl::encoding::Context) -> usize {
5364            16
5365        }
5366    }
5367
5368    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Protocol, D> for &Protocol {
5369        unsafe fn encode(
5370            self,
5371            encoder: &mut fidl::encoding::Encoder<'_, D>,
5372            offset: usize,
5373            mut depth: fidl::encoding::Depth,
5374        ) -> fidl::Result<()> {
5375            encoder.debug_check_bounds::<Protocol>(offset);
5376            // Vector header
5377            let max_ordinal: u64 = self.max_ordinal_present();
5378            encoder.write_num(max_ordinal, offset);
5379            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5380            // Calling encoder.out_of_line_offset(0) is not allowed.
5381            if max_ordinal == 0 {
5382                return Ok(());
5383            }
5384            depth.increment()?;
5385            let envelope_size = 8;
5386            let bytes_len = max_ordinal as usize * envelope_size;
5387            #[allow(unused_variables)]
5388            let offset = encoder.out_of_line_offset(bytes_len);
5389            let mut _prev_end_offset: usize = 0;
5390            if 1 > max_ordinal {
5391                return Ok(());
5392            }
5393
5394            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5395            // are envelope_size bytes.
5396            let cur_offset: usize = (1 - 1) * envelope_size;
5397
5398            // Zero reserved fields.
5399            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5400
5401            // Safety:
5402            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5403            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5404            //   envelope_size bytes, there is always sufficient room.
5405            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5406                self.name.as_ref().map(
5407                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5408                ),
5409                encoder,
5410                offset + cur_offset,
5411                depth,
5412            )?;
5413
5414            _prev_end_offset = cur_offset + envelope_size;
5415            if 2 > max_ordinal {
5416                return Ok(());
5417            }
5418
5419            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5420            // are envelope_size bytes.
5421            let cur_offset: usize = (2 - 1) * envelope_size;
5422
5423            // Zero reserved fields.
5424            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5425
5426            // Safety:
5427            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5428            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5429            //   envelope_size bytes, there is always sufficient room.
5430            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5431                self.as_.as_ref().map(
5432                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5433                ),
5434                encoder,
5435                offset + cur_offset,
5436                depth,
5437            )?;
5438
5439            _prev_end_offset = cur_offset + envelope_size;
5440            if 3 > max_ordinal {
5441                return Ok(());
5442            }
5443
5444            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5445            // are envelope_size bytes.
5446            let cur_offset: usize = (3 - 1) * envelope_size;
5447
5448            // Zero reserved fields.
5449            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5450
5451            // Safety:
5452            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5453            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5454            //   envelope_size bytes, there is always sufficient room.
5455            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::DependencyType, D>(
5456            self.type_.as_ref().map(<fidl_fuchsia_component_decl::DependencyType as fidl::encoding::ValueTypeMarker>::borrow),
5457            encoder, offset + cur_offset, depth
5458        )?;
5459
5460            _prev_end_offset = cur_offset + envelope_size;
5461            if 4 > max_ordinal {
5462                return Ok(());
5463            }
5464
5465            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5466            // are envelope_size bytes.
5467            let cur_offset: usize = (4 - 1) * envelope_size;
5468
5469            // Zero reserved fields.
5470            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5471
5472            // Safety:
5473            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5474            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5475            //   envelope_size bytes, there is always sufficient room.
5476            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
5477            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
5478            encoder, offset + cur_offset, depth
5479        )?;
5480
5481            _prev_end_offset = cur_offset + envelope_size;
5482            if 5 > max_ordinal {
5483                return Ok(());
5484            }
5485
5486            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5487            // are envelope_size bytes.
5488            let cur_offset: usize = (5 - 1) * envelope_size;
5489
5490            // Zero reserved fields.
5491            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5492
5493            // Safety:
5494            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5495            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5496            //   envelope_size bytes, there is always sufficient room.
5497            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
5498            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
5499            encoder, offset + cur_offset, depth
5500        )?;
5501
5502            _prev_end_offset = cur_offset + envelope_size;
5503            if 6 > max_ordinal {
5504                return Ok(());
5505            }
5506
5507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5508            // are envelope_size bytes.
5509            let cur_offset: usize = (6 - 1) * envelope_size;
5510
5511            // Zero reserved fields.
5512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5513
5514            // Safety:
5515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5517            //   envelope_size bytes, there is always sufficient room.
5518            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5519                self.from_dictionary.as_ref().map(
5520                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5521                ),
5522                encoder,
5523                offset + cur_offset,
5524                depth,
5525            )?;
5526
5527            _prev_end_offset = cur_offset + envelope_size;
5528
5529            Ok(())
5530        }
5531    }
5532
5533    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Protocol {
5534        #[inline(always)]
5535        fn new_empty() -> Self {
5536            Self::default()
5537        }
5538
5539        unsafe fn decode(
5540            &mut self,
5541            decoder: &mut fidl::encoding::Decoder<'_, D>,
5542            offset: usize,
5543            mut depth: fidl::encoding::Depth,
5544        ) -> fidl::Result<()> {
5545            decoder.debug_check_bounds::<Self>(offset);
5546            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5547                None => return Err(fidl::Error::NotNullable),
5548                Some(len) => len,
5549            };
5550            // Calling decoder.out_of_line_offset(0) is not allowed.
5551            if len == 0 {
5552                return Ok(());
5553            };
5554            depth.increment()?;
5555            let envelope_size = 8;
5556            let bytes_len = len * envelope_size;
5557            let offset = decoder.out_of_line_offset(bytes_len)?;
5558            // Decode the envelope for each type.
5559            let mut _next_ordinal_to_read = 0;
5560            let mut next_offset = offset;
5561            let end_offset = offset + bytes_len;
5562            _next_ordinal_to_read += 1;
5563            if next_offset >= end_offset {
5564                return Ok(());
5565            }
5566
5567            // Decode unknown envelopes for gaps in ordinals.
5568            while _next_ordinal_to_read < 1 {
5569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5570                _next_ordinal_to_read += 1;
5571                next_offset += envelope_size;
5572            }
5573
5574            let next_out_of_line = decoder.next_out_of_line();
5575            let handles_before = decoder.remaining_handles();
5576            if let Some((inlined, num_bytes, num_handles)) =
5577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5578            {
5579                let member_inline_size =
5580                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5581                        decoder.context,
5582                    );
5583                if inlined != (member_inline_size <= 4) {
5584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5585                }
5586                let inner_offset;
5587                let mut inner_depth = depth.clone();
5588                if inlined {
5589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5590                    inner_offset = next_offset;
5591                } else {
5592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5593                    inner_depth.increment()?;
5594                }
5595                let val_ref = self
5596                    .name
5597                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5598                fidl::decode!(
5599                    fidl::encoding::BoundedString<255>,
5600                    D,
5601                    val_ref,
5602                    decoder,
5603                    inner_offset,
5604                    inner_depth
5605                )?;
5606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5607                {
5608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5609                }
5610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5612                }
5613            }
5614
5615            next_offset += envelope_size;
5616            _next_ordinal_to_read += 1;
5617            if next_offset >= end_offset {
5618                return Ok(());
5619            }
5620
5621            // Decode unknown envelopes for gaps in ordinals.
5622            while _next_ordinal_to_read < 2 {
5623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5624                _next_ordinal_to_read += 1;
5625                next_offset += envelope_size;
5626            }
5627
5628            let next_out_of_line = decoder.next_out_of_line();
5629            let handles_before = decoder.remaining_handles();
5630            if let Some((inlined, num_bytes, num_handles)) =
5631                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5632            {
5633                let member_inline_size =
5634                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5635                        decoder.context,
5636                    );
5637                if inlined != (member_inline_size <= 4) {
5638                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5639                }
5640                let inner_offset;
5641                let mut inner_depth = depth.clone();
5642                if inlined {
5643                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5644                    inner_offset = next_offset;
5645                } else {
5646                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5647                    inner_depth.increment()?;
5648                }
5649                let val_ref = self
5650                    .as_
5651                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5652                fidl::decode!(
5653                    fidl::encoding::BoundedString<255>,
5654                    D,
5655                    val_ref,
5656                    decoder,
5657                    inner_offset,
5658                    inner_depth
5659                )?;
5660                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5661                {
5662                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5663                }
5664                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5665                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5666                }
5667            }
5668
5669            next_offset += envelope_size;
5670            _next_ordinal_to_read += 1;
5671            if next_offset >= end_offset {
5672                return Ok(());
5673            }
5674
5675            // Decode unknown envelopes for gaps in ordinals.
5676            while _next_ordinal_to_read < 3 {
5677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5678                _next_ordinal_to_read += 1;
5679                next_offset += envelope_size;
5680            }
5681
5682            let next_out_of_line = decoder.next_out_of_line();
5683            let handles_before = decoder.remaining_handles();
5684            if let Some((inlined, num_bytes, num_handles)) =
5685                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5686            {
5687                let member_inline_size = <fidl_fuchsia_component_decl::DependencyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5688                if inlined != (member_inline_size <= 4) {
5689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5690                }
5691                let inner_offset;
5692                let mut inner_depth = depth.clone();
5693                if inlined {
5694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5695                    inner_offset = next_offset;
5696                } else {
5697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5698                    inner_depth.increment()?;
5699                }
5700                let val_ref = self.type_.get_or_insert_with(|| {
5701                    fidl::new_empty!(fidl_fuchsia_component_decl::DependencyType, D)
5702                });
5703                fidl::decode!(
5704                    fidl_fuchsia_component_decl::DependencyType,
5705                    D,
5706                    val_ref,
5707                    decoder,
5708                    inner_offset,
5709                    inner_depth
5710                )?;
5711                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5712                {
5713                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5714                }
5715                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5716                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5717                }
5718            }
5719
5720            next_offset += envelope_size;
5721            _next_ordinal_to_read += 1;
5722            if next_offset >= end_offset {
5723                return Ok(());
5724            }
5725
5726            // Decode unknown envelopes for gaps in ordinals.
5727            while _next_ordinal_to_read < 4 {
5728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5729                _next_ordinal_to_read += 1;
5730                next_offset += envelope_size;
5731            }
5732
5733            let next_out_of_line = decoder.next_out_of_line();
5734            let handles_before = decoder.remaining_handles();
5735            if let Some((inlined, num_bytes, num_handles)) =
5736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5737            {
5738                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5739                if inlined != (member_inline_size <= 4) {
5740                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5741                }
5742                let inner_offset;
5743                let mut inner_depth = depth.clone();
5744                if inlined {
5745                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5746                    inner_offset = next_offset;
5747                } else {
5748                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5749                    inner_depth.increment()?;
5750                }
5751                let val_ref = self.path.get_or_insert_with(|| {
5752                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
5753                });
5754                fidl::decode!(
5755                    fidl::encoding::BoundedString<4095>,
5756                    D,
5757                    val_ref,
5758                    decoder,
5759                    inner_offset,
5760                    inner_depth
5761                )?;
5762                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5763                {
5764                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5765                }
5766                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5767                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5768                }
5769            }
5770
5771            next_offset += envelope_size;
5772            _next_ordinal_to_read += 1;
5773            if next_offset >= end_offset {
5774                return Ok(());
5775            }
5776
5777            // Decode unknown envelopes for gaps in ordinals.
5778            while _next_ordinal_to_read < 5 {
5779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5780                _next_ordinal_to_read += 1;
5781                next_offset += envelope_size;
5782            }
5783
5784            let next_out_of_line = decoder.next_out_of_line();
5785            let handles_before = decoder.remaining_handles();
5786            if let Some((inlined, num_bytes, num_handles)) =
5787                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5788            {
5789                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5790                if inlined != (member_inline_size <= 4) {
5791                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5792                }
5793                let inner_offset;
5794                let mut inner_depth = depth.clone();
5795                if inlined {
5796                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5797                    inner_offset = next_offset;
5798                } else {
5799                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5800                    inner_depth.increment()?;
5801                }
5802                let val_ref = self.availability.get_or_insert_with(|| {
5803                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
5804                });
5805                fidl::decode!(
5806                    fidl_fuchsia_component_decl::Availability,
5807                    D,
5808                    val_ref,
5809                    decoder,
5810                    inner_offset,
5811                    inner_depth
5812                )?;
5813                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5814                {
5815                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5816                }
5817                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5818                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5819                }
5820            }
5821
5822            next_offset += envelope_size;
5823            _next_ordinal_to_read += 1;
5824            if next_offset >= end_offset {
5825                return Ok(());
5826            }
5827
5828            // Decode unknown envelopes for gaps in ordinals.
5829            while _next_ordinal_to_read < 6 {
5830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5831                _next_ordinal_to_read += 1;
5832                next_offset += envelope_size;
5833            }
5834
5835            let next_out_of_line = decoder.next_out_of_line();
5836            let handles_before = decoder.remaining_handles();
5837            if let Some((inlined, num_bytes, num_handles)) =
5838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5839            {
5840                let member_inline_size =
5841                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5842                        decoder.context,
5843                    );
5844                if inlined != (member_inline_size <= 4) {
5845                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5846                }
5847                let inner_offset;
5848                let mut inner_depth = depth.clone();
5849                if inlined {
5850                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5851                    inner_offset = next_offset;
5852                } else {
5853                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5854                    inner_depth.increment()?;
5855                }
5856                let val_ref = self
5857                    .from_dictionary
5858                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5859                fidl::decode!(
5860                    fidl::encoding::UnboundedString,
5861                    D,
5862                    val_ref,
5863                    decoder,
5864                    inner_offset,
5865                    inner_depth
5866                )?;
5867                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5868                {
5869                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5870                }
5871                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5872                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5873                }
5874            }
5875
5876            next_offset += envelope_size;
5877
5878            // Decode the remaining unknown envelopes.
5879            while next_offset < end_offset {
5880                _next_ordinal_to_read += 1;
5881                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5882                next_offset += envelope_size;
5883            }
5884
5885            Ok(())
5886        }
5887    }
5888
5889    impl Resolver {
5890        #[inline(always)]
5891        fn max_ordinal_present(&self) -> u64 {
5892            if let Some(_) = self.from_dictionary {
5893                return 4;
5894            }
5895            if let Some(_) = self.path {
5896                return 3;
5897            }
5898            if let Some(_) = self.as_ {
5899                return 2;
5900            }
5901            if let Some(_) = self.name {
5902                return 1;
5903            }
5904            0
5905        }
5906    }
5907
5908    impl fidl::encoding::ValueTypeMarker for Resolver {
5909        type Borrowed<'a> = &'a Self;
5910        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5911            value
5912        }
5913    }
5914
5915    unsafe impl fidl::encoding::TypeMarker for Resolver {
5916        type Owned = Self;
5917
5918        #[inline(always)]
5919        fn inline_align(_context: fidl::encoding::Context) -> usize {
5920            8
5921        }
5922
5923        #[inline(always)]
5924        fn inline_size(_context: fidl::encoding::Context) -> usize {
5925            16
5926        }
5927    }
5928
5929    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Resolver, D> for &Resolver {
5930        unsafe fn encode(
5931            self,
5932            encoder: &mut fidl::encoding::Encoder<'_, D>,
5933            offset: usize,
5934            mut depth: fidl::encoding::Depth,
5935        ) -> fidl::Result<()> {
5936            encoder.debug_check_bounds::<Resolver>(offset);
5937            // Vector header
5938            let max_ordinal: u64 = self.max_ordinal_present();
5939            encoder.write_num(max_ordinal, offset);
5940            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5941            // Calling encoder.out_of_line_offset(0) is not allowed.
5942            if max_ordinal == 0 {
5943                return Ok(());
5944            }
5945            depth.increment()?;
5946            let envelope_size = 8;
5947            let bytes_len = max_ordinal as usize * envelope_size;
5948            #[allow(unused_variables)]
5949            let offset = encoder.out_of_line_offset(bytes_len);
5950            let mut _prev_end_offset: usize = 0;
5951            if 1 > max_ordinal {
5952                return Ok(());
5953            }
5954
5955            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5956            // are envelope_size bytes.
5957            let cur_offset: usize = (1 - 1) * envelope_size;
5958
5959            // Zero reserved fields.
5960            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5961
5962            // Safety:
5963            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5964            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5965            //   envelope_size bytes, there is always sufficient room.
5966            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5967                self.name.as_ref().map(
5968                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5969                ),
5970                encoder,
5971                offset + cur_offset,
5972                depth,
5973            )?;
5974
5975            _prev_end_offset = cur_offset + envelope_size;
5976            if 2 > max_ordinal {
5977                return Ok(());
5978            }
5979
5980            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5981            // are envelope_size bytes.
5982            let cur_offset: usize = (2 - 1) * envelope_size;
5983
5984            // Zero reserved fields.
5985            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5986
5987            // Safety:
5988            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5989            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5990            //   envelope_size bytes, there is always sufficient room.
5991            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5992                self.as_.as_ref().map(
5993                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5994                ),
5995                encoder,
5996                offset + cur_offset,
5997                depth,
5998            )?;
5999
6000            _prev_end_offset = cur_offset + envelope_size;
6001            if 3 > max_ordinal {
6002                return Ok(());
6003            }
6004
6005            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6006            // are envelope_size bytes.
6007            let cur_offset: usize = (3 - 1) * envelope_size;
6008
6009            // Zero reserved fields.
6010            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6011
6012            // Safety:
6013            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6014            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6015            //   envelope_size bytes, there is always sufficient room.
6016            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
6017            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
6018            encoder, offset + cur_offset, depth
6019        )?;
6020
6021            _prev_end_offset = cur_offset + envelope_size;
6022            if 4 > max_ordinal {
6023                return Ok(());
6024            }
6025
6026            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6027            // are envelope_size bytes.
6028            let cur_offset: usize = (4 - 1) * envelope_size;
6029
6030            // Zero reserved fields.
6031            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6032
6033            // Safety:
6034            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6035            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6036            //   envelope_size bytes, there is always sufficient room.
6037            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6038                self.from_dictionary.as_ref().map(
6039                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6040                ),
6041                encoder,
6042                offset + cur_offset,
6043                depth,
6044            )?;
6045
6046            _prev_end_offset = cur_offset + envelope_size;
6047
6048            Ok(())
6049        }
6050    }
6051
6052    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Resolver {
6053        #[inline(always)]
6054        fn new_empty() -> Self {
6055            Self::default()
6056        }
6057
6058        unsafe fn decode(
6059            &mut self,
6060            decoder: &mut fidl::encoding::Decoder<'_, D>,
6061            offset: usize,
6062            mut depth: fidl::encoding::Depth,
6063        ) -> fidl::Result<()> {
6064            decoder.debug_check_bounds::<Self>(offset);
6065            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6066                None => return Err(fidl::Error::NotNullable),
6067                Some(len) => len,
6068            };
6069            // Calling decoder.out_of_line_offset(0) is not allowed.
6070            if len == 0 {
6071                return Ok(());
6072            };
6073            depth.increment()?;
6074            let envelope_size = 8;
6075            let bytes_len = len * envelope_size;
6076            let offset = decoder.out_of_line_offset(bytes_len)?;
6077            // Decode the envelope for each type.
6078            let mut _next_ordinal_to_read = 0;
6079            let mut next_offset = offset;
6080            let end_offset = offset + bytes_len;
6081            _next_ordinal_to_read += 1;
6082            if next_offset >= end_offset {
6083                return Ok(());
6084            }
6085
6086            // Decode unknown envelopes for gaps in ordinals.
6087            while _next_ordinal_to_read < 1 {
6088                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6089                _next_ordinal_to_read += 1;
6090                next_offset += envelope_size;
6091            }
6092
6093            let next_out_of_line = decoder.next_out_of_line();
6094            let handles_before = decoder.remaining_handles();
6095            if let Some((inlined, num_bytes, num_handles)) =
6096                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6097            {
6098                let member_inline_size =
6099                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6100                        decoder.context,
6101                    );
6102                if inlined != (member_inline_size <= 4) {
6103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6104                }
6105                let inner_offset;
6106                let mut inner_depth = depth.clone();
6107                if inlined {
6108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6109                    inner_offset = next_offset;
6110                } else {
6111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6112                    inner_depth.increment()?;
6113                }
6114                let val_ref = self
6115                    .name
6116                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6117                fidl::decode!(
6118                    fidl::encoding::BoundedString<255>,
6119                    D,
6120                    val_ref,
6121                    decoder,
6122                    inner_offset,
6123                    inner_depth
6124                )?;
6125                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6126                {
6127                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6128                }
6129                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6130                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6131                }
6132            }
6133
6134            next_offset += envelope_size;
6135            _next_ordinal_to_read += 1;
6136            if next_offset >= end_offset {
6137                return Ok(());
6138            }
6139
6140            // Decode unknown envelopes for gaps in ordinals.
6141            while _next_ordinal_to_read < 2 {
6142                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6143                _next_ordinal_to_read += 1;
6144                next_offset += envelope_size;
6145            }
6146
6147            let next_out_of_line = decoder.next_out_of_line();
6148            let handles_before = decoder.remaining_handles();
6149            if let Some((inlined, num_bytes, num_handles)) =
6150                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6151            {
6152                let member_inline_size =
6153                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6154                        decoder.context,
6155                    );
6156                if inlined != (member_inline_size <= 4) {
6157                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6158                }
6159                let inner_offset;
6160                let mut inner_depth = depth.clone();
6161                if inlined {
6162                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6163                    inner_offset = next_offset;
6164                } else {
6165                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6166                    inner_depth.increment()?;
6167                }
6168                let val_ref = self
6169                    .as_
6170                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6171                fidl::decode!(
6172                    fidl::encoding::BoundedString<255>,
6173                    D,
6174                    val_ref,
6175                    decoder,
6176                    inner_offset,
6177                    inner_depth
6178                )?;
6179                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6180                {
6181                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6182                }
6183                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6184                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6185                }
6186            }
6187
6188            next_offset += envelope_size;
6189            _next_ordinal_to_read += 1;
6190            if next_offset >= end_offset {
6191                return Ok(());
6192            }
6193
6194            // Decode unknown envelopes for gaps in ordinals.
6195            while _next_ordinal_to_read < 3 {
6196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6197                _next_ordinal_to_read += 1;
6198                next_offset += envelope_size;
6199            }
6200
6201            let next_out_of_line = decoder.next_out_of_line();
6202            let handles_before = decoder.remaining_handles();
6203            if let Some((inlined, num_bytes, num_handles)) =
6204                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6205            {
6206                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6207                if inlined != (member_inline_size <= 4) {
6208                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6209                }
6210                let inner_offset;
6211                let mut inner_depth = depth.clone();
6212                if inlined {
6213                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6214                    inner_offset = next_offset;
6215                } else {
6216                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6217                    inner_depth.increment()?;
6218                }
6219                let val_ref = self.path.get_or_insert_with(|| {
6220                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
6221                });
6222                fidl::decode!(
6223                    fidl::encoding::BoundedString<4095>,
6224                    D,
6225                    val_ref,
6226                    decoder,
6227                    inner_offset,
6228                    inner_depth
6229                )?;
6230                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6231                {
6232                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6233                }
6234                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6235                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6236                }
6237            }
6238
6239            next_offset += envelope_size;
6240            _next_ordinal_to_read += 1;
6241            if next_offset >= end_offset {
6242                return Ok(());
6243            }
6244
6245            // Decode unknown envelopes for gaps in ordinals.
6246            while _next_ordinal_to_read < 4 {
6247                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6248                _next_ordinal_to_read += 1;
6249                next_offset += envelope_size;
6250            }
6251
6252            let next_out_of_line = decoder.next_out_of_line();
6253            let handles_before = decoder.remaining_handles();
6254            if let Some((inlined, num_bytes, num_handles)) =
6255                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6256            {
6257                let member_inline_size =
6258                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6259                        decoder.context,
6260                    );
6261                if inlined != (member_inline_size <= 4) {
6262                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6263                }
6264                let inner_offset;
6265                let mut inner_depth = depth.clone();
6266                if inlined {
6267                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6268                    inner_offset = next_offset;
6269                } else {
6270                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6271                    inner_depth.increment()?;
6272                }
6273                let val_ref = self
6274                    .from_dictionary
6275                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6276                fidl::decode!(
6277                    fidl::encoding::UnboundedString,
6278                    D,
6279                    val_ref,
6280                    decoder,
6281                    inner_offset,
6282                    inner_depth
6283                )?;
6284                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6285                {
6286                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6287                }
6288                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6289                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6290                }
6291            }
6292
6293            next_offset += envelope_size;
6294
6295            // Decode the remaining unknown envelopes.
6296            while next_offset < end_offset {
6297                _next_ordinal_to_read += 1;
6298                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6299                next_offset += envelope_size;
6300            }
6301
6302            Ok(())
6303        }
6304    }
6305
6306    impl Runner {
6307        #[inline(always)]
6308        fn max_ordinal_present(&self) -> u64 {
6309            if let Some(_) = self.from_dictionary {
6310                return 4;
6311            }
6312            if let Some(_) = self.path {
6313                return 3;
6314            }
6315            if let Some(_) = self.as_ {
6316                return 2;
6317            }
6318            if let Some(_) = self.name {
6319                return 1;
6320            }
6321            0
6322        }
6323    }
6324
6325    impl fidl::encoding::ValueTypeMarker for Runner {
6326        type Borrowed<'a> = &'a Self;
6327        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6328            value
6329        }
6330    }
6331
6332    unsafe impl fidl::encoding::TypeMarker for Runner {
6333        type Owned = Self;
6334
6335        #[inline(always)]
6336        fn inline_align(_context: fidl::encoding::Context) -> usize {
6337            8
6338        }
6339
6340        #[inline(always)]
6341        fn inline_size(_context: fidl::encoding::Context) -> usize {
6342            16
6343        }
6344    }
6345
6346    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Runner, D> for &Runner {
6347        unsafe fn encode(
6348            self,
6349            encoder: &mut fidl::encoding::Encoder<'_, D>,
6350            offset: usize,
6351            mut depth: fidl::encoding::Depth,
6352        ) -> fidl::Result<()> {
6353            encoder.debug_check_bounds::<Runner>(offset);
6354            // Vector header
6355            let max_ordinal: u64 = self.max_ordinal_present();
6356            encoder.write_num(max_ordinal, offset);
6357            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6358            // Calling encoder.out_of_line_offset(0) is not allowed.
6359            if max_ordinal == 0 {
6360                return Ok(());
6361            }
6362            depth.increment()?;
6363            let envelope_size = 8;
6364            let bytes_len = max_ordinal as usize * envelope_size;
6365            #[allow(unused_variables)]
6366            let offset = encoder.out_of_line_offset(bytes_len);
6367            let mut _prev_end_offset: usize = 0;
6368            if 1 > max_ordinal {
6369                return Ok(());
6370            }
6371
6372            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6373            // are envelope_size bytes.
6374            let cur_offset: usize = (1 - 1) * envelope_size;
6375
6376            // Zero reserved fields.
6377            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6378
6379            // Safety:
6380            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6381            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6382            //   envelope_size bytes, there is always sufficient room.
6383            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6384                self.name.as_ref().map(
6385                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6386                ),
6387                encoder,
6388                offset + cur_offset,
6389                depth,
6390            )?;
6391
6392            _prev_end_offset = cur_offset + envelope_size;
6393            if 2 > max_ordinal {
6394                return Ok(());
6395            }
6396
6397            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6398            // are envelope_size bytes.
6399            let cur_offset: usize = (2 - 1) * envelope_size;
6400
6401            // Zero reserved fields.
6402            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6403
6404            // Safety:
6405            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6406            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6407            //   envelope_size bytes, there is always sufficient room.
6408            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6409                self.as_.as_ref().map(
6410                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6411                ),
6412                encoder,
6413                offset + cur_offset,
6414                depth,
6415            )?;
6416
6417            _prev_end_offset = cur_offset + envelope_size;
6418            if 3 > max_ordinal {
6419                return Ok(());
6420            }
6421
6422            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6423            // are envelope_size bytes.
6424            let cur_offset: usize = (3 - 1) * envelope_size;
6425
6426            // Zero reserved fields.
6427            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6428
6429            // Safety:
6430            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6431            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6432            //   envelope_size bytes, there is always sufficient room.
6433            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
6434            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
6435            encoder, offset + cur_offset, depth
6436        )?;
6437
6438            _prev_end_offset = cur_offset + envelope_size;
6439            if 4 > max_ordinal {
6440                return Ok(());
6441            }
6442
6443            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6444            // are envelope_size bytes.
6445            let cur_offset: usize = (4 - 1) * envelope_size;
6446
6447            // Zero reserved fields.
6448            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6449
6450            // Safety:
6451            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6452            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6453            //   envelope_size bytes, there is always sufficient room.
6454            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6455                self.from_dictionary.as_ref().map(
6456                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6457                ),
6458                encoder,
6459                offset + cur_offset,
6460                depth,
6461            )?;
6462
6463            _prev_end_offset = cur_offset + envelope_size;
6464
6465            Ok(())
6466        }
6467    }
6468
6469    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Runner {
6470        #[inline(always)]
6471        fn new_empty() -> Self {
6472            Self::default()
6473        }
6474
6475        unsafe fn decode(
6476            &mut self,
6477            decoder: &mut fidl::encoding::Decoder<'_, D>,
6478            offset: usize,
6479            mut depth: fidl::encoding::Depth,
6480        ) -> fidl::Result<()> {
6481            decoder.debug_check_bounds::<Self>(offset);
6482            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6483                None => return Err(fidl::Error::NotNullable),
6484                Some(len) => len,
6485            };
6486            // Calling decoder.out_of_line_offset(0) is not allowed.
6487            if len == 0 {
6488                return Ok(());
6489            };
6490            depth.increment()?;
6491            let envelope_size = 8;
6492            let bytes_len = len * envelope_size;
6493            let offset = decoder.out_of_line_offset(bytes_len)?;
6494            // Decode the envelope for each type.
6495            let mut _next_ordinal_to_read = 0;
6496            let mut next_offset = offset;
6497            let end_offset = offset + bytes_len;
6498            _next_ordinal_to_read += 1;
6499            if next_offset >= end_offset {
6500                return Ok(());
6501            }
6502
6503            // Decode unknown envelopes for gaps in ordinals.
6504            while _next_ordinal_to_read < 1 {
6505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6506                _next_ordinal_to_read += 1;
6507                next_offset += envelope_size;
6508            }
6509
6510            let next_out_of_line = decoder.next_out_of_line();
6511            let handles_before = decoder.remaining_handles();
6512            if let Some((inlined, num_bytes, num_handles)) =
6513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6514            {
6515                let member_inline_size =
6516                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6517                        decoder.context,
6518                    );
6519                if inlined != (member_inline_size <= 4) {
6520                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6521                }
6522                let inner_offset;
6523                let mut inner_depth = depth.clone();
6524                if inlined {
6525                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6526                    inner_offset = next_offset;
6527                } else {
6528                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6529                    inner_depth.increment()?;
6530                }
6531                let val_ref = self
6532                    .name
6533                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6534                fidl::decode!(
6535                    fidl::encoding::BoundedString<255>,
6536                    D,
6537                    val_ref,
6538                    decoder,
6539                    inner_offset,
6540                    inner_depth
6541                )?;
6542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6543                {
6544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6545                }
6546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6548                }
6549            }
6550
6551            next_offset += envelope_size;
6552            _next_ordinal_to_read += 1;
6553            if next_offset >= end_offset {
6554                return Ok(());
6555            }
6556
6557            // Decode unknown envelopes for gaps in ordinals.
6558            while _next_ordinal_to_read < 2 {
6559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6560                _next_ordinal_to_read += 1;
6561                next_offset += envelope_size;
6562            }
6563
6564            let next_out_of_line = decoder.next_out_of_line();
6565            let handles_before = decoder.remaining_handles();
6566            if let Some((inlined, num_bytes, num_handles)) =
6567                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6568            {
6569                let member_inline_size =
6570                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6571                        decoder.context,
6572                    );
6573                if inlined != (member_inline_size <= 4) {
6574                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6575                }
6576                let inner_offset;
6577                let mut inner_depth = depth.clone();
6578                if inlined {
6579                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6580                    inner_offset = next_offset;
6581                } else {
6582                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6583                    inner_depth.increment()?;
6584                }
6585                let val_ref = self
6586                    .as_
6587                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6588                fidl::decode!(
6589                    fidl::encoding::BoundedString<255>,
6590                    D,
6591                    val_ref,
6592                    decoder,
6593                    inner_offset,
6594                    inner_depth
6595                )?;
6596                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6597                {
6598                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6599                }
6600                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6601                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6602                }
6603            }
6604
6605            next_offset += envelope_size;
6606            _next_ordinal_to_read += 1;
6607            if next_offset >= end_offset {
6608                return Ok(());
6609            }
6610
6611            // Decode unknown envelopes for gaps in ordinals.
6612            while _next_ordinal_to_read < 3 {
6613                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6614                _next_ordinal_to_read += 1;
6615                next_offset += envelope_size;
6616            }
6617
6618            let next_out_of_line = decoder.next_out_of_line();
6619            let handles_before = decoder.remaining_handles();
6620            if let Some((inlined, num_bytes, num_handles)) =
6621                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6622            {
6623                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6624                if inlined != (member_inline_size <= 4) {
6625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6626                }
6627                let inner_offset;
6628                let mut inner_depth = depth.clone();
6629                if inlined {
6630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6631                    inner_offset = next_offset;
6632                } else {
6633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6634                    inner_depth.increment()?;
6635                }
6636                let val_ref = self.path.get_or_insert_with(|| {
6637                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
6638                });
6639                fidl::decode!(
6640                    fidl::encoding::BoundedString<4095>,
6641                    D,
6642                    val_ref,
6643                    decoder,
6644                    inner_offset,
6645                    inner_depth
6646                )?;
6647                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6648                {
6649                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6650                }
6651                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6652                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6653                }
6654            }
6655
6656            next_offset += envelope_size;
6657            _next_ordinal_to_read += 1;
6658            if next_offset >= end_offset {
6659                return Ok(());
6660            }
6661
6662            // Decode unknown envelopes for gaps in ordinals.
6663            while _next_ordinal_to_read < 4 {
6664                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6665                _next_ordinal_to_read += 1;
6666                next_offset += envelope_size;
6667            }
6668
6669            let next_out_of_line = decoder.next_out_of_line();
6670            let handles_before = decoder.remaining_handles();
6671            if let Some((inlined, num_bytes, num_handles)) =
6672                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6673            {
6674                let member_inline_size =
6675                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6676                        decoder.context,
6677                    );
6678                if inlined != (member_inline_size <= 4) {
6679                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6680                }
6681                let inner_offset;
6682                let mut inner_depth = depth.clone();
6683                if inlined {
6684                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6685                    inner_offset = next_offset;
6686                } else {
6687                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6688                    inner_depth.increment()?;
6689                }
6690                let val_ref = self
6691                    .from_dictionary
6692                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6693                fidl::decode!(
6694                    fidl::encoding::UnboundedString,
6695                    D,
6696                    val_ref,
6697                    decoder,
6698                    inner_offset,
6699                    inner_depth
6700                )?;
6701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6702                {
6703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6704                }
6705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6707                }
6708            }
6709
6710            next_offset += envelope_size;
6711
6712            // Decode the remaining unknown envelopes.
6713            while next_offset < end_offset {
6714                _next_ordinal_to_read += 1;
6715                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6716                next_offset += envelope_size;
6717            }
6718
6719            Ok(())
6720        }
6721    }
6722
6723    impl Service {
6724        #[inline(always)]
6725        fn max_ordinal_present(&self) -> u64 {
6726            if let Some(_) = self.from_dictionary {
6727                return 5;
6728            }
6729            if let Some(_) = self.availability {
6730                return 4;
6731            }
6732            if let Some(_) = self.path {
6733                return 3;
6734            }
6735            if let Some(_) = self.as_ {
6736                return 2;
6737            }
6738            if let Some(_) = self.name {
6739                return 1;
6740            }
6741            0
6742        }
6743    }
6744
6745    impl fidl::encoding::ValueTypeMarker for Service {
6746        type Borrowed<'a> = &'a Self;
6747        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6748            value
6749        }
6750    }
6751
6752    unsafe impl fidl::encoding::TypeMarker for Service {
6753        type Owned = Self;
6754
6755        #[inline(always)]
6756        fn inline_align(_context: fidl::encoding::Context) -> usize {
6757            8
6758        }
6759
6760        #[inline(always)]
6761        fn inline_size(_context: fidl::encoding::Context) -> usize {
6762            16
6763        }
6764    }
6765
6766    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Service, D> for &Service {
6767        unsafe fn encode(
6768            self,
6769            encoder: &mut fidl::encoding::Encoder<'_, D>,
6770            offset: usize,
6771            mut depth: fidl::encoding::Depth,
6772        ) -> fidl::Result<()> {
6773            encoder.debug_check_bounds::<Service>(offset);
6774            // Vector header
6775            let max_ordinal: u64 = self.max_ordinal_present();
6776            encoder.write_num(max_ordinal, offset);
6777            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6778            // Calling encoder.out_of_line_offset(0) is not allowed.
6779            if max_ordinal == 0 {
6780                return Ok(());
6781            }
6782            depth.increment()?;
6783            let envelope_size = 8;
6784            let bytes_len = max_ordinal as usize * envelope_size;
6785            #[allow(unused_variables)]
6786            let offset = encoder.out_of_line_offset(bytes_len);
6787            let mut _prev_end_offset: usize = 0;
6788            if 1 > max_ordinal {
6789                return Ok(());
6790            }
6791
6792            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6793            // are envelope_size bytes.
6794            let cur_offset: usize = (1 - 1) * envelope_size;
6795
6796            // Zero reserved fields.
6797            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6798
6799            // Safety:
6800            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6801            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6802            //   envelope_size bytes, there is always sufficient room.
6803            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6804                self.name.as_ref().map(
6805                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6806                ),
6807                encoder,
6808                offset + cur_offset,
6809                depth,
6810            )?;
6811
6812            _prev_end_offset = cur_offset + envelope_size;
6813            if 2 > max_ordinal {
6814                return Ok(());
6815            }
6816
6817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6818            // are envelope_size bytes.
6819            let cur_offset: usize = (2 - 1) * envelope_size;
6820
6821            // Zero reserved fields.
6822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6823
6824            // Safety:
6825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6827            //   envelope_size bytes, there is always sufficient room.
6828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6829                self.as_.as_ref().map(
6830                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6831                ),
6832                encoder,
6833                offset + cur_offset,
6834                depth,
6835            )?;
6836
6837            _prev_end_offset = cur_offset + envelope_size;
6838            if 3 > max_ordinal {
6839                return Ok(());
6840            }
6841
6842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6843            // are envelope_size bytes.
6844            let cur_offset: usize = (3 - 1) * envelope_size;
6845
6846            // Zero reserved fields.
6847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6848
6849            // Safety:
6850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6852            //   envelope_size bytes, there is always sufficient room.
6853            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
6854            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
6855            encoder, offset + cur_offset, depth
6856        )?;
6857
6858            _prev_end_offset = cur_offset + envelope_size;
6859            if 4 > max_ordinal {
6860                return Ok(());
6861            }
6862
6863            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6864            // are envelope_size bytes.
6865            let cur_offset: usize = (4 - 1) * envelope_size;
6866
6867            // Zero reserved fields.
6868            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6869
6870            // Safety:
6871            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6872            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6873            //   envelope_size bytes, there is always sufficient room.
6874            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
6875            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
6876            encoder, offset + cur_offset, depth
6877        )?;
6878
6879            _prev_end_offset = cur_offset + envelope_size;
6880            if 5 > max_ordinal {
6881                return Ok(());
6882            }
6883
6884            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6885            // are envelope_size bytes.
6886            let cur_offset: usize = (5 - 1) * envelope_size;
6887
6888            // Zero reserved fields.
6889            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6890
6891            // Safety:
6892            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6893            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6894            //   envelope_size bytes, there is always sufficient room.
6895            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6896                self.from_dictionary.as_ref().map(
6897                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6898                ),
6899                encoder,
6900                offset + cur_offset,
6901                depth,
6902            )?;
6903
6904            _prev_end_offset = cur_offset + envelope_size;
6905
6906            Ok(())
6907        }
6908    }
6909
6910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Service {
6911        #[inline(always)]
6912        fn new_empty() -> Self {
6913            Self::default()
6914        }
6915
6916        unsafe fn decode(
6917            &mut self,
6918            decoder: &mut fidl::encoding::Decoder<'_, D>,
6919            offset: usize,
6920            mut depth: fidl::encoding::Depth,
6921        ) -> fidl::Result<()> {
6922            decoder.debug_check_bounds::<Self>(offset);
6923            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6924                None => return Err(fidl::Error::NotNullable),
6925                Some(len) => len,
6926            };
6927            // Calling decoder.out_of_line_offset(0) is not allowed.
6928            if len == 0 {
6929                return Ok(());
6930            };
6931            depth.increment()?;
6932            let envelope_size = 8;
6933            let bytes_len = len * envelope_size;
6934            let offset = decoder.out_of_line_offset(bytes_len)?;
6935            // Decode the envelope for each type.
6936            let mut _next_ordinal_to_read = 0;
6937            let mut next_offset = offset;
6938            let end_offset = offset + bytes_len;
6939            _next_ordinal_to_read += 1;
6940            if next_offset >= end_offset {
6941                return Ok(());
6942            }
6943
6944            // Decode unknown envelopes for gaps in ordinals.
6945            while _next_ordinal_to_read < 1 {
6946                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6947                _next_ordinal_to_read += 1;
6948                next_offset += envelope_size;
6949            }
6950
6951            let next_out_of_line = decoder.next_out_of_line();
6952            let handles_before = decoder.remaining_handles();
6953            if let Some((inlined, num_bytes, num_handles)) =
6954                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6955            {
6956                let member_inline_size =
6957                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6958                        decoder.context,
6959                    );
6960                if inlined != (member_inline_size <= 4) {
6961                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6962                }
6963                let inner_offset;
6964                let mut inner_depth = depth.clone();
6965                if inlined {
6966                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6967                    inner_offset = next_offset;
6968                } else {
6969                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6970                    inner_depth.increment()?;
6971                }
6972                let val_ref = self
6973                    .name
6974                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6975                fidl::decode!(
6976                    fidl::encoding::BoundedString<255>,
6977                    D,
6978                    val_ref,
6979                    decoder,
6980                    inner_offset,
6981                    inner_depth
6982                )?;
6983                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6984                {
6985                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6986                }
6987                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6988                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6989                }
6990            }
6991
6992            next_offset += envelope_size;
6993            _next_ordinal_to_read += 1;
6994            if next_offset >= end_offset {
6995                return Ok(());
6996            }
6997
6998            // Decode unknown envelopes for gaps in ordinals.
6999            while _next_ordinal_to_read < 2 {
7000                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7001                _next_ordinal_to_read += 1;
7002                next_offset += envelope_size;
7003            }
7004
7005            let next_out_of_line = decoder.next_out_of_line();
7006            let handles_before = decoder.remaining_handles();
7007            if let Some((inlined, num_bytes, num_handles)) =
7008                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7009            {
7010                let member_inline_size =
7011                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
7012                        decoder.context,
7013                    );
7014                if inlined != (member_inline_size <= 4) {
7015                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7016                }
7017                let inner_offset;
7018                let mut inner_depth = depth.clone();
7019                if inlined {
7020                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7021                    inner_offset = next_offset;
7022                } else {
7023                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7024                    inner_depth.increment()?;
7025                }
7026                let val_ref = self
7027                    .as_
7028                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
7029                fidl::decode!(
7030                    fidl::encoding::BoundedString<255>,
7031                    D,
7032                    val_ref,
7033                    decoder,
7034                    inner_offset,
7035                    inner_depth
7036                )?;
7037                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7038                {
7039                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7040                }
7041                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7042                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7043                }
7044            }
7045
7046            next_offset += envelope_size;
7047            _next_ordinal_to_read += 1;
7048            if next_offset >= end_offset {
7049                return Ok(());
7050            }
7051
7052            // Decode unknown envelopes for gaps in ordinals.
7053            while _next_ordinal_to_read < 3 {
7054                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7055                _next_ordinal_to_read += 1;
7056                next_offset += envelope_size;
7057            }
7058
7059            let next_out_of_line = decoder.next_out_of_line();
7060            let handles_before = decoder.remaining_handles();
7061            if let Some((inlined, num_bytes, num_handles)) =
7062                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7063            {
7064                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7065                if inlined != (member_inline_size <= 4) {
7066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7067                }
7068                let inner_offset;
7069                let mut inner_depth = depth.clone();
7070                if inlined {
7071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7072                    inner_offset = next_offset;
7073                } else {
7074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7075                    inner_depth.increment()?;
7076                }
7077                let val_ref = self.path.get_or_insert_with(|| {
7078                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
7079                });
7080                fidl::decode!(
7081                    fidl::encoding::BoundedString<4095>,
7082                    D,
7083                    val_ref,
7084                    decoder,
7085                    inner_offset,
7086                    inner_depth
7087                )?;
7088                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7089                {
7090                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7091                }
7092                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7093                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7094                }
7095            }
7096
7097            next_offset += envelope_size;
7098            _next_ordinal_to_read += 1;
7099            if next_offset >= end_offset {
7100                return Ok(());
7101            }
7102
7103            // Decode unknown envelopes for gaps in ordinals.
7104            while _next_ordinal_to_read < 4 {
7105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7106                _next_ordinal_to_read += 1;
7107                next_offset += envelope_size;
7108            }
7109
7110            let next_out_of_line = decoder.next_out_of_line();
7111            let handles_before = decoder.remaining_handles();
7112            if let Some((inlined, num_bytes, num_handles)) =
7113                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7114            {
7115                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7116                if inlined != (member_inline_size <= 4) {
7117                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7118                }
7119                let inner_offset;
7120                let mut inner_depth = depth.clone();
7121                if inlined {
7122                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7123                    inner_offset = next_offset;
7124                } else {
7125                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7126                    inner_depth.increment()?;
7127                }
7128                let val_ref = self.availability.get_or_insert_with(|| {
7129                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
7130                });
7131                fidl::decode!(
7132                    fidl_fuchsia_component_decl::Availability,
7133                    D,
7134                    val_ref,
7135                    decoder,
7136                    inner_offset,
7137                    inner_depth
7138                )?;
7139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7140                {
7141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7142                }
7143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7145                }
7146            }
7147
7148            next_offset += envelope_size;
7149            _next_ordinal_to_read += 1;
7150            if next_offset >= end_offset {
7151                return Ok(());
7152            }
7153
7154            // Decode unknown envelopes for gaps in ordinals.
7155            while _next_ordinal_to_read < 5 {
7156                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7157                _next_ordinal_to_read += 1;
7158                next_offset += envelope_size;
7159            }
7160
7161            let next_out_of_line = decoder.next_out_of_line();
7162            let handles_before = decoder.remaining_handles();
7163            if let Some((inlined, num_bytes, num_handles)) =
7164                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7165            {
7166                let member_inline_size =
7167                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7168                        decoder.context,
7169                    );
7170                if inlined != (member_inline_size <= 4) {
7171                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7172                }
7173                let inner_offset;
7174                let mut inner_depth = depth.clone();
7175                if inlined {
7176                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7177                    inner_offset = next_offset;
7178                } else {
7179                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7180                    inner_depth.increment()?;
7181                }
7182                let val_ref = self
7183                    .from_dictionary
7184                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7185                fidl::decode!(
7186                    fidl::encoding::UnboundedString,
7187                    D,
7188                    val_ref,
7189                    decoder,
7190                    inner_offset,
7191                    inner_depth
7192                )?;
7193                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7194                {
7195                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7196                }
7197                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7198                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7199                }
7200            }
7201
7202            next_offset += envelope_size;
7203
7204            // Decode the remaining unknown envelopes.
7205            while next_offset < end_offset {
7206                _next_ordinal_to_read += 1;
7207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7208                next_offset += envelope_size;
7209            }
7210
7211            Ok(())
7212        }
7213    }
7214
7215    impl Storage {
7216        #[inline(always)]
7217        fn max_ordinal_present(&self) -> u64 {
7218            if let Some(_) = self.availability {
7219                return 4;
7220            }
7221            if let Some(_) = self.path {
7222                return 3;
7223            }
7224            if let Some(_) = self.as_ {
7225                return 2;
7226            }
7227            if let Some(_) = self.name {
7228                return 1;
7229            }
7230            0
7231        }
7232    }
7233
7234    impl fidl::encoding::ValueTypeMarker for Storage {
7235        type Borrowed<'a> = &'a Self;
7236        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7237            value
7238        }
7239    }
7240
7241    unsafe impl fidl::encoding::TypeMarker for Storage {
7242        type Owned = Self;
7243
7244        #[inline(always)]
7245        fn inline_align(_context: fidl::encoding::Context) -> usize {
7246            8
7247        }
7248
7249        #[inline(always)]
7250        fn inline_size(_context: fidl::encoding::Context) -> usize {
7251            16
7252        }
7253    }
7254
7255    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Storage, D> for &Storage {
7256        unsafe fn encode(
7257            self,
7258            encoder: &mut fidl::encoding::Encoder<'_, D>,
7259            offset: usize,
7260            mut depth: fidl::encoding::Depth,
7261        ) -> fidl::Result<()> {
7262            encoder.debug_check_bounds::<Storage>(offset);
7263            // Vector header
7264            let max_ordinal: u64 = self.max_ordinal_present();
7265            encoder.write_num(max_ordinal, offset);
7266            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7267            // Calling encoder.out_of_line_offset(0) is not allowed.
7268            if max_ordinal == 0 {
7269                return Ok(());
7270            }
7271            depth.increment()?;
7272            let envelope_size = 8;
7273            let bytes_len = max_ordinal as usize * envelope_size;
7274            #[allow(unused_variables)]
7275            let offset = encoder.out_of_line_offset(bytes_len);
7276            let mut _prev_end_offset: usize = 0;
7277            if 1 > max_ordinal {
7278                return Ok(());
7279            }
7280
7281            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7282            // are envelope_size bytes.
7283            let cur_offset: usize = (1 - 1) * envelope_size;
7284
7285            // Zero reserved fields.
7286            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7287
7288            // Safety:
7289            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7290            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7291            //   envelope_size bytes, there is always sufficient room.
7292            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
7293                self.name.as_ref().map(
7294                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
7295                ),
7296                encoder,
7297                offset + cur_offset,
7298                depth,
7299            )?;
7300
7301            _prev_end_offset = cur_offset + envelope_size;
7302            if 2 > max_ordinal {
7303                return Ok(());
7304            }
7305
7306            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7307            // are envelope_size bytes.
7308            let cur_offset: usize = (2 - 1) * envelope_size;
7309
7310            // Zero reserved fields.
7311            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7312
7313            // Safety:
7314            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7315            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7316            //   envelope_size bytes, there is always sufficient room.
7317            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
7318                self.as_.as_ref().map(
7319                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
7320                ),
7321                encoder,
7322                offset + cur_offset,
7323                depth,
7324            )?;
7325
7326            _prev_end_offset = cur_offset + envelope_size;
7327            if 3 > max_ordinal {
7328                return Ok(());
7329            }
7330
7331            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7332            // are envelope_size bytes.
7333            let cur_offset: usize = (3 - 1) * envelope_size;
7334
7335            // Zero reserved fields.
7336            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7337
7338            // Safety:
7339            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7340            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7341            //   envelope_size bytes, there is always sufficient room.
7342            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
7343                self.path.as_ref().map(
7344                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
7345                ),
7346                encoder,
7347                offset + cur_offset,
7348                depth,
7349            )?;
7350
7351            _prev_end_offset = cur_offset + envelope_size;
7352            if 4 > max_ordinal {
7353                return Ok(());
7354            }
7355
7356            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7357            // are envelope_size bytes.
7358            let cur_offset: usize = (4 - 1) * envelope_size;
7359
7360            // Zero reserved fields.
7361            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7362
7363            // Safety:
7364            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7365            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7366            //   envelope_size bytes, there is always sufficient room.
7367            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl::Availability, D>(
7368            self.availability.as_ref().map(<fidl_fuchsia_component_decl::Availability as fidl::encoding::ValueTypeMarker>::borrow),
7369            encoder, offset + cur_offset, depth
7370        )?;
7371
7372            _prev_end_offset = cur_offset + envelope_size;
7373
7374            Ok(())
7375        }
7376    }
7377
7378    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Storage {
7379        #[inline(always)]
7380        fn new_empty() -> Self {
7381            Self::default()
7382        }
7383
7384        unsafe fn decode(
7385            &mut self,
7386            decoder: &mut fidl::encoding::Decoder<'_, D>,
7387            offset: usize,
7388            mut depth: fidl::encoding::Depth,
7389        ) -> fidl::Result<()> {
7390            decoder.debug_check_bounds::<Self>(offset);
7391            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7392                None => return Err(fidl::Error::NotNullable),
7393                Some(len) => len,
7394            };
7395            // Calling decoder.out_of_line_offset(0) is not allowed.
7396            if len == 0 {
7397                return Ok(());
7398            };
7399            depth.increment()?;
7400            let envelope_size = 8;
7401            let bytes_len = len * envelope_size;
7402            let offset = decoder.out_of_line_offset(bytes_len)?;
7403            // Decode the envelope for each type.
7404            let mut _next_ordinal_to_read = 0;
7405            let mut next_offset = offset;
7406            let end_offset = offset + bytes_len;
7407            _next_ordinal_to_read += 1;
7408            if next_offset >= end_offset {
7409                return Ok(());
7410            }
7411
7412            // Decode unknown envelopes for gaps in ordinals.
7413            while _next_ordinal_to_read < 1 {
7414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7415                _next_ordinal_to_read += 1;
7416                next_offset += envelope_size;
7417            }
7418
7419            let next_out_of_line = decoder.next_out_of_line();
7420            let handles_before = decoder.remaining_handles();
7421            if let Some((inlined, num_bytes, num_handles)) =
7422                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7423            {
7424                let member_inline_size =
7425                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
7426                        decoder.context,
7427                    );
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 = self
7441                    .name
7442                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
7443                fidl::decode!(
7444                    fidl::encoding::BoundedString<255>,
7445                    D,
7446                    val_ref,
7447                    decoder,
7448                    inner_offset,
7449                    inner_depth
7450                )?;
7451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7452                {
7453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7454                }
7455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7457                }
7458            }
7459
7460            next_offset += envelope_size;
7461            _next_ordinal_to_read += 1;
7462            if next_offset >= end_offset {
7463                return Ok(());
7464            }
7465
7466            // Decode unknown envelopes for gaps in ordinals.
7467            while _next_ordinal_to_read < 2 {
7468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7469                _next_ordinal_to_read += 1;
7470                next_offset += envelope_size;
7471            }
7472
7473            let next_out_of_line = decoder.next_out_of_line();
7474            let handles_before = decoder.remaining_handles();
7475            if let Some((inlined, num_bytes, num_handles)) =
7476                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7477            {
7478                let member_inline_size =
7479                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
7480                        decoder.context,
7481                    );
7482                if inlined != (member_inline_size <= 4) {
7483                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7484                }
7485                let inner_offset;
7486                let mut inner_depth = depth.clone();
7487                if inlined {
7488                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7489                    inner_offset = next_offset;
7490                } else {
7491                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7492                    inner_depth.increment()?;
7493                }
7494                let val_ref = self
7495                    .as_
7496                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
7497                fidl::decode!(
7498                    fidl::encoding::BoundedString<255>,
7499                    D,
7500                    val_ref,
7501                    decoder,
7502                    inner_offset,
7503                    inner_depth
7504                )?;
7505                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7506                {
7507                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7508                }
7509                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7510                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7511                }
7512            }
7513
7514            next_offset += envelope_size;
7515            _next_ordinal_to_read += 1;
7516            if next_offset >= end_offset {
7517                return Ok(());
7518            }
7519
7520            // Decode unknown envelopes for gaps in ordinals.
7521            while _next_ordinal_to_read < 3 {
7522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7523                _next_ordinal_to_read += 1;
7524                next_offset += envelope_size;
7525            }
7526
7527            let next_out_of_line = decoder.next_out_of_line();
7528            let handles_before = decoder.remaining_handles();
7529            if let Some((inlined, num_bytes, num_handles)) =
7530                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7531            {
7532                let member_inline_size =
7533                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
7534                        decoder.context,
7535                    );
7536                if inlined != (member_inline_size <= 4) {
7537                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7538                }
7539                let inner_offset;
7540                let mut inner_depth = depth.clone();
7541                if inlined {
7542                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7543                    inner_offset = next_offset;
7544                } else {
7545                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7546                    inner_depth.increment()?;
7547                }
7548                let val_ref = self
7549                    .path
7550                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
7551                fidl::decode!(
7552                    fidl::encoding::BoundedString<255>,
7553                    D,
7554                    val_ref,
7555                    decoder,
7556                    inner_offset,
7557                    inner_depth
7558                )?;
7559                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7560                {
7561                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7562                }
7563                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7564                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7565                }
7566            }
7567
7568            next_offset += envelope_size;
7569            _next_ordinal_to_read += 1;
7570            if next_offset >= end_offset {
7571                return Ok(());
7572            }
7573
7574            // Decode unknown envelopes for gaps in ordinals.
7575            while _next_ordinal_to_read < 4 {
7576                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7577                _next_ordinal_to_read += 1;
7578                next_offset += envelope_size;
7579            }
7580
7581            let next_out_of_line = decoder.next_out_of_line();
7582            let handles_before = decoder.remaining_handles();
7583            if let Some((inlined, num_bytes, num_handles)) =
7584                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7585            {
7586                let member_inline_size = <fidl_fuchsia_component_decl::Availability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7587                if inlined != (member_inline_size <= 4) {
7588                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7589                }
7590                let inner_offset;
7591                let mut inner_depth = depth.clone();
7592                if inlined {
7593                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7594                    inner_offset = next_offset;
7595                } else {
7596                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7597                    inner_depth.increment()?;
7598                }
7599                let val_ref = self.availability.get_or_insert_with(|| {
7600                    fidl::new_empty!(fidl_fuchsia_component_decl::Availability, D)
7601                });
7602                fidl::decode!(
7603                    fidl_fuchsia_component_decl::Availability,
7604                    D,
7605                    val_ref,
7606                    decoder,
7607                    inner_offset,
7608                    inner_depth
7609                )?;
7610                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7611                {
7612                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7613                }
7614                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7615                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7616                }
7617            }
7618
7619            next_offset += envelope_size;
7620
7621            // Decode the remaining unknown envelopes.
7622            while next_offset < end_offset {
7623                _next_ordinal_to_read += 1;
7624                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7625                next_offset += envelope_size;
7626            }
7627
7628            Ok(())
7629        }
7630    }
7631
7632    impl fidl::encoding::ValueTypeMarker for Capability {
7633        type Borrowed<'a> = &'a Self;
7634        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7635            value
7636        }
7637    }
7638
7639    unsafe impl fidl::encoding::TypeMarker for Capability {
7640        type Owned = Self;
7641
7642        #[inline(always)]
7643        fn inline_align(_context: fidl::encoding::Context) -> usize {
7644            8
7645        }
7646
7647        #[inline(always)]
7648        fn inline_size(_context: fidl::encoding::Context) -> usize {
7649            16
7650        }
7651    }
7652
7653    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
7654        for &Capability
7655    {
7656        #[inline]
7657        unsafe fn encode(
7658            self,
7659            encoder: &mut fidl::encoding::Encoder<'_, D>,
7660            offset: usize,
7661            _depth: fidl::encoding::Depth,
7662        ) -> fidl::Result<()> {
7663            encoder.debug_check_bounds::<Capability>(offset);
7664            encoder.write_num::<u64>(self.ordinal(), offset);
7665            match self {
7666                Capability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<Protocol, D>(
7667                    <Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7668                    encoder,
7669                    offset + 8,
7670                    _depth,
7671                ),
7672                Capability::Directory(ref val) => {
7673                    fidl::encoding::encode_in_envelope::<Directory, D>(
7674                        <Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
7675                        encoder,
7676                        offset + 8,
7677                        _depth,
7678                    )
7679                }
7680                Capability::Storage(ref val) => fidl::encoding::encode_in_envelope::<Storage, D>(
7681                    <Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
7682                    encoder,
7683                    offset + 8,
7684                    _depth,
7685                ),
7686                Capability::Service(ref val) => fidl::encoding::encode_in_envelope::<Service, D>(
7687                    <Service as fidl::encoding::ValueTypeMarker>::borrow(val),
7688                    encoder,
7689                    offset + 8,
7690                    _depth,
7691                ),
7692                Capability::EventStream(ref val) => {
7693                    fidl::encoding::encode_in_envelope::<EventStream, D>(
7694                        <EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
7695                        encoder,
7696                        offset + 8,
7697                        _depth,
7698                    )
7699                }
7700                Capability::Config(ref val) => fidl::encoding::encode_in_envelope::<Config, D>(
7701                    <Config as fidl::encoding::ValueTypeMarker>::borrow(val),
7702                    encoder,
7703                    offset + 8,
7704                    _depth,
7705                ),
7706                Capability::Dictionary(ref val) => {
7707                    fidl::encoding::encode_in_envelope::<Dictionary, D>(
7708                        <Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
7709                        encoder,
7710                        offset + 8,
7711                        _depth,
7712                    )
7713                }
7714                Capability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<Resolver, D>(
7715                    <Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
7716                    encoder,
7717                    offset + 8,
7718                    _depth,
7719                ),
7720                Capability::Runner(ref val) => fidl::encoding::encode_in_envelope::<Runner, D>(
7721                    <Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
7722                    encoder,
7723                    offset + 8,
7724                    _depth,
7725                ),
7726                Capability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7727            }
7728        }
7729    }
7730
7731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
7732        #[inline(always)]
7733        fn new_empty() -> Self {
7734            Self::__SourceBreaking { unknown_ordinal: 0 }
7735        }
7736
7737        #[inline]
7738        unsafe fn decode(
7739            &mut self,
7740            decoder: &mut fidl::encoding::Decoder<'_, D>,
7741            offset: usize,
7742            mut depth: fidl::encoding::Depth,
7743        ) -> fidl::Result<()> {
7744            decoder.debug_check_bounds::<Self>(offset);
7745            #[allow(unused_variables)]
7746            let next_out_of_line = decoder.next_out_of_line();
7747            let handles_before = decoder.remaining_handles();
7748            let (ordinal, inlined, num_bytes, num_handles) =
7749                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7750
7751            let member_inline_size = match ordinal {
7752                1 => <Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7753                2 => <Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7754                3 => <Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7755                4 => <Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7756                6 => <EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7757                7 => <Config as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7758                8 => <Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7759                9 => <Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7760                10 => <Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7761                0 => return Err(fidl::Error::UnknownUnionTag),
7762                _ => num_bytes as usize,
7763            };
7764
7765            if inlined != (member_inline_size <= 4) {
7766                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7767            }
7768            let _inner_offset;
7769            if inlined {
7770                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7771                _inner_offset = offset + 8;
7772            } else {
7773                depth.increment()?;
7774                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7775            }
7776            match ordinal {
7777                1 => {
7778                    #[allow(irrefutable_let_patterns)]
7779                    if let Capability::Protocol(_) = self {
7780                        // Do nothing, read the value into the object
7781                    } else {
7782                        // Initialize `self` to the right variant
7783                        *self = Capability::Protocol(fidl::new_empty!(Protocol, D));
7784                    }
7785                    #[allow(irrefutable_let_patterns)]
7786                    if let Capability::Protocol(ref mut val) = self {
7787                        fidl::decode!(Protocol, D, val, decoder, _inner_offset, depth)?;
7788                    } else {
7789                        unreachable!()
7790                    }
7791                }
7792                2 => {
7793                    #[allow(irrefutable_let_patterns)]
7794                    if let Capability::Directory(_) = self {
7795                        // Do nothing, read the value into the object
7796                    } else {
7797                        // Initialize `self` to the right variant
7798                        *self = Capability::Directory(fidl::new_empty!(Directory, D));
7799                    }
7800                    #[allow(irrefutable_let_patterns)]
7801                    if let Capability::Directory(ref mut val) = self {
7802                        fidl::decode!(Directory, D, val, decoder, _inner_offset, depth)?;
7803                    } else {
7804                        unreachable!()
7805                    }
7806                }
7807                3 => {
7808                    #[allow(irrefutable_let_patterns)]
7809                    if let Capability::Storage(_) = self {
7810                        // Do nothing, read the value into the object
7811                    } else {
7812                        // Initialize `self` to the right variant
7813                        *self = Capability::Storage(fidl::new_empty!(Storage, D));
7814                    }
7815                    #[allow(irrefutable_let_patterns)]
7816                    if let Capability::Storage(ref mut val) = self {
7817                        fidl::decode!(Storage, D, val, decoder, _inner_offset, depth)?;
7818                    } else {
7819                        unreachable!()
7820                    }
7821                }
7822                4 => {
7823                    #[allow(irrefutable_let_patterns)]
7824                    if let Capability::Service(_) = self {
7825                        // Do nothing, read the value into the object
7826                    } else {
7827                        // Initialize `self` to the right variant
7828                        *self = Capability::Service(fidl::new_empty!(Service, D));
7829                    }
7830                    #[allow(irrefutable_let_patterns)]
7831                    if let Capability::Service(ref mut val) = self {
7832                        fidl::decode!(Service, D, val, decoder, _inner_offset, depth)?;
7833                    } else {
7834                        unreachable!()
7835                    }
7836                }
7837                6 => {
7838                    #[allow(irrefutable_let_patterns)]
7839                    if let Capability::EventStream(_) = self {
7840                        // Do nothing, read the value into the object
7841                    } else {
7842                        // Initialize `self` to the right variant
7843                        *self = Capability::EventStream(fidl::new_empty!(EventStream, D));
7844                    }
7845                    #[allow(irrefutable_let_patterns)]
7846                    if let Capability::EventStream(ref mut val) = self {
7847                        fidl::decode!(EventStream, D, val, decoder, _inner_offset, depth)?;
7848                    } else {
7849                        unreachable!()
7850                    }
7851                }
7852                7 => {
7853                    #[allow(irrefutable_let_patterns)]
7854                    if let Capability::Config(_) = self {
7855                        // Do nothing, read the value into the object
7856                    } else {
7857                        // Initialize `self` to the right variant
7858                        *self = Capability::Config(fidl::new_empty!(Config, D));
7859                    }
7860                    #[allow(irrefutable_let_patterns)]
7861                    if let Capability::Config(ref mut val) = self {
7862                        fidl::decode!(Config, D, val, decoder, _inner_offset, depth)?;
7863                    } else {
7864                        unreachable!()
7865                    }
7866                }
7867                8 => {
7868                    #[allow(irrefutable_let_patterns)]
7869                    if let Capability::Dictionary(_) = self {
7870                        // Do nothing, read the value into the object
7871                    } else {
7872                        // Initialize `self` to the right variant
7873                        *self = Capability::Dictionary(fidl::new_empty!(Dictionary, D));
7874                    }
7875                    #[allow(irrefutable_let_patterns)]
7876                    if let Capability::Dictionary(ref mut val) = self {
7877                        fidl::decode!(Dictionary, D, val, decoder, _inner_offset, depth)?;
7878                    } else {
7879                        unreachable!()
7880                    }
7881                }
7882                9 => {
7883                    #[allow(irrefutable_let_patterns)]
7884                    if let Capability::Resolver(_) = self {
7885                        // Do nothing, read the value into the object
7886                    } else {
7887                        // Initialize `self` to the right variant
7888                        *self = Capability::Resolver(fidl::new_empty!(Resolver, D));
7889                    }
7890                    #[allow(irrefutable_let_patterns)]
7891                    if let Capability::Resolver(ref mut val) = self {
7892                        fidl::decode!(Resolver, D, val, decoder, _inner_offset, depth)?;
7893                    } else {
7894                        unreachable!()
7895                    }
7896                }
7897                10 => {
7898                    #[allow(irrefutable_let_patterns)]
7899                    if let Capability::Runner(_) = self {
7900                        // Do nothing, read the value into the object
7901                    } else {
7902                        // Initialize `self` to the right variant
7903                        *self = Capability::Runner(fidl::new_empty!(Runner, D));
7904                    }
7905                    #[allow(irrefutable_let_patterns)]
7906                    if let Capability::Runner(ref mut val) = self {
7907                        fidl::decode!(Runner, D, val, decoder, _inner_offset, depth)?;
7908                    } else {
7909                        unreachable!()
7910                    }
7911                }
7912                #[allow(deprecated)]
7913                ordinal => {
7914                    for _ in 0..num_handles {
7915                        decoder.drop_next_handle()?;
7916                    }
7917                    *self = Capability::__SourceBreaking { unknown_ordinal: ordinal };
7918                }
7919            }
7920            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7921                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7922            }
7923            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7924                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7925            }
7926            Ok(())
7927        }
7928    }
7929}