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