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