Skip to main content

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