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