fidl_fuchsia_component_internal__common/
fidl_fuchsia_component_internal__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
11/// A single entry in an allowlist, expressed in one of three forms:
12///
13///   1. Exact moniker - Most entries should fall under this case,
14///      where the exact monikers of allowed components are listed.
15///      For example, "/foo/bar".
16///   2. Realm - Realms can be allowlisted such that any descendant will be
17///      allowed without being listed explicitly. For example, "/foo/**"
18///      allows any descendant of "/foo" (but not foo itself).
19///   3. Collection - Individual collections can also be allowlisted. For
20///      example, "/foo/bar:**" will allow any child in foo's "bar"
21///      collection and any descendant thereof, but not foo or other
22///      children of foo.
23pub type AllowlistEntryMoniker = String;
24
25/// 256 bits encoded in lower-cased base64 (64 chars).
26pub type InstanceId = String;
27
28pub type Moniker = String;
29
30/// The maximum size of the JobPolicyAllowlists entries.
31/// This value is currently set arbitrarily.
32pub const MAX_ALLOWLIST_SIZE: u64 = 128;
33
34/// The builtin resolver to use for the fuchsia-boot scheme, if any.
35#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
36#[repr(u8)]
37pub enum BuiltinBootResolver {
38    /// No builtin boot resolver is used.
39    None = 1,
40    /// Try to use the /boot directory from the namespace. Typically this is provided
41    /// to component manager during initialization of the system.
42    Boot = 2,
43}
44
45impl BuiltinBootResolver {
46    #[inline]
47    pub fn from_primitive(prim: u8) -> Option<Self> {
48        match prim {
49            1 => Some(Self::None),
50            2 => Some(Self::Boot),
51            _ => None,
52        }
53    }
54
55    #[inline]
56    pub const fn into_primitive(self) -> u8 {
57        self as u8
58    }
59}
60
61/// Where to log to.
62#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
63#[repr(u8)]
64pub enum LogDestination {
65    /// Log to syslog.
66    Syslog = 1,
67    /// Log to klog.
68    Klog = 2,
69}
70
71impl LogDestination {
72    #[inline]
73    pub fn from_primitive(prim: u8) -> Option<Self> {
74        match prim {
75            1 => Some(Self::Syslog),
76            2 => Some(Self::Klog),
77            _ => None,
78        }
79    }
80
81    #[inline]
82    pub const fn into_primitive(self) -> u8 {
83        self as u8
84    }
85}
86
87/// If and how the realm builder resolver and runner will be used.
88#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
89#[repr(u8)]
90pub enum RealmBuilderResolverAndRunner {
91    /// The realm builder resolver and runner are not used.
92    None = 1,
93    /// The realm builder resolver and runner will be accessed through component
94    /// manager's namespace, and made available to the root realm.
95    Namespace = 2,
96}
97
98impl RealmBuilderResolverAndRunner {
99    #[inline]
100    pub fn from_primitive(prim: u8) -> Option<Self> {
101        match prim {
102            1 => Some(Self::None),
103            2 => Some(Self::Namespace),
104            _ => None,
105        }
106    }
107
108    #[inline]
109    pub const fn into_primitive(self) -> u8 {
110        self as u8
111    }
112}
113
114/// Where to obtain the trace provider from.
115/// to find the trace provider to register with.
116#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
117#[repr(u8)]
118pub enum TraceProvider {
119    /// Default. Get it from the normal fuchsia.tracing.provider.Registry.
120    Namespace = 1,
121    /// Get it from the root component's exposed directory. It is expected that the root
122    /// component exposes `fuchsia.tracing.provider.Registry` protocol to its parent.
123    RootExposed = 2,
124}
125
126impl TraceProvider {
127    #[inline]
128    pub fn from_primitive(prim: u8) -> Option<Self> {
129        match prim {
130            1 => Some(Self::Namespace),
131            2 => Some(Self::RootExposed),
132            _ => None,
133        }
134    }
135
136    #[inline]
137    pub const fn into_primitive(self) -> u8 {
138        self as u8
139    }
140}
141
142/// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
143#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
144#[repr(u8)]
145pub enum VmexSource {
146    /// Get it from the PA_SYSTEM_RESOURCE handle passed to component_manager
147    SystemResource = 1,
148    /// Get it from the /svc/fuchsia.kernel.VmexResource protocol in
149    /// component_manager's namespace.
150    Namespace = 2,
151}
152
153impl VmexSource {
154    #[inline]
155    pub fn from_primitive(prim: u8) -> Option<Self> {
156        match prim {
157            1 => Some(Self::SystemResource),
158            2 => Some(Self::Namespace),
159            _ => None,
160        }
161    }
162
163    #[inline]
164    pub const fn into_primitive(self) -> u8 {
165        self as u8
166    }
167}
168
169/// The enforcement and validation policy to apply to component target ABI revisions.
170#[derive(Clone, Debug, Default, PartialEq)]
171pub struct AbiRevisionPolicy {
172    /// Allowlist entry monikers for components that will be permitted to run
173    /// even if they fail ABI revision checks. This should _never_ be used. Any
174    /// component that bypasses these checks is unsupported by the platform and
175    /// may behave in unexpected ways!
176    pub allowlist: Option<Vec<String>>,
177    #[doc(hidden)]
178    pub __source_breaking: fidl::marker::SourceBreaking,
179}
180
181impl fidl::Persistable for AbiRevisionPolicy {}
182
183#[derive(Clone, Debug, Default, PartialEq)]
184pub struct AllowlistedDirectory {
185    #[doc(hidden)]
186    pub __source_breaking: fidl::marker::SourceBreaking,
187}
188
189impl fidl::Persistable for AllowlistedDirectory {}
190
191#[derive(Clone, Debug, Default, PartialEq)]
192pub struct AllowlistedProtocol {
193    #[doc(hidden)]
194    pub __source_breaking: fidl::marker::SourceBreaking,
195}
196
197impl fidl::Persistable for AllowlistedProtocol {}
198
199#[derive(Clone, Debug, Default, PartialEq)]
200pub struct AllowlistedResolver {
201    #[doc(hidden)]
202    pub __source_breaking: fidl::marker::SourceBreaking,
203}
204
205impl fidl::Persistable for AllowlistedResolver {}
206
207#[derive(Clone, Debug, Default, PartialEq)]
208pub struct AllowlistedRunner {
209    #[doc(hidden)]
210    pub __source_breaking: fidl::marker::SourceBreaking,
211}
212
213impl fidl::Persistable for AllowlistedRunner {}
214
215#[derive(Clone, Debug, Default, PartialEq)]
216pub struct AllowlistedService {
217    #[doc(hidden)]
218    pub __source_breaking: fidl::marker::SourceBreaking,
219}
220
221impl fidl::Persistable for AllowlistedService {}
222
223#[derive(Clone, Debug, Default, PartialEq)]
224pub struct AllowlistedStorage {
225    #[doc(hidden)]
226    pub __source_breaking: fidl::marker::SourceBreaking,
227}
228
229impl fidl::Persistable for AllowlistedStorage {}
230
231#[derive(Clone, Debug, Default, PartialEq)]
232pub struct AnonymizedAggregate {
233    pub capability: Option<AggregateCapability>,
234    pub moniker: Option<String>,
235    pub members: Option<Vec<AggregateMember>>,
236    pub sources: Option<Sources>,
237    pub instances: Option<Vec<fidl_fuchsia_sys2__common::ServiceInstance>>,
238    #[doc(hidden)]
239    pub __source_breaking: fidl::marker::SourceBreaking,
240}
241
242impl fidl::Persistable for AnonymizedAggregate {}
243
244#[derive(Clone, Debug, Default, PartialEq)]
245pub struct Builtin {
246    pub capability: Option<InternalCapability>,
247    #[doc(hidden)]
248    pub __source_breaking: fidl::marker::SourceBreaking,
249}
250
251impl fidl::Persistable for Builtin {}
252
253#[derive(Clone, Debug, Default, PartialEq)]
254pub struct Capability {
255    pub source_capability: Option<ComponentCapability>,
256    pub moniker: Option<String>,
257    #[doc(hidden)]
258    pub __source_breaking: fidl::marker::SourceBreaking,
259}
260
261impl fidl::Persistable for Capability {}
262
263/// Defines a single capability policy entry in the set of capability policy
264/// allowlists.
265#[derive(Clone, Debug, Default, PartialEq)]
266pub struct CapabilityAllowlistEntry {
267    /// The `source_moniker` represents the origin of a capability. The
268    /// `source_moniker` is either a moniker or '<component_manager>'.
269    pub source_moniker: Option<String>,
270    /// The source name of this particular capability.
271    pub source_name: Option<String>,
272    /// Represents the type of capability that is being restricted along
273    /// with any other properties required by a particular capability type.
274    pub capability: Option<AllowlistedCapability>,
275    /// The set of components, described by either exact monikers, realm, or collection,
276    /// that are allowed to use this specific capability.
277    pub target_monikers: Option<Vec<String>>,
278    /// The original source type of this capability, self or framework.
279    pub source: Option<fidl_fuchsia_component_decl__common::Ref>,
280    #[doc(hidden)]
281    pub __source_breaking: fidl::marker::SourceBreaking,
282}
283
284impl fidl::Persistable for CapabilityAllowlistEntry {}
285
286/// Defines the total set of capability allowlists. Each
287/// `source_moniker` + `capability` pair must be unique in the vector.
288#[derive(Clone, Debug, Default, PartialEq)]
289pub struct CapabilityPolicyAllowlists {
290    pub allowlist: Option<Vec<CapabilityAllowlistEntry>>,
291    #[doc(hidden)]
292    pub __source_breaking: fidl::marker::SourceBreaking,
293}
294
295impl fidl::Persistable for CapabilityPolicyAllowlists {}
296
297/// Allowlists for privileged child options.
298#[derive(Clone, Debug, Default, PartialEq)]
299pub struct ChildPolicyAllowlists {
300    /// Allowlist entry monikers of component instances allowed to have the
301    /// `on_terminate=REBOOT` in their `children` declaration.
302    pub reboot_on_terminate: Option<Vec<String>>,
303    #[doc(hidden)]
304    pub __source_breaking: fidl::marker::SourceBreaking,
305}
306
307impl fidl::Persistable for ChildPolicyAllowlists {}
308
309#[derive(Clone, Debug, Default, PartialEq)]
310pub struct Component {
311    pub capability: Option<ComponentCapability>,
312    pub moniker: Option<String>,
313    #[doc(hidden)]
314    pub __source_breaking: fidl::marker::SourceBreaking,
315}
316
317impl fidl::Persistable for Component {}
318
319/// Top-level type describing the component ID index.
320#[derive(Clone, Debug, Default, PartialEq)]
321pub struct ComponentIdIndex {
322    /// A list of component ID instance entries.
323    ///
324    /// Required, but may be empty.
325    pub instances: Option<Vec<InstanceIdEntry>>,
326    #[doc(hidden)]
327    pub __source_breaking: fidl::marker::SourceBreaking,
328}
329
330impl fidl::Persistable for ComponentIdIndex {}
331
332#[derive(Clone, Debug, Default, PartialEq)]
333pub struct Config {
334    /// If true, component manager will be in debug mode. In this mode, component manager
335    /// provides the `EventSource` protocol and exposes this protocol. Component
336    /// manager will not start until it is resumed by a call to
337    /// `EventSource.StartComponentTree`.
338    ///
339    /// This is done so that an external component (say an integration test) can subscribe
340    /// to events before the root component has started.
341    pub debug: Option<bool>,
342    /// How many children, maximum, are returned by a call to `Realm.ChildIterator.next()`.
343    pub list_children_batch_size: Option<u32>,
344    /// Security policy configuration.
345    pub security_policy: Option<SecurityPolicy>,
346    /// Capabilities offered from component manager's namespace.
347    pub namespace_capabilities: Option<Vec<fidl_fuchsia_component_decl__common::Capability>>,
348    /// If true, component_manager will serve an instance of fuchsia.process.Launcher and use this
349    /// launcher for the built-in ELF component runner. The root component can additionally
350    /// use and/or offer this service using `/builtin/fuchsia.process.Launcher` from realm.
351    /// This flag exists because the built-in process launcher *only* works when
352    /// component_manager runs under a job that has ZX_POL_NEW_PROCESS set to allow, like the root
353    /// job. Otherwise, the component_manager process cannot directly create process through
354    /// zx_process_create. When we run component_manager elsewhere, like in test environments, it
355    /// has to use the fuchsia.process.Launcher service provided through its namespace instead.
356    pub use_builtin_process_launcher: Option<bool>,
357    /// If true, component_manager will maintain a UTC kernel clock and vend write handles through
358    /// an instance of `fuchsia.time.Maintenance`. This flag should only be used with the top-level
359    /// component_manager.
360    pub maintain_utc_clock: Option<bool>,
361    /// The number of threads to use for running component_manager's executor.
362    /// If not present, interpreted as 1.
363    pub num_threads: Option<u8>,
364    /// URL of the root component to launch. This field is used if the no URL
365    /// is passed to component manager. If value is passed in both places, then
366    /// an error is raised.
367    pub root_component_url: Option<String>,
368    /// Path to the component ID index. An empty value defaults to an empty index.
369    /// An invalid index causes component_manager to abort.
370    pub component_id_index_path: Option<String>,
371    /// Where to log to.
372    pub log_destination: Option<LogDestination>,
373    /// If true, component manager will log all events dispatched in the topology.
374    pub log_all_events: Option<bool>,
375    /// Which builtin resolver to use for the fuchsia-boot scheme.
376    /// If not present, interpreted as BuiltinBootResolver.NONE.
377    pub builtin_boot_resolver: Option<BuiltinBootResolver>,
378    /// If and how the realm builder resolver and runner will be used. Typically
379    /// these capabilities from realm builder are available to a nested
380    /// component manager that is undergoing an integration test.
381    pub realm_builder_resolver_and_runner: Option<RealmBuilderResolverAndRunner>,
382    /// Capabilities offered from component manager as built-in capabilities.
383    pub builtin_capabilities: Option<Vec<fidl_fuchsia_component_decl__common::Capability>>,
384    /// Enables Component Manager's introspection APIs (RealmQuery, RealmExplorer,
385    /// RouteValidator, LifecycleController, etc.) for use by components.
386    pub enable_introspection: Option<bool>,
387    /// The enforcement and validation policy to apply to component target ABI
388    /// revisions.
389    pub abi_revision_policy: Option<AbiRevisionPolicy>,
390    /// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
391    /// If not present, defaults to `VmexSource::SYSTEM_RESOURCE`.
392    pub vmex_source: Option<VmexSource>,
393    /// Information about the health checks during the update process.
394    pub health_check: Option<HealthCheck>,
395    /// Where to look for the trace provider. If missing, defaults to TraceProvider::NAMESPACE.
396    /// This is ignored on non-tracing builds.
397    pub trace_provider: Option<TraceProvider>,
398    #[doc(hidden)]
399    pub __source_breaking: fidl::marker::SourceBreaking,
400}
401
402impl fidl::Persistable for Config {}
403
404/// Defines a capability policy entry in the set of debug capability policy
405/// allowlists.
406#[derive(Clone, Debug, Default, PartialEq)]
407pub struct DebugRegistrationAllowlistEntry {
408    /// The name of the capability as it's registered in the environment.
409    pub name: Option<String>,
410    /// Represents the type of capability that is being restricted along
411    /// with any other properties required by a particular capability type.
412    pub debug: Option<AllowlistedDebugRegistration>,
413    /// The moniker of the component which is allowed to register
414    /// this capability in its environment's debug sction.
415    pub moniker: Option<String>,
416    /// Name of the environment where this capability can be registered.
417    pub environment_name: Option<String>,
418    #[doc(hidden)]
419    pub __source_breaking: fidl::marker::SourceBreaking,
420}
421
422impl fidl::Persistable for DebugRegistrationAllowlistEntry {}
423
424/// Defines the total set of debug capability allowlists.
425#[derive(Clone, Debug, Default, PartialEq)]
426pub struct DebugRegistrationPolicyAllowlists {
427    pub allowlist: Option<Vec<DebugRegistrationAllowlistEntry>>,
428    #[doc(hidden)]
429    pub __source_breaking: fidl::marker::SourceBreaking,
430}
431
432impl fidl::Persistable for DebugRegistrationPolicyAllowlists {}
433
434#[derive(Clone, Debug, Default, PartialEq)]
435pub struct Environment {
436    pub capability: Option<ComponentCapability>,
437    pub moniker: Option<String>,
438    #[doc(hidden)]
439    pub __source_breaking: fidl::marker::SourceBreaking,
440}
441
442impl fidl::Persistable for Environment {}
443
444#[derive(Clone, Debug, Default, PartialEq)]
445pub struct EnvironmentSource {
446    pub source_name: Option<String>,
447    pub source: Option<fidl_fuchsia_component_decl__common::Ref>,
448    #[doc(hidden)]
449    pub __source_breaking: fidl::marker::SourceBreaking,
450}
451
452impl fidl::Persistable for EnvironmentSource {}
453
454/// This value is used internally by event stream routers, to carry information
455/// pertinent to the route.
456#[derive(Clone, Debug, Default, PartialEq)]
457pub struct EventStreamRouteMetadata {
458    /// The moniker of the component that has set a scope on this event stream.
459    /// Unset if there is no scope on the event stream.
460    pub scope_moniker: Option<String>,
461    /// The scope(s) from which the consumer of this event stream will be able
462    /// to observe events. Relative to the `scope_moniker`. Unset if there is no
463    /// scope on the event stream.
464    pub scope: Option<Vec<fidl_fuchsia_component_decl__common::Ref>>,
465    #[doc(hidden)]
466    pub __source_breaking: fidl::marker::SourceBreaking,
467}
468
469impl fidl::Persistable for EventStreamRouteMetadata {}
470
471#[derive(Clone, Debug, Default, PartialEq)]
472pub struct FilteredAggregateProvider {
473    pub capability: Option<AggregateCapability>,
474    pub moniker: Option<String>,
475    pub offer_service_decls: Option<Vec<fidl_fuchsia_component_decl__common::OfferService>>,
476    pub sources: Option<Sources>,
477    #[doc(hidden)]
478    pub __source_breaking: fidl::marker::SourceBreaking,
479}
480
481impl fidl::Persistable for FilteredAggregateProvider {}
482
483#[derive(Clone, Debug, Default, PartialEq)]
484pub struct FilteredProvider {
485    pub capability: Option<AggregateCapability>,
486    pub moniker: Option<String>,
487    pub service_capability: Option<ComponentCapability>,
488    pub offer_service_decl: Option<fidl_fuchsia_component_decl__common::OfferService>,
489    #[doc(hidden)]
490    pub __source_breaking: fidl::marker::SourceBreaking,
491}
492
493impl fidl::Persistable for FilteredProvider {}
494
495#[derive(Clone, Debug, Default, PartialEq)]
496pub struct Framework {
497    pub capability: Option<InternalCapability>,
498    pub moniker: Option<String>,
499    #[doc(hidden)]
500    pub __source_breaking: fidl::marker::SourceBreaking,
501}
502
503impl fidl::Persistable for Framework {}
504
505/// Information about the health checks during the update process.
506#[derive(Clone, Debug, Default, PartialEq)]
507pub struct HealthCheck {
508    /// Component monikers that must be healthy in order to complete an OTA update.
509    pub monikers: Option<Vec<String>>,
510    #[doc(hidden)]
511    pub __source_breaking: fidl::marker::SourceBreaking,
512}
513
514impl fidl::Persistable for HealthCheck {}
515
516#[derive(Clone, Debug, Default, PartialEq)]
517pub struct InstanceIdEntry {
518    /// A 256-bit identifier encoded in base64 which is unique across all other
519    /// instance IDs in the index.
520    pub instance_id: Option<String>,
521    /// The moniker identifying the component instance.
522    pub moniker: Option<String>,
523    #[doc(hidden)]
524    pub __source_breaking: fidl::marker::SourceBreaking,
525}
526
527impl fidl::Persistable for InstanceIdEntry {}
528
529/// Allowlists for Zircon job policy.
530#[derive(Clone, Debug, Default, PartialEq)]
531pub struct JobPolicyAllowlists {
532    /// Allowlist entry monikers for components allowed to be given the
533    /// ZX_POL_AMBIENT_MARK_VMO_EXEC job policy.
534    ///
535    /// Components must request this policy by including "job_policy_ambient_mark_vmo_exec: true" in
536    /// their CML's `program` section and must be using the ELF runner.
537    /// This is equivalent to the v1 'deprecated-ambient-replace-as-executable' feature.
538    pub ambient_mark_vmo_exec: Option<Vec<String>>,
539    /// Allowlist entry monikers for components allowed to have their original process
540    /// marked as critical to component_manager's job.
541    ///
542    /// Components must request this critical marking by including "main_process_critical: true" in
543    /// their CML's `program` section and must be using the ELF runner.
544    pub main_process_critical: Option<Vec<String>>,
545    /// Allowlist entry monikers for components allowed to call zx_process_create directly
546    /// (e.g., do not have ZX_POL_NEW_PROCESS set to ZX_POL_ACTION_DENY).
547    ///
548    /// Components must request this policy by including "job_policy_create_raw_processes: true" in
549    /// their manifest's program object and must be using the ELF runner.
550    pub create_raw_processes: Option<Vec<String>>,
551    #[doc(hidden)]
552    pub __source_breaking: fidl::marker::SourceBreaking,
553}
554
555impl fidl::Persistable for JobPolicyAllowlists {}
556
557#[derive(Clone, Debug, Default, PartialEq)]
558pub struct Namespace {
559    pub capability: Option<ComponentCapability>,
560    #[doc(hidden)]
561    pub __source_breaking: fidl::marker::SourceBreaking,
562}
563
564impl fidl::Persistable for Namespace {}
565
566/// Runtime security policy.
567#[derive(Clone, Debug, Default, PartialEq)]
568pub struct SecurityPolicy {
569    /// Allowlists for Zircon job policy.
570    pub job_policy: Option<JobPolicyAllowlists>,
571    /// Capability access policy.
572    pub capability_policy: Option<CapabilityPolicyAllowlists>,
573    /// Debug capability registration policy.
574    pub debug_registration_policy: Option<DebugRegistrationPolicyAllowlists>,
575    /// Component child options policy.
576    pub child_policy: Option<ChildPolicyAllowlists>,
577    #[doc(hidden)]
578    pub __source_breaking: fidl::marker::SourceBreaking,
579}
580
581impl fidl::Persistable for SecurityPolicy {}
582
583#[derive(Clone, Debug, Default, PartialEq)]
584pub struct Sources {
585    pub framework: Option<bool>,
586    pub builtin: Option<bool>,
587    pub capability: Option<bool>,
588    pub collection: Option<bool>,
589    pub namespace: Option<bool>,
590    pub component: Option<bool>,
591    pub capability_type: Option<String>,
592    #[doc(hidden)]
593    pub __source_breaking: fidl::marker::SourceBreaking,
594}
595
596impl fidl::Persistable for Sources {}
597
598#[derive(Clone, Debug, Default, PartialEq)]
599pub struct Void {
600    pub capability: Option<InternalCapability>,
601    pub moniker: Option<String>,
602    #[doc(hidden)]
603    pub __source_breaking: fidl::marker::SourceBreaking,
604}
605
606impl fidl::Persistable for Void {}
607
608#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609pub enum AggregateCapability {
610    Service(String),
611}
612
613impl AggregateCapability {
614    #[inline]
615    pub fn ordinal(&self) -> u64 {
616        match *self {
617            Self::Service(_) => 1,
618        }
619    }
620}
621
622impl fidl::Persistable for AggregateCapability {}
623
624#[derive(Clone, Debug, PartialEq)]
625pub enum AggregateMember {
626    Child(fidl_fuchsia_component_decl__common::ChildRef),
627    Collection(String),
628    Parent(fidl_fuchsia_component_decl__common::ParentRef),
629    Self_(fidl_fuchsia_component_decl__common::SelfRef),
630}
631
632impl AggregateMember {
633    #[inline]
634    pub fn ordinal(&self) -> u64 {
635        match *self {
636            Self::Child(_) => 1,
637            Self::Collection(_) => 2,
638            Self::Parent(_) => 3,
639            Self::Self_(_) => 4,
640        }
641    }
642}
643
644impl fidl::Persistable for AggregateMember {}
645
646/// Represents the class of capabilities supported to be allowlisted.
647#[derive(Clone, Debug)]
648pub enum AllowlistedCapability {
649    Directory(AllowlistedDirectory),
650    Protocol(AllowlistedProtocol),
651    Service(AllowlistedService),
652    Storage(AllowlistedStorage),
653    Runner(AllowlistedRunner),
654    Resolver(AllowlistedResolver),
655    #[doc(hidden)]
656    __SourceBreaking {
657        unknown_ordinal: u64,
658    },
659}
660
661/// Pattern that matches an unknown `AllowlistedCapability` member.
662#[macro_export]
663macro_rules! AllowlistedCapabilityUnknown {
664    () => {
665        _
666    };
667}
668
669// Custom PartialEq so that unknown variants are not equal to themselves.
670impl PartialEq for AllowlistedCapability {
671    fn eq(&self, other: &Self) -> bool {
672        match (self, other) {
673            (Self::Directory(x), Self::Directory(y)) => *x == *y,
674            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
675            (Self::Service(x), Self::Service(y)) => *x == *y,
676            (Self::Storage(x), Self::Storage(y)) => *x == *y,
677            (Self::Runner(x), Self::Runner(y)) => *x == *y,
678            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
679            _ => false,
680        }
681    }
682}
683
684impl AllowlistedCapability {
685    #[inline]
686    pub fn ordinal(&self) -> u64 {
687        match *self {
688            Self::Directory(_) => 1,
689            Self::Protocol(_) => 3,
690            Self::Service(_) => 4,
691            Self::Storage(_) => 5,
692            Self::Runner(_) => 6,
693            Self::Resolver(_) => 7,
694            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
695        }
696    }
697
698    #[inline]
699    pub fn unknown_variant_for_testing() -> Self {
700        Self::__SourceBreaking { unknown_ordinal: 0 }
701    }
702
703    #[inline]
704    pub fn is_unknown(&self) -> bool {
705        match self {
706            Self::__SourceBreaking { .. } => true,
707            _ => false,
708        }
709    }
710}
711
712impl fidl::Persistable for AllowlistedCapability {}
713
714/// Represents the class of capabilities supported to be allowlisted.
715#[derive(Clone, Debug)]
716pub enum AllowlistedDebugRegistration {
717    Protocol(AllowlistedProtocol),
718    #[doc(hidden)]
719    __SourceBreaking {
720        unknown_ordinal: u64,
721    },
722}
723
724/// Pattern that matches an unknown `AllowlistedDebugRegistration` member.
725#[macro_export]
726macro_rules! AllowlistedDebugRegistrationUnknown {
727    () => {
728        _
729    };
730}
731
732// Custom PartialEq so that unknown variants are not equal to themselves.
733impl PartialEq for AllowlistedDebugRegistration {
734    fn eq(&self, other: &Self) -> bool {
735        match (self, other) {
736            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
737            _ => false,
738        }
739    }
740}
741
742impl AllowlistedDebugRegistration {
743    #[inline]
744    pub fn ordinal(&self) -> u64 {
745        match *self {
746            Self::Protocol(_) => 1,
747            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
748        }
749    }
750
751    #[inline]
752    pub fn unknown_variant_for_testing() -> Self {
753        Self::__SourceBreaking { unknown_ordinal: 0 }
754    }
755
756    #[inline]
757    pub fn is_unknown(&self) -> bool {
758        match self {
759            Self::__SourceBreaking { .. } => true,
760            _ => false,
761        }
762    }
763}
764
765impl fidl::Persistable for AllowlistedDebugRegistration {}
766
767#[derive(Clone, Debug, PartialEq)]
768pub enum CapabilitySource {
769    Component(Component),
770    Framework(Framework),
771    Builtin(Builtin),
772    Namespace(Namespace),
773    Capability(Capability),
774    AnonymizedAggregate(AnonymizedAggregate),
775    FilteredProvider(FilteredProvider),
776    FilteredAggregateProvider(FilteredAggregateProvider),
777    Environment(Environment),
778    Void(Void),
779}
780
781impl CapabilitySource {
782    #[inline]
783    pub fn ordinal(&self) -> u64 {
784        match *self {
785            Self::Component(_) => 1,
786            Self::Framework(_) => 2,
787            Self::Builtin(_) => 3,
788            Self::Namespace(_) => 4,
789            Self::Capability(_) => 5,
790            Self::AnonymizedAggregate(_) => 6,
791            Self::FilteredProvider(_) => 7,
792            Self::FilteredAggregateProvider(_) => 8,
793            Self::Environment(_) => 9,
794            Self::Void(_) => 10,
795        }
796    }
797}
798
799impl fidl::Persistable for CapabilitySource {}
800
801#[derive(Clone, Debug, PartialEq)]
802pub enum ComponentCapability {
803    Use_(fidl_fuchsia_component_decl__common::Use),
804    Offer(fidl_fuchsia_component_decl__common::Offer),
805    Expose(fidl_fuchsia_component_decl__common::Expose),
806    Config(fidl_fuchsia_component_decl__common::Configuration),
807    Dictionary(fidl_fuchsia_component_decl__common::Dictionary),
808    Directory(fidl_fuchsia_component_decl__common::Directory),
809    Environment(EnvironmentCapability),
810    EventStream(fidl_fuchsia_component_decl__common::EventStream),
811    Protocol(fidl_fuchsia_component_decl__common::Protocol),
812    Resolver(fidl_fuchsia_component_decl__common::Resolver),
813    Runner(fidl_fuchsia_component_decl__common::Runner),
814    Service(fidl_fuchsia_component_decl__common::Service),
815    Storage(fidl_fuchsia_component_decl__common::Storage),
816}
817
818impl ComponentCapability {
819    #[inline]
820    pub fn ordinal(&self) -> u64 {
821        match *self {
822            Self::Use_(_) => 1,
823            Self::Offer(_) => 2,
824            Self::Expose(_) => 3,
825            Self::Config(_) => 4,
826            Self::Dictionary(_) => 5,
827            Self::Directory(_) => 6,
828            Self::Environment(_) => 7,
829            Self::EventStream(_) => 8,
830            Self::Protocol(_) => 9,
831            Self::Resolver(_) => 10,
832            Self::Runner(_) => 11,
833            Self::Service(_) => 12,
834            Self::Storage(_) => 13,
835        }
836    }
837}
838
839impl fidl::Persistable for ComponentCapability {}
840
841#[derive(Clone, Debug, PartialEq)]
842pub enum EnvironmentCapability {
843    Runner(EnvironmentSource),
844    Resolver(EnvironmentSource),
845    Debug(EnvironmentSource),
846}
847
848impl EnvironmentCapability {
849    #[inline]
850    pub fn ordinal(&self) -> u64 {
851        match *self {
852            Self::Runner(_) => 1,
853            Self::Resolver(_) => 2,
854            Self::Debug(_) => 3,
855        }
856    }
857}
858
859impl fidl::Persistable for EnvironmentCapability {}
860
861#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
862pub enum InternalCapability {
863    Config(String),
864    Dictionary(String),
865    Directory(String),
866    EventStream(String),
867    Protocol(String),
868    Resolver(String),
869    Runner(String),
870    Service(String),
871    Storage(String),
872}
873
874impl InternalCapability {
875    #[inline]
876    pub fn ordinal(&self) -> u64 {
877        match *self {
878            Self::Config(_) => 1,
879            Self::Dictionary(_) => 2,
880            Self::Directory(_) => 3,
881            Self::EventStream(_) => 4,
882            Self::Protocol(_) => 5,
883            Self::Resolver(_) => 6,
884            Self::Runner(_) => 7,
885            Self::Service(_) => 8,
886            Self::Storage(_) => 9,
887        }
888    }
889}
890
891impl fidl::Persistable for InternalCapability {}
892
893pub mod component_sandbox_retriever_ordinals {
894    pub const GET_MY_SANDBOX: u64 = 0x61ca075fb9860e84;
895}
896
897mod internal {
898    use super::*;
899    unsafe impl fidl::encoding::TypeMarker for BuiltinBootResolver {
900        type Owned = Self;
901
902        #[inline(always)]
903        fn inline_align(_context: fidl::encoding::Context) -> usize {
904            std::mem::align_of::<u8>()
905        }
906
907        #[inline(always)]
908        fn inline_size(_context: fidl::encoding::Context) -> usize {
909            std::mem::size_of::<u8>()
910        }
911
912        #[inline(always)]
913        fn encode_is_copy() -> bool {
914            true
915        }
916
917        #[inline(always)]
918        fn decode_is_copy() -> bool {
919            false
920        }
921    }
922
923    impl fidl::encoding::ValueTypeMarker for BuiltinBootResolver {
924        type Borrowed<'a> = Self;
925        #[inline(always)]
926        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
927            *value
928        }
929    }
930
931    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
932        for BuiltinBootResolver
933    {
934        #[inline]
935        unsafe fn encode(
936            self,
937            encoder: &mut fidl::encoding::Encoder<'_, D>,
938            offset: usize,
939            _depth: fidl::encoding::Depth,
940        ) -> fidl::Result<()> {
941            encoder.debug_check_bounds::<Self>(offset);
942            encoder.write_num(self.into_primitive(), offset);
943            Ok(())
944        }
945    }
946
947    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuiltinBootResolver {
948        #[inline(always)]
949        fn new_empty() -> Self {
950            Self::None
951        }
952
953        #[inline]
954        unsafe fn decode(
955            &mut self,
956            decoder: &mut fidl::encoding::Decoder<'_, D>,
957            offset: usize,
958            _depth: fidl::encoding::Depth,
959        ) -> fidl::Result<()> {
960            decoder.debug_check_bounds::<Self>(offset);
961            let prim = decoder.read_num::<u8>(offset);
962
963            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
964            Ok(())
965        }
966    }
967    unsafe impl fidl::encoding::TypeMarker for LogDestination {
968        type Owned = Self;
969
970        #[inline(always)]
971        fn inline_align(_context: fidl::encoding::Context) -> usize {
972            std::mem::align_of::<u8>()
973        }
974
975        #[inline(always)]
976        fn inline_size(_context: fidl::encoding::Context) -> usize {
977            std::mem::size_of::<u8>()
978        }
979
980        #[inline(always)]
981        fn encode_is_copy() -> bool {
982            true
983        }
984
985        #[inline(always)]
986        fn decode_is_copy() -> bool {
987            false
988        }
989    }
990
991    impl fidl::encoding::ValueTypeMarker for LogDestination {
992        type Borrowed<'a> = Self;
993        #[inline(always)]
994        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
995            *value
996        }
997    }
998
999    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogDestination {
1000        #[inline]
1001        unsafe fn encode(
1002            self,
1003            encoder: &mut fidl::encoding::Encoder<'_, D>,
1004            offset: usize,
1005            _depth: fidl::encoding::Depth,
1006        ) -> fidl::Result<()> {
1007            encoder.debug_check_bounds::<Self>(offset);
1008            encoder.write_num(self.into_primitive(), offset);
1009            Ok(())
1010        }
1011    }
1012
1013    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogDestination {
1014        #[inline(always)]
1015        fn new_empty() -> Self {
1016            Self::Syslog
1017        }
1018
1019        #[inline]
1020        unsafe fn decode(
1021            &mut self,
1022            decoder: &mut fidl::encoding::Decoder<'_, D>,
1023            offset: usize,
1024            _depth: fidl::encoding::Depth,
1025        ) -> fidl::Result<()> {
1026            decoder.debug_check_bounds::<Self>(offset);
1027            let prim = decoder.read_num::<u8>(offset);
1028
1029            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1030            Ok(())
1031        }
1032    }
1033    unsafe impl fidl::encoding::TypeMarker for RealmBuilderResolverAndRunner {
1034        type Owned = Self;
1035
1036        #[inline(always)]
1037        fn inline_align(_context: fidl::encoding::Context) -> usize {
1038            std::mem::align_of::<u8>()
1039        }
1040
1041        #[inline(always)]
1042        fn inline_size(_context: fidl::encoding::Context) -> usize {
1043            std::mem::size_of::<u8>()
1044        }
1045
1046        #[inline(always)]
1047        fn encode_is_copy() -> bool {
1048            true
1049        }
1050
1051        #[inline(always)]
1052        fn decode_is_copy() -> bool {
1053            false
1054        }
1055    }
1056
1057    impl fidl::encoding::ValueTypeMarker for RealmBuilderResolverAndRunner {
1058        type Borrowed<'a> = Self;
1059        #[inline(always)]
1060        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1061            *value
1062        }
1063    }
1064
1065    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1066        for RealmBuilderResolverAndRunner
1067    {
1068        #[inline]
1069        unsafe fn encode(
1070            self,
1071            encoder: &mut fidl::encoding::Encoder<'_, D>,
1072            offset: usize,
1073            _depth: fidl::encoding::Depth,
1074        ) -> fidl::Result<()> {
1075            encoder.debug_check_bounds::<Self>(offset);
1076            encoder.write_num(self.into_primitive(), offset);
1077            Ok(())
1078        }
1079    }
1080
1081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1082        for RealmBuilderResolverAndRunner
1083    {
1084        #[inline(always)]
1085        fn new_empty() -> Self {
1086            Self::None
1087        }
1088
1089        #[inline]
1090        unsafe fn decode(
1091            &mut self,
1092            decoder: &mut fidl::encoding::Decoder<'_, D>,
1093            offset: usize,
1094            _depth: fidl::encoding::Depth,
1095        ) -> fidl::Result<()> {
1096            decoder.debug_check_bounds::<Self>(offset);
1097            let prim = decoder.read_num::<u8>(offset);
1098
1099            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1100            Ok(())
1101        }
1102    }
1103    unsafe impl fidl::encoding::TypeMarker for TraceProvider {
1104        type Owned = Self;
1105
1106        #[inline(always)]
1107        fn inline_align(_context: fidl::encoding::Context) -> usize {
1108            std::mem::align_of::<u8>()
1109        }
1110
1111        #[inline(always)]
1112        fn inline_size(_context: fidl::encoding::Context) -> usize {
1113            std::mem::size_of::<u8>()
1114        }
1115
1116        #[inline(always)]
1117        fn encode_is_copy() -> bool {
1118            true
1119        }
1120
1121        #[inline(always)]
1122        fn decode_is_copy() -> bool {
1123            false
1124        }
1125    }
1126
1127    impl fidl::encoding::ValueTypeMarker for TraceProvider {
1128        type Borrowed<'a> = Self;
1129        #[inline(always)]
1130        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1131            *value
1132        }
1133    }
1134
1135    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TraceProvider {
1136        #[inline]
1137        unsafe fn encode(
1138            self,
1139            encoder: &mut fidl::encoding::Encoder<'_, D>,
1140            offset: usize,
1141            _depth: fidl::encoding::Depth,
1142        ) -> fidl::Result<()> {
1143            encoder.debug_check_bounds::<Self>(offset);
1144            encoder.write_num(self.into_primitive(), offset);
1145            Ok(())
1146        }
1147    }
1148
1149    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceProvider {
1150        #[inline(always)]
1151        fn new_empty() -> Self {
1152            Self::Namespace
1153        }
1154
1155        #[inline]
1156        unsafe fn decode(
1157            &mut self,
1158            decoder: &mut fidl::encoding::Decoder<'_, D>,
1159            offset: usize,
1160            _depth: fidl::encoding::Depth,
1161        ) -> fidl::Result<()> {
1162            decoder.debug_check_bounds::<Self>(offset);
1163            let prim = decoder.read_num::<u8>(offset);
1164
1165            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1166            Ok(())
1167        }
1168    }
1169    unsafe impl fidl::encoding::TypeMarker for VmexSource {
1170        type Owned = Self;
1171
1172        #[inline(always)]
1173        fn inline_align(_context: fidl::encoding::Context) -> usize {
1174            std::mem::align_of::<u8>()
1175        }
1176
1177        #[inline(always)]
1178        fn inline_size(_context: fidl::encoding::Context) -> usize {
1179            std::mem::size_of::<u8>()
1180        }
1181
1182        #[inline(always)]
1183        fn encode_is_copy() -> bool {
1184            true
1185        }
1186
1187        #[inline(always)]
1188        fn decode_is_copy() -> bool {
1189            false
1190        }
1191    }
1192
1193    impl fidl::encoding::ValueTypeMarker for VmexSource {
1194        type Borrowed<'a> = Self;
1195        #[inline(always)]
1196        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1197            *value
1198        }
1199    }
1200
1201    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for VmexSource {
1202        #[inline]
1203        unsafe fn encode(
1204            self,
1205            encoder: &mut fidl::encoding::Encoder<'_, D>,
1206            offset: usize,
1207            _depth: fidl::encoding::Depth,
1208        ) -> fidl::Result<()> {
1209            encoder.debug_check_bounds::<Self>(offset);
1210            encoder.write_num(self.into_primitive(), offset);
1211            Ok(())
1212        }
1213    }
1214
1215    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmexSource {
1216        #[inline(always)]
1217        fn new_empty() -> Self {
1218            Self::SystemResource
1219        }
1220
1221        #[inline]
1222        unsafe fn decode(
1223            &mut self,
1224            decoder: &mut fidl::encoding::Decoder<'_, D>,
1225            offset: usize,
1226            _depth: fidl::encoding::Depth,
1227        ) -> fidl::Result<()> {
1228            decoder.debug_check_bounds::<Self>(offset);
1229            let prim = decoder.read_num::<u8>(offset);
1230
1231            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1232            Ok(())
1233        }
1234    }
1235
1236    impl AbiRevisionPolicy {
1237        #[inline(always)]
1238        fn max_ordinal_present(&self) -> u64 {
1239            if let Some(_) = self.allowlist {
1240                return 1;
1241            }
1242            0
1243        }
1244    }
1245
1246    impl fidl::encoding::ValueTypeMarker for AbiRevisionPolicy {
1247        type Borrowed<'a> = &'a Self;
1248        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1249            value
1250        }
1251    }
1252
1253    unsafe impl fidl::encoding::TypeMarker for AbiRevisionPolicy {
1254        type Owned = Self;
1255
1256        #[inline(always)]
1257        fn inline_align(_context: fidl::encoding::Context) -> usize {
1258            8
1259        }
1260
1261        #[inline(always)]
1262        fn inline_size(_context: fidl::encoding::Context) -> usize {
1263            16
1264        }
1265    }
1266
1267    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AbiRevisionPolicy, D>
1268        for &AbiRevisionPolicy
1269    {
1270        unsafe fn encode(
1271            self,
1272            encoder: &mut fidl::encoding::Encoder<'_, D>,
1273            offset: usize,
1274            mut depth: fidl::encoding::Depth,
1275        ) -> fidl::Result<()> {
1276            encoder.debug_check_bounds::<AbiRevisionPolicy>(offset);
1277            // Vector header
1278            let max_ordinal: u64 = self.max_ordinal_present();
1279            encoder.write_num(max_ordinal, offset);
1280            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1281            // Calling encoder.out_of_line_offset(0) is not allowed.
1282            if max_ordinal == 0 {
1283                return Ok(());
1284            }
1285            depth.increment()?;
1286            let envelope_size = 8;
1287            let bytes_len = max_ordinal as usize * envelope_size;
1288            #[allow(unused_variables)]
1289            let offset = encoder.out_of_line_offset(bytes_len);
1290            let mut _prev_end_offset: usize = 0;
1291            if 1 > max_ordinal {
1292                return Ok(());
1293            }
1294
1295            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1296            // are envelope_size bytes.
1297            let cur_offset: usize = (1 - 1) * envelope_size;
1298
1299            // Zero reserved fields.
1300            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1301
1302            // Safety:
1303            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1304            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1305            //   envelope_size bytes, there is always sufficient room.
1306            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1307            self.allowlist.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1308            encoder, offset + cur_offset, depth
1309        )?;
1310
1311            _prev_end_offset = cur_offset + envelope_size;
1312
1313            Ok(())
1314        }
1315    }
1316
1317    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AbiRevisionPolicy {
1318        #[inline(always)]
1319        fn new_empty() -> Self {
1320            Self::default()
1321        }
1322
1323        unsafe fn decode(
1324            &mut self,
1325            decoder: &mut fidl::encoding::Decoder<'_, D>,
1326            offset: usize,
1327            mut depth: fidl::encoding::Depth,
1328        ) -> fidl::Result<()> {
1329            decoder.debug_check_bounds::<Self>(offset);
1330            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1331                None => return Err(fidl::Error::NotNullable),
1332                Some(len) => len,
1333            };
1334            // Calling decoder.out_of_line_offset(0) is not allowed.
1335            if len == 0 {
1336                return Ok(());
1337            };
1338            depth.increment()?;
1339            let envelope_size = 8;
1340            let bytes_len = len * envelope_size;
1341            let offset = decoder.out_of_line_offset(bytes_len)?;
1342            // Decode the envelope for each type.
1343            let mut _next_ordinal_to_read = 0;
1344            let mut next_offset = offset;
1345            let end_offset = offset + bytes_len;
1346            _next_ordinal_to_read += 1;
1347            if next_offset >= end_offset {
1348                return Ok(());
1349            }
1350
1351            // Decode unknown envelopes for gaps in ordinals.
1352            while _next_ordinal_to_read < 1 {
1353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1354                _next_ordinal_to_read += 1;
1355                next_offset += envelope_size;
1356            }
1357
1358            let next_out_of_line = decoder.next_out_of_line();
1359            let handles_before = decoder.remaining_handles();
1360            if let Some((inlined, num_bytes, num_handles)) =
1361                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1362            {
1363                let member_inline_size = <fidl::encoding::Vector<
1364                    fidl::encoding::BoundedString<4096>,
1365                    128,
1366                > as fidl::encoding::TypeMarker>::inline_size(
1367                    decoder.context
1368                );
1369                if inlined != (member_inline_size <= 4) {
1370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1371                }
1372                let inner_offset;
1373                let mut inner_depth = depth.clone();
1374                if inlined {
1375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1376                    inner_offset = next_offset;
1377                } else {
1378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1379                    inner_depth.increment()?;
1380                }
1381                let val_ref = self.allowlist.get_or_insert_with(|| {
1382                    fidl::new_empty!(
1383                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1384                        D
1385                    )
1386                });
1387                fidl::decode!(
1388                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1389                    D,
1390                    val_ref,
1391                    decoder,
1392                    inner_offset,
1393                    inner_depth
1394                )?;
1395                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1396                {
1397                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1398                }
1399                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1400                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1401                }
1402            }
1403
1404            next_offset += envelope_size;
1405
1406            // Decode the remaining unknown envelopes.
1407            while next_offset < end_offset {
1408                _next_ordinal_to_read += 1;
1409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1410                next_offset += envelope_size;
1411            }
1412
1413            Ok(())
1414        }
1415    }
1416
1417    impl AllowlistedDirectory {
1418        #[inline(always)]
1419        fn max_ordinal_present(&self) -> u64 {
1420            0
1421        }
1422    }
1423
1424    impl fidl::encoding::ValueTypeMarker for AllowlistedDirectory {
1425        type Borrowed<'a> = &'a Self;
1426        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1427            value
1428        }
1429    }
1430
1431    unsafe impl fidl::encoding::TypeMarker for AllowlistedDirectory {
1432        type Owned = Self;
1433
1434        #[inline(always)]
1435        fn inline_align(_context: fidl::encoding::Context) -> usize {
1436            8
1437        }
1438
1439        #[inline(always)]
1440        fn inline_size(_context: fidl::encoding::Context) -> usize {
1441            16
1442        }
1443    }
1444
1445    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedDirectory, D>
1446        for &AllowlistedDirectory
1447    {
1448        unsafe fn encode(
1449            self,
1450            encoder: &mut fidl::encoding::Encoder<'_, D>,
1451            offset: usize,
1452            mut depth: fidl::encoding::Depth,
1453        ) -> fidl::Result<()> {
1454            encoder.debug_check_bounds::<AllowlistedDirectory>(offset);
1455            // Vector header
1456            let max_ordinal: u64 = self.max_ordinal_present();
1457            encoder.write_num(max_ordinal, offset);
1458            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1459            // Calling encoder.out_of_line_offset(0) is not allowed.
1460            if max_ordinal == 0 {
1461                return Ok(());
1462            }
1463            depth.increment()?;
1464            let envelope_size = 8;
1465            let bytes_len = max_ordinal as usize * envelope_size;
1466            #[allow(unused_variables)]
1467            let offset = encoder.out_of_line_offset(bytes_len);
1468            let mut _prev_end_offset: usize = 0;
1469
1470            Ok(())
1471        }
1472    }
1473
1474    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedDirectory {
1475        #[inline(always)]
1476        fn new_empty() -> Self {
1477            Self::default()
1478        }
1479
1480        unsafe fn decode(
1481            &mut self,
1482            decoder: &mut fidl::encoding::Decoder<'_, D>,
1483            offset: usize,
1484            mut depth: fidl::encoding::Depth,
1485        ) -> fidl::Result<()> {
1486            decoder.debug_check_bounds::<Self>(offset);
1487            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1488                None => return Err(fidl::Error::NotNullable),
1489                Some(len) => len,
1490            };
1491            // Calling decoder.out_of_line_offset(0) is not allowed.
1492            if len == 0 {
1493                return Ok(());
1494            };
1495            depth.increment()?;
1496            let envelope_size = 8;
1497            let bytes_len = len * envelope_size;
1498            let offset = decoder.out_of_line_offset(bytes_len)?;
1499            // Decode the envelope for each type.
1500            let mut _next_ordinal_to_read = 0;
1501            let mut next_offset = offset;
1502            let end_offset = offset + bytes_len;
1503
1504            // Decode the remaining unknown envelopes.
1505            while next_offset < end_offset {
1506                _next_ordinal_to_read += 1;
1507                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1508                next_offset += envelope_size;
1509            }
1510
1511            Ok(())
1512        }
1513    }
1514
1515    impl AllowlistedProtocol {
1516        #[inline(always)]
1517        fn max_ordinal_present(&self) -> u64 {
1518            0
1519        }
1520    }
1521
1522    impl fidl::encoding::ValueTypeMarker for AllowlistedProtocol {
1523        type Borrowed<'a> = &'a Self;
1524        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1525            value
1526        }
1527    }
1528
1529    unsafe impl fidl::encoding::TypeMarker for AllowlistedProtocol {
1530        type Owned = Self;
1531
1532        #[inline(always)]
1533        fn inline_align(_context: fidl::encoding::Context) -> usize {
1534            8
1535        }
1536
1537        #[inline(always)]
1538        fn inline_size(_context: fidl::encoding::Context) -> usize {
1539            16
1540        }
1541    }
1542
1543    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedProtocol, D>
1544        for &AllowlistedProtocol
1545    {
1546        unsafe fn encode(
1547            self,
1548            encoder: &mut fidl::encoding::Encoder<'_, D>,
1549            offset: usize,
1550            mut depth: fidl::encoding::Depth,
1551        ) -> fidl::Result<()> {
1552            encoder.debug_check_bounds::<AllowlistedProtocol>(offset);
1553            // Vector header
1554            let max_ordinal: u64 = self.max_ordinal_present();
1555            encoder.write_num(max_ordinal, offset);
1556            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1557            // Calling encoder.out_of_line_offset(0) is not allowed.
1558            if max_ordinal == 0 {
1559                return Ok(());
1560            }
1561            depth.increment()?;
1562            let envelope_size = 8;
1563            let bytes_len = max_ordinal as usize * envelope_size;
1564            #[allow(unused_variables)]
1565            let offset = encoder.out_of_line_offset(bytes_len);
1566            let mut _prev_end_offset: usize = 0;
1567
1568            Ok(())
1569        }
1570    }
1571
1572    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedProtocol {
1573        #[inline(always)]
1574        fn new_empty() -> Self {
1575            Self::default()
1576        }
1577
1578        unsafe fn decode(
1579            &mut self,
1580            decoder: &mut fidl::encoding::Decoder<'_, D>,
1581            offset: usize,
1582            mut depth: fidl::encoding::Depth,
1583        ) -> fidl::Result<()> {
1584            decoder.debug_check_bounds::<Self>(offset);
1585            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1586                None => return Err(fidl::Error::NotNullable),
1587                Some(len) => len,
1588            };
1589            // Calling decoder.out_of_line_offset(0) is not allowed.
1590            if len == 0 {
1591                return Ok(());
1592            };
1593            depth.increment()?;
1594            let envelope_size = 8;
1595            let bytes_len = len * envelope_size;
1596            let offset = decoder.out_of_line_offset(bytes_len)?;
1597            // Decode the envelope for each type.
1598            let mut _next_ordinal_to_read = 0;
1599            let mut next_offset = offset;
1600            let end_offset = offset + bytes_len;
1601
1602            // Decode the remaining unknown envelopes.
1603            while next_offset < end_offset {
1604                _next_ordinal_to_read += 1;
1605                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1606                next_offset += envelope_size;
1607            }
1608
1609            Ok(())
1610        }
1611    }
1612
1613    impl AllowlistedResolver {
1614        #[inline(always)]
1615        fn max_ordinal_present(&self) -> u64 {
1616            0
1617        }
1618    }
1619
1620    impl fidl::encoding::ValueTypeMarker for AllowlistedResolver {
1621        type Borrowed<'a> = &'a Self;
1622        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1623            value
1624        }
1625    }
1626
1627    unsafe impl fidl::encoding::TypeMarker for AllowlistedResolver {
1628        type Owned = Self;
1629
1630        #[inline(always)]
1631        fn inline_align(_context: fidl::encoding::Context) -> usize {
1632            8
1633        }
1634
1635        #[inline(always)]
1636        fn inline_size(_context: fidl::encoding::Context) -> usize {
1637            16
1638        }
1639    }
1640
1641    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedResolver, D>
1642        for &AllowlistedResolver
1643    {
1644        unsafe fn encode(
1645            self,
1646            encoder: &mut fidl::encoding::Encoder<'_, D>,
1647            offset: usize,
1648            mut depth: fidl::encoding::Depth,
1649        ) -> fidl::Result<()> {
1650            encoder.debug_check_bounds::<AllowlistedResolver>(offset);
1651            // Vector header
1652            let max_ordinal: u64 = self.max_ordinal_present();
1653            encoder.write_num(max_ordinal, offset);
1654            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1655            // Calling encoder.out_of_line_offset(0) is not allowed.
1656            if max_ordinal == 0 {
1657                return Ok(());
1658            }
1659            depth.increment()?;
1660            let envelope_size = 8;
1661            let bytes_len = max_ordinal as usize * envelope_size;
1662            #[allow(unused_variables)]
1663            let offset = encoder.out_of_line_offset(bytes_len);
1664            let mut _prev_end_offset: usize = 0;
1665
1666            Ok(())
1667        }
1668    }
1669
1670    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedResolver {
1671        #[inline(always)]
1672        fn new_empty() -> Self {
1673            Self::default()
1674        }
1675
1676        unsafe fn decode(
1677            &mut self,
1678            decoder: &mut fidl::encoding::Decoder<'_, D>,
1679            offset: usize,
1680            mut depth: fidl::encoding::Depth,
1681        ) -> fidl::Result<()> {
1682            decoder.debug_check_bounds::<Self>(offset);
1683            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1684                None => return Err(fidl::Error::NotNullable),
1685                Some(len) => len,
1686            };
1687            // Calling decoder.out_of_line_offset(0) is not allowed.
1688            if len == 0 {
1689                return Ok(());
1690            };
1691            depth.increment()?;
1692            let envelope_size = 8;
1693            let bytes_len = len * envelope_size;
1694            let offset = decoder.out_of_line_offset(bytes_len)?;
1695            // Decode the envelope for each type.
1696            let mut _next_ordinal_to_read = 0;
1697            let mut next_offset = offset;
1698            let end_offset = offset + bytes_len;
1699
1700            // Decode the remaining unknown envelopes.
1701            while next_offset < end_offset {
1702                _next_ordinal_to_read += 1;
1703                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1704                next_offset += envelope_size;
1705            }
1706
1707            Ok(())
1708        }
1709    }
1710
1711    impl AllowlistedRunner {
1712        #[inline(always)]
1713        fn max_ordinal_present(&self) -> u64 {
1714            0
1715        }
1716    }
1717
1718    impl fidl::encoding::ValueTypeMarker for AllowlistedRunner {
1719        type Borrowed<'a> = &'a Self;
1720        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1721            value
1722        }
1723    }
1724
1725    unsafe impl fidl::encoding::TypeMarker for AllowlistedRunner {
1726        type Owned = Self;
1727
1728        #[inline(always)]
1729        fn inline_align(_context: fidl::encoding::Context) -> usize {
1730            8
1731        }
1732
1733        #[inline(always)]
1734        fn inline_size(_context: fidl::encoding::Context) -> usize {
1735            16
1736        }
1737    }
1738
1739    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedRunner, D>
1740        for &AllowlistedRunner
1741    {
1742        unsafe fn encode(
1743            self,
1744            encoder: &mut fidl::encoding::Encoder<'_, D>,
1745            offset: usize,
1746            mut depth: fidl::encoding::Depth,
1747        ) -> fidl::Result<()> {
1748            encoder.debug_check_bounds::<AllowlistedRunner>(offset);
1749            // Vector header
1750            let max_ordinal: u64 = self.max_ordinal_present();
1751            encoder.write_num(max_ordinal, offset);
1752            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1753            // Calling encoder.out_of_line_offset(0) is not allowed.
1754            if max_ordinal == 0 {
1755                return Ok(());
1756            }
1757            depth.increment()?;
1758            let envelope_size = 8;
1759            let bytes_len = max_ordinal as usize * envelope_size;
1760            #[allow(unused_variables)]
1761            let offset = encoder.out_of_line_offset(bytes_len);
1762            let mut _prev_end_offset: usize = 0;
1763
1764            Ok(())
1765        }
1766    }
1767
1768    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedRunner {
1769        #[inline(always)]
1770        fn new_empty() -> Self {
1771            Self::default()
1772        }
1773
1774        unsafe fn decode(
1775            &mut self,
1776            decoder: &mut fidl::encoding::Decoder<'_, D>,
1777            offset: usize,
1778            mut depth: fidl::encoding::Depth,
1779        ) -> fidl::Result<()> {
1780            decoder.debug_check_bounds::<Self>(offset);
1781            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1782                None => return Err(fidl::Error::NotNullable),
1783                Some(len) => len,
1784            };
1785            // Calling decoder.out_of_line_offset(0) is not allowed.
1786            if len == 0 {
1787                return Ok(());
1788            };
1789            depth.increment()?;
1790            let envelope_size = 8;
1791            let bytes_len = len * envelope_size;
1792            let offset = decoder.out_of_line_offset(bytes_len)?;
1793            // Decode the envelope for each type.
1794            let mut _next_ordinal_to_read = 0;
1795            let mut next_offset = offset;
1796            let end_offset = offset + bytes_len;
1797
1798            // Decode the remaining unknown envelopes.
1799            while next_offset < end_offset {
1800                _next_ordinal_to_read += 1;
1801                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1802                next_offset += envelope_size;
1803            }
1804
1805            Ok(())
1806        }
1807    }
1808
1809    impl AllowlistedService {
1810        #[inline(always)]
1811        fn max_ordinal_present(&self) -> u64 {
1812            0
1813        }
1814    }
1815
1816    impl fidl::encoding::ValueTypeMarker for AllowlistedService {
1817        type Borrowed<'a> = &'a Self;
1818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1819            value
1820        }
1821    }
1822
1823    unsafe impl fidl::encoding::TypeMarker for AllowlistedService {
1824        type Owned = Self;
1825
1826        #[inline(always)]
1827        fn inline_align(_context: fidl::encoding::Context) -> usize {
1828            8
1829        }
1830
1831        #[inline(always)]
1832        fn inline_size(_context: fidl::encoding::Context) -> usize {
1833            16
1834        }
1835    }
1836
1837    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedService, D>
1838        for &AllowlistedService
1839    {
1840        unsafe fn encode(
1841            self,
1842            encoder: &mut fidl::encoding::Encoder<'_, D>,
1843            offset: usize,
1844            mut depth: fidl::encoding::Depth,
1845        ) -> fidl::Result<()> {
1846            encoder.debug_check_bounds::<AllowlistedService>(offset);
1847            // Vector header
1848            let max_ordinal: u64 = self.max_ordinal_present();
1849            encoder.write_num(max_ordinal, offset);
1850            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1851            // Calling encoder.out_of_line_offset(0) is not allowed.
1852            if max_ordinal == 0 {
1853                return Ok(());
1854            }
1855            depth.increment()?;
1856            let envelope_size = 8;
1857            let bytes_len = max_ordinal as usize * envelope_size;
1858            #[allow(unused_variables)]
1859            let offset = encoder.out_of_line_offset(bytes_len);
1860            let mut _prev_end_offset: usize = 0;
1861
1862            Ok(())
1863        }
1864    }
1865
1866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedService {
1867        #[inline(always)]
1868        fn new_empty() -> Self {
1869            Self::default()
1870        }
1871
1872        unsafe fn decode(
1873            &mut self,
1874            decoder: &mut fidl::encoding::Decoder<'_, D>,
1875            offset: usize,
1876            mut depth: fidl::encoding::Depth,
1877        ) -> fidl::Result<()> {
1878            decoder.debug_check_bounds::<Self>(offset);
1879            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1880                None => return Err(fidl::Error::NotNullable),
1881                Some(len) => len,
1882            };
1883            // Calling decoder.out_of_line_offset(0) is not allowed.
1884            if len == 0 {
1885                return Ok(());
1886            };
1887            depth.increment()?;
1888            let envelope_size = 8;
1889            let bytes_len = len * envelope_size;
1890            let offset = decoder.out_of_line_offset(bytes_len)?;
1891            // Decode the envelope for each type.
1892            let mut _next_ordinal_to_read = 0;
1893            let mut next_offset = offset;
1894            let end_offset = offset + bytes_len;
1895
1896            // Decode the remaining unknown envelopes.
1897            while next_offset < end_offset {
1898                _next_ordinal_to_read += 1;
1899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1900                next_offset += envelope_size;
1901            }
1902
1903            Ok(())
1904        }
1905    }
1906
1907    impl AllowlistedStorage {
1908        #[inline(always)]
1909        fn max_ordinal_present(&self) -> u64 {
1910            0
1911        }
1912    }
1913
1914    impl fidl::encoding::ValueTypeMarker for AllowlistedStorage {
1915        type Borrowed<'a> = &'a Self;
1916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1917            value
1918        }
1919    }
1920
1921    unsafe impl fidl::encoding::TypeMarker for AllowlistedStorage {
1922        type Owned = Self;
1923
1924        #[inline(always)]
1925        fn inline_align(_context: fidl::encoding::Context) -> usize {
1926            8
1927        }
1928
1929        #[inline(always)]
1930        fn inline_size(_context: fidl::encoding::Context) -> usize {
1931            16
1932        }
1933    }
1934
1935    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedStorage, D>
1936        for &AllowlistedStorage
1937    {
1938        unsafe fn encode(
1939            self,
1940            encoder: &mut fidl::encoding::Encoder<'_, D>,
1941            offset: usize,
1942            mut depth: fidl::encoding::Depth,
1943        ) -> fidl::Result<()> {
1944            encoder.debug_check_bounds::<AllowlistedStorage>(offset);
1945            // Vector header
1946            let max_ordinal: u64 = self.max_ordinal_present();
1947            encoder.write_num(max_ordinal, offset);
1948            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1949            // Calling encoder.out_of_line_offset(0) is not allowed.
1950            if max_ordinal == 0 {
1951                return Ok(());
1952            }
1953            depth.increment()?;
1954            let envelope_size = 8;
1955            let bytes_len = max_ordinal as usize * envelope_size;
1956            #[allow(unused_variables)]
1957            let offset = encoder.out_of_line_offset(bytes_len);
1958            let mut _prev_end_offset: usize = 0;
1959
1960            Ok(())
1961        }
1962    }
1963
1964    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedStorage {
1965        #[inline(always)]
1966        fn new_empty() -> Self {
1967            Self::default()
1968        }
1969
1970        unsafe fn decode(
1971            &mut self,
1972            decoder: &mut fidl::encoding::Decoder<'_, D>,
1973            offset: usize,
1974            mut depth: fidl::encoding::Depth,
1975        ) -> fidl::Result<()> {
1976            decoder.debug_check_bounds::<Self>(offset);
1977            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1978                None => return Err(fidl::Error::NotNullable),
1979                Some(len) => len,
1980            };
1981            // Calling decoder.out_of_line_offset(0) is not allowed.
1982            if len == 0 {
1983                return Ok(());
1984            };
1985            depth.increment()?;
1986            let envelope_size = 8;
1987            let bytes_len = len * envelope_size;
1988            let offset = decoder.out_of_line_offset(bytes_len)?;
1989            // Decode the envelope for each type.
1990            let mut _next_ordinal_to_read = 0;
1991            let mut next_offset = offset;
1992            let end_offset = offset + bytes_len;
1993
1994            // Decode the remaining unknown envelopes.
1995            while next_offset < end_offset {
1996                _next_ordinal_to_read += 1;
1997                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1998                next_offset += envelope_size;
1999            }
2000
2001            Ok(())
2002        }
2003    }
2004
2005    impl AnonymizedAggregate {
2006        #[inline(always)]
2007        fn max_ordinal_present(&self) -> u64 {
2008            if let Some(_) = self.instances {
2009                return 5;
2010            }
2011            if let Some(_) = self.sources {
2012                return 4;
2013            }
2014            if let Some(_) = self.members {
2015                return 3;
2016            }
2017            if let Some(_) = self.moniker {
2018                return 2;
2019            }
2020            if let Some(_) = self.capability {
2021                return 1;
2022            }
2023            0
2024        }
2025    }
2026
2027    impl fidl::encoding::ValueTypeMarker for AnonymizedAggregate {
2028        type Borrowed<'a> = &'a Self;
2029        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2030            value
2031        }
2032    }
2033
2034    unsafe impl fidl::encoding::TypeMarker for AnonymizedAggregate {
2035        type Owned = Self;
2036
2037        #[inline(always)]
2038        fn inline_align(_context: fidl::encoding::Context) -> usize {
2039            8
2040        }
2041
2042        #[inline(always)]
2043        fn inline_size(_context: fidl::encoding::Context) -> usize {
2044            16
2045        }
2046    }
2047
2048    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AnonymizedAggregate, D>
2049        for &AnonymizedAggregate
2050    {
2051        unsafe fn encode(
2052            self,
2053            encoder: &mut fidl::encoding::Encoder<'_, D>,
2054            offset: usize,
2055            mut depth: fidl::encoding::Depth,
2056        ) -> fidl::Result<()> {
2057            encoder.debug_check_bounds::<AnonymizedAggregate>(offset);
2058            // Vector header
2059            let max_ordinal: u64 = self.max_ordinal_present();
2060            encoder.write_num(max_ordinal, offset);
2061            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2062            // Calling encoder.out_of_line_offset(0) is not allowed.
2063            if max_ordinal == 0 {
2064                return Ok(());
2065            }
2066            depth.increment()?;
2067            let envelope_size = 8;
2068            let bytes_len = max_ordinal as usize * envelope_size;
2069            #[allow(unused_variables)]
2070            let offset = encoder.out_of_line_offset(bytes_len);
2071            let mut _prev_end_offset: usize = 0;
2072            if 1 > max_ordinal {
2073                return Ok(());
2074            }
2075
2076            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2077            // are envelope_size bytes.
2078            let cur_offset: usize = (1 - 1) * envelope_size;
2079
2080            // Zero reserved fields.
2081            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2082
2083            // Safety:
2084            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2085            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2086            //   envelope_size bytes, there is always sufficient room.
2087            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
2088                self.capability
2089                    .as_ref()
2090                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
2091                encoder,
2092                offset + cur_offset,
2093                depth,
2094            )?;
2095
2096            _prev_end_offset = cur_offset + envelope_size;
2097            if 2 > max_ordinal {
2098                return Ok(());
2099            }
2100
2101            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2102            // are envelope_size bytes.
2103            let cur_offset: usize = (2 - 1) * envelope_size;
2104
2105            // Zero reserved fields.
2106            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2107
2108            // Safety:
2109            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2110            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2111            //   envelope_size bytes, there is always sufficient room.
2112            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2113            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2114            encoder, offset + cur_offset, depth
2115        )?;
2116
2117            _prev_end_offset = cur_offset + envelope_size;
2118            if 3 > max_ordinal {
2119                return Ok(());
2120            }
2121
2122            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2123            // are envelope_size bytes.
2124            let cur_offset: usize = (3 - 1) * envelope_size;
2125
2126            // Zero reserved fields.
2127            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2128
2129            // Safety:
2130            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2131            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2132            //   envelope_size bytes, there is always sufficient room.
2133            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AggregateMember>, D>(
2134            self.members.as_ref().map(<fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::ValueTypeMarker>::borrow),
2135            encoder, offset + cur_offset, depth
2136        )?;
2137
2138            _prev_end_offset = cur_offset + envelope_size;
2139            if 4 > max_ordinal {
2140                return Ok(());
2141            }
2142
2143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2144            // are envelope_size bytes.
2145            let cur_offset: usize = (4 - 1) * envelope_size;
2146
2147            // Zero reserved fields.
2148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2149
2150            // Safety:
2151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2153            //   envelope_size bytes, there is always sufficient room.
2154            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
2155                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
2156                encoder,
2157                offset + cur_offset,
2158                depth,
2159            )?;
2160
2161            _prev_end_offset = cur_offset + envelope_size;
2162            if 5 > max_ordinal {
2163                return Ok(());
2164            }
2165
2166            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2167            // are envelope_size bytes.
2168            let cur_offset: usize = (5 - 1) * envelope_size;
2169
2170            // Zero reserved fields.
2171            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2172
2173            // Safety:
2174            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2175            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2176            //   envelope_size bytes, there is always sufficient room.
2177            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>, D>(
2178            self.instances.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance> as fidl::encoding::ValueTypeMarker>::borrow),
2179            encoder, offset + cur_offset, depth
2180        )?;
2181
2182            _prev_end_offset = cur_offset + envelope_size;
2183
2184            Ok(())
2185        }
2186    }
2187
2188    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AnonymizedAggregate {
2189        #[inline(always)]
2190        fn new_empty() -> Self {
2191            Self::default()
2192        }
2193
2194        unsafe fn decode(
2195            &mut self,
2196            decoder: &mut fidl::encoding::Decoder<'_, D>,
2197            offset: usize,
2198            mut depth: fidl::encoding::Depth,
2199        ) -> fidl::Result<()> {
2200            decoder.debug_check_bounds::<Self>(offset);
2201            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2202                None => return Err(fidl::Error::NotNullable),
2203                Some(len) => len,
2204            };
2205            // Calling decoder.out_of_line_offset(0) is not allowed.
2206            if len == 0 {
2207                return Ok(());
2208            };
2209            depth.increment()?;
2210            let envelope_size = 8;
2211            let bytes_len = len * envelope_size;
2212            let offset = decoder.out_of_line_offset(bytes_len)?;
2213            // Decode the envelope for each type.
2214            let mut _next_ordinal_to_read = 0;
2215            let mut next_offset = offset;
2216            let end_offset = offset + bytes_len;
2217            _next_ordinal_to_read += 1;
2218            if next_offset >= end_offset {
2219                return Ok(());
2220            }
2221
2222            // Decode unknown envelopes for gaps in ordinals.
2223            while _next_ordinal_to_read < 1 {
2224                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2225                _next_ordinal_to_read += 1;
2226                next_offset += envelope_size;
2227            }
2228
2229            let next_out_of_line = decoder.next_out_of_line();
2230            let handles_before = decoder.remaining_handles();
2231            if let Some((inlined, num_bytes, num_handles)) =
2232                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2233            {
2234                let member_inline_size =
2235                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
2236                        decoder.context,
2237                    );
2238                if inlined != (member_inline_size <= 4) {
2239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2240                }
2241                let inner_offset;
2242                let mut inner_depth = depth.clone();
2243                if inlined {
2244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2245                    inner_offset = next_offset;
2246                } else {
2247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2248                    inner_depth.increment()?;
2249                }
2250                let val_ref =
2251                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
2252                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2253                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2254                {
2255                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2256                }
2257                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2258                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2259                }
2260            }
2261
2262            next_offset += envelope_size;
2263            _next_ordinal_to_read += 1;
2264            if next_offset >= end_offset {
2265                return Ok(());
2266            }
2267
2268            // Decode unknown envelopes for gaps in ordinals.
2269            while _next_ordinal_to_read < 2 {
2270                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2271                _next_ordinal_to_read += 1;
2272                next_offset += envelope_size;
2273            }
2274
2275            let next_out_of_line = decoder.next_out_of_line();
2276            let handles_before = decoder.remaining_handles();
2277            if let Some((inlined, num_bytes, num_handles)) =
2278                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2279            {
2280                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2281                if inlined != (member_inline_size <= 4) {
2282                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2283                }
2284                let inner_offset;
2285                let mut inner_depth = depth.clone();
2286                if inlined {
2287                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2288                    inner_offset = next_offset;
2289                } else {
2290                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2291                    inner_depth.increment()?;
2292                }
2293                let val_ref = self.moniker.get_or_insert_with(|| {
2294                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2295                });
2296                fidl::decode!(
2297                    fidl::encoding::BoundedString<4096>,
2298                    D,
2299                    val_ref,
2300                    decoder,
2301                    inner_offset,
2302                    inner_depth
2303                )?;
2304                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2305                {
2306                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2307                }
2308                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2309                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2310                }
2311            }
2312
2313            next_offset += envelope_size;
2314            _next_ordinal_to_read += 1;
2315            if next_offset >= end_offset {
2316                return Ok(());
2317            }
2318
2319            // Decode unknown envelopes for gaps in ordinals.
2320            while _next_ordinal_to_read < 3 {
2321                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2322                _next_ordinal_to_read += 1;
2323                next_offset += envelope_size;
2324            }
2325
2326            let next_out_of_line = decoder.next_out_of_line();
2327            let handles_before = decoder.remaining_handles();
2328            if let Some((inlined, num_bytes, num_handles)) =
2329                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2330            {
2331                let member_inline_size = <fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2332                if inlined != (member_inline_size <= 4) {
2333                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2334                }
2335                let inner_offset;
2336                let mut inner_depth = depth.clone();
2337                if inlined {
2338                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2339                    inner_offset = next_offset;
2340                } else {
2341                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2342                    inner_depth.increment()?;
2343                }
2344                let val_ref = self.members.get_or_insert_with(|| {
2345                    fidl::new_empty!(fidl::encoding::UnboundedVector<AggregateMember>, D)
2346                });
2347                fidl::decode!(
2348                    fidl::encoding::UnboundedVector<AggregateMember>,
2349                    D,
2350                    val_ref,
2351                    decoder,
2352                    inner_offset,
2353                    inner_depth
2354                )?;
2355                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2356                {
2357                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2358                }
2359                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2360                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2361                }
2362            }
2363
2364            next_offset += envelope_size;
2365            _next_ordinal_to_read += 1;
2366            if next_offset >= end_offset {
2367                return Ok(());
2368            }
2369
2370            // Decode unknown envelopes for gaps in ordinals.
2371            while _next_ordinal_to_read < 4 {
2372                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2373                _next_ordinal_to_read += 1;
2374                next_offset += envelope_size;
2375            }
2376
2377            let next_out_of_line = decoder.next_out_of_line();
2378            let handles_before = decoder.remaining_handles();
2379            if let Some((inlined, num_bytes, num_handles)) =
2380                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2381            {
2382                let member_inline_size =
2383                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2384                if inlined != (member_inline_size <= 4) {
2385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2386                }
2387                let inner_offset;
2388                let mut inner_depth = depth.clone();
2389                if inlined {
2390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2391                    inner_offset = next_offset;
2392                } else {
2393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2394                    inner_depth.increment()?;
2395                }
2396                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
2397                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
2398                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2399                {
2400                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2401                }
2402                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2403                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2404                }
2405            }
2406
2407            next_offset += envelope_size;
2408            _next_ordinal_to_read += 1;
2409            if next_offset >= end_offset {
2410                return Ok(());
2411            }
2412
2413            // Decode unknown envelopes for gaps in ordinals.
2414            while _next_ordinal_to_read < 5 {
2415                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2416                _next_ordinal_to_read += 1;
2417                next_offset += envelope_size;
2418            }
2419
2420            let next_out_of_line = decoder.next_out_of_line();
2421            let handles_before = decoder.remaining_handles();
2422            if let Some((inlined, num_bytes, num_handles)) =
2423                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2424            {
2425                let member_inline_size = <fidl::encoding::UnboundedVector<
2426                    fidl_fuchsia_sys2__common::ServiceInstance,
2427                > as fidl::encoding::TypeMarker>::inline_size(
2428                    decoder.context
2429                );
2430                if inlined != (member_inline_size <= 4) {
2431                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2432                }
2433                let inner_offset;
2434                let mut inner_depth = depth.clone();
2435                if inlined {
2436                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2437                    inner_offset = next_offset;
2438                } else {
2439                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2440                    inner_depth.increment()?;
2441                }
2442                let val_ref = self.instances.get_or_insert_with(|| {
2443                    fidl::new_empty!(
2444                        fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2445                        D
2446                    )
2447                });
2448                fidl::decode!(
2449                    fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2450                    D,
2451                    val_ref,
2452                    decoder,
2453                    inner_offset,
2454                    inner_depth
2455                )?;
2456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2457                {
2458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2459                }
2460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2462                }
2463            }
2464
2465            next_offset += envelope_size;
2466
2467            // Decode the remaining unknown envelopes.
2468            while next_offset < end_offset {
2469                _next_ordinal_to_read += 1;
2470                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2471                next_offset += envelope_size;
2472            }
2473
2474            Ok(())
2475        }
2476    }
2477
2478    impl Builtin {
2479        #[inline(always)]
2480        fn max_ordinal_present(&self) -> u64 {
2481            if let Some(_) = self.capability {
2482                return 1;
2483            }
2484            0
2485        }
2486    }
2487
2488    impl fidl::encoding::ValueTypeMarker for Builtin {
2489        type Borrowed<'a> = &'a Self;
2490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2491            value
2492        }
2493    }
2494
2495    unsafe impl fidl::encoding::TypeMarker for Builtin {
2496        type Owned = Self;
2497
2498        #[inline(always)]
2499        fn inline_align(_context: fidl::encoding::Context) -> usize {
2500            8
2501        }
2502
2503        #[inline(always)]
2504        fn inline_size(_context: fidl::encoding::Context) -> usize {
2505            16
2506        }
2507    }
2508
2509    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Builtin, D> for &Builtin {
2510        unsafe fn encode(
2511            self,
2512            encoder: &mut fidl::encoding::Encoder<'_, D>,
2513            offset: usize,
2514            mut depth: fidl::encoding::Depth,
2515        ) -> fidl::Result<()> {
2516            encoder.debug_check_bounds::<Builtin>(offset);
2517            // Vector header
2518            let max_ordinal: u64 = self.max_ordinal_present();
2519            encoder.write_num(max_ordinal, offset);
2520            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2521            // Calling encoder.out_of_line_offset(0) is not allowed.
2522            if max_ordinal == 0 {
2523                return Ok(());
2524            }
2525            depth.increment()?;
2526            let envelope_size = 8;
2527            let bytes_len = max_ordinal as usize * envelope_size;
2528            #[allow(unused_variables)]
2529            let offset = encoder.out_of_line_offset(bytes_len);
2530            let mut _prev_end_offset: usize = 0;
2531            if 1 > max_ordinal {
2532                return Ok(());
2533            }
2534
2535            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2536            // are envelope_size bytes.
2537            let cur_offset: usize = (1 - 1) * envelope_size;
2538
2539            // Zero reserved fields.
2540            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2541
2542            // Safety:
2543            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2544            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2545            //   envelope_size bytes, there is always sufficient room.
2546            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
2547                self.capability
2548                    .as_ref()
2549                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
2550                encoder,
2551                offset + cur_offset,
2552                depth,
2553            )?;
2554
2555            _prev_end_offset = cur_offset + envelope_size;
2556
2557            Ok(())
2558        }
2559    }
2560
2561    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Builtin {
2562        #[inline(always)]
2563        fn new_empty() -> Self {
2564            Self::default()
2565        }
2566
2567        unsafe fn decode(
2568            &mut self,
2569            decoder: &mut fidl::encoding::Decoder<'_, D>,
2570            offset: usize,
2571            mut depth: fidl::encoding::Depth,
2572        ) -> fidl::Result<()> {
2573            decoder.debug_check_bounds::<Self>(offset);
2574            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2575                None => return Err(fidl::Error::NotNullable),
2576                Some(len) => len,
2577            };
2578            // Calling decoder.out_of_line_offset(0) is not allowed.
2579            if len == 0 {
2580                return Ok(());
2581            };
2582            depth.increment()?;
2583            let envelope_size = 8;
2584            let bytes_len = len * envelope_size;
2585            let offset = decoder.out_of_line_offset(bytes_len)?;
2586            // Decode the envelope for each type.
2587            let mut _next_ordinal_to_read = 0;
2588            let mut next_offset = offset;
2589            let end_offset = offset + bytes_len;
2590            _next_ordinal_to_read += 1;
2591            if next_offset >= end_offset {
2592                return Ok(());
2593            }
2594
2595            // Decode unknown envelopes for gaps in ordinals.
2596            while _next_ordinal_to_read < 1 {
2597                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2598                _next_ordinal_to_read += 1;
2599                next_offset += envelope_size;
2600            }
2601
2602            let next_out_of_line = decoder.next_out_of_line();
2603            let handles_before = decoder.remaining_handles();
2604            if let Some((inlined, num_bytes, num_handles)) =
2605                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2606            {
2607                let member_inline_size =
2608                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
2609                        decoder.context,
2610                    );
2611                if inlined != (member_inline_size <= 4) {
2612                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2613                }
2614                let inner_offset;
2615                let mut inner_depth = depth.clone();
2616                if inlined {
2617                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2618                    inner_offset = next_offset;
2619                } else {
2620                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2621                    inner_depth.increment()?;
2622                }
2623                let val_ref =
2624                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
2625                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2626                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2627                {
2628                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2629                }
2630                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2631                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2632                }
2633            }
2634
2635            next_offset += envelope_size;
2636
2637            // Decode the remaining unknown envelopes.
2638            while next_offset < end_offset {
2639                _next_ordinal_to_read += 1;
2640                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2641                next_offset += envelope_size;
2642            }
2643
2644            Ok(())
2645        }
2646    }
2647
2648    impl Capability {
2649        #[inline(always)]
2650        fn max_ordinal_present(&self) -> u64 {
2651            if let Some(_) = self.moniker {
2652                return 2;
2653            }
2654            if let Some(_) = self.source_capability {
2655                return 1;
2656            }
2657            0
2658        }
2659    }
2660
2661    impl fidl::encoding::ValueTypeMarker for Capability {
2662        type Borrowed<'a> = &'a Self;
2663        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2664            value
2665        }
2666    }
2667
2668    unsafe impl fidl::encoding::TypeMarker for Capability {
2669        type Owned = Self;
2670
2671        #[inline(always)]
2672        fn inline_align(_context: fidl::encoding::Context) -> usize {
2673            8
2674        }
2675
2676        #[inline(always)]
2677        fn inline_size(_context: fidl::encoding::Context) -> usize {
2678            16
2679        }
2680    }
2681
2682    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
2683        for &Capability
2684    {
2685        unsafe fn encode(
2686            self,
2687            encoder: &mut fidl::encoding::Encoder<'_, D>,
2688            offset: usize,
2689            mut depth: fidl::encoding::Depth,
2690        ) -> fidl::Result<()> {
2691            encoder.debug_check_bounds::<Capability>(offset);
2692            // Vector header
2693            let max_ordinal: u64 = self.max_ordinal_present();
2694            encoder.write_num(max_ordinal, offset);
2695            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2696            // Calling encoder.out_of_line_offset(0) is not allowed.
2697            if max_ordinal == 0 {
2698                return Ok(());
2699            }
2700            depth.increment()?;
2701            let envelope_size = 8;
2702            let bytes_len = max_ordinal as usize * envelope_size;
2703            #[allow(unused_variables)]
2704            let offset = encoder.out_of_line_offset(bytes_len);
2705            let mut _prev_end_offset: usize = 0;
2706            if 1 > max_ordinal {
2707                return Ok(());
2708            }
2709
2710            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2711            // are envelope_size bytes.
2712            let cur_offset: usize = (1 - 1) * envelope_size;
2713
2714            // Zero reserved fields.
2715            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2716
2717            // Safety:
2718            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2719            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2720            //   envelope_size bytes, there is always sufficient room.
2721            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
2722                self.source_capability
2723                    .as_ref()
2724                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
2725                encoder,
2726                offset + cur_offset,
2727                depth,
2728            )?;
2729
2730            _prev_end_offset = cur_offset + envelope_size;
2731            if 2 > max_ordinal {
2732                return Ok(());
2733            }
2734
2735            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2736            // are envelope_size bytes.
2737            let cur_offset: usize = (2 - 1) * envelope_size;
2738
2739            // Zero reserved fields.
2740            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2741
2742            // Safety:
2743            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2744            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2745            //   envelope_size bytes, there is always sufficient room.
2746            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2747            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2748            encoder, offset + cur_offset, depth
2749        )?;
2750
2751            _prev_end_offset = cur_offset + envelope_size;
2752
2753            Ok(())
2754        }
2755    }
2756
2757    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
2758        #[inline(always)]
2759        fn new_empty() -> Self {
2760            Self::default()
2761        }
2762
2763        unsafe fn decode(
2764            &mut self,
2765            decoder: &mut fidl::encoding::Decoder<'_, D>,
2766            offset: usize,
2767            mut depth: fidl::encoding::Depth,
2768        ) -> fidl::Result<()> {
2769            decoder.debug_check_bounds::<Self>(offset);
2770            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2771                None => return Err(fidl::Error::NotNullable),
2772                Some(len) => len,
2773            };
2774            // Calling decoder.out_of_line_offset(0) is not allowed.
2775            if len == 0 {
2776                return Ok(());
2777            };
2778            depth.increment()?;
2779            let envelope_size = 8;
2780            let bytes_len = len * envelope_size;
2781            let offset = decoder.out_of_line_offset(bytes_len)?;
2782            // Decode the envelope for each type.
2783            let mut _next_ordinal_to_read = 0;
2784            let mut next_offset = offset;
2785            let end_offset = offset + bytes_len;
2786            _next_ordinal_to_read += 1;
2787            if next_offset >= end_offset {
2788                return Ok(());
2789            }
2790
2791            // Decode unknown envelopes for gaps in ordinals.
2792            while _next_ordinal_to_read < 1 {
2793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2794                _next_ordinal_to_read += 1;
2795                next_offset += envelope_size;
2796            }
2797
2798            let next_out_of_line = decoder.next_out_of_line();
2799            let handles_before = decoder.remaining_handles();
2800            if let Some((inlined, num_bytes, num_handles)) =
2801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2802            {
2803                let member_inline_size =
2804                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
2805                        decoder.context,
2806                    );
2807                if inlined != (member_inline_size <= 4) {
2808                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2809                }
2810                let inner_offset;
2811                let mut inner_depth = depth.clone();
2812                if inlined {
2813                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2814                    inner_offset = next_offset;
2815                } else {
2816                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2817                    inner_depth.increment()?;
2818                }
2819                let val_ref = self
2820                    .source_capability
2821                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
2822                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2823                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2824                {
2825                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2826                }
2827                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2828                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2829                }
2830            }
2831
2832            next_offset += envelope_size;
2833            _next_ordinal_to_read += 1;
2834            if next_offset >= end_offset {
2835                return Ok(());
2836            }
2837
2838            // Decode unknown envelopes for gaps in ordinals.
2839            while _next_ordinal_to_read < 2 {
2840                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2841                _next_ordinal_to_read += 1;
2842                next_offset += envelope_size;
2843            }
2844
2845            let next_out_of_line = decoder.next_out_of_line();
2846            let handles_before = decoder.remaining_handles();
2847            if let Some((inlined, num_bytes, num_handles)) =
2848                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2849            {
2850                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2851                if inlined != (member_inline_size <= 4) {
2852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2853                }
2854                let inner_offset;
2855                let mut inner_depth = depth.clone();
2856                if inlined {
2857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2858                    inner_offset = next_offset;
2859                } else {
2860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2861                    inner_depth.increment()?;
2862                }
2863                let val_ref = self.moniker.get_or_insert_with(|| {
2864                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2865                });
2866                fidl::decode!(
2867                    fidl::encoding::BoundedString<4096>,
2868                    D,
2869                    val_ref,
2870                    decoder,
2871                    inner_offset,
2872                    inner_depth
2873                )?;
2874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2875                {
2876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2877                }
2878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2880                }
2881            }
2882
2883            next_offset += envelope_size;
2884
2885            // Decode the remaining unknown envelopes.
2886            while next_offset < end_offset {
2887                _next_ordinal_to_read += 1;
2888                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2889                next_offset += envelope_size;
2890            }
2891
2892            Ok(())
2893        }
2894    }
2895
2896    impl CapabilityAllowlistEntry {
2897        #[inline(always)]
2898        fn max_ordinal_present(&self) -> u64 {
2899            if let Some(_) = self.source {
2900                return 5;
2901            }
2902            if let Some(_) = self.target_monikers {
2903                return 4;
2904            }
2905            if let Some(_) = self.capability {
2906                return 3;
2907            }
2908            if let Some(_) = self.source_name {
2909                return 2;
2910            }
2911            if let Some(_) = self.source_moniker {
2912                return 1;
2913            }
2914            0
2915        }
2916    }
2917
2918    impl fidl::encoding::ValueTypeMarker for CapabilityAllowlistEntry {
2919        type Borrowed<'a> = &'a Self;
2920        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2921            value
2922        }
2923    }
2924
2925    unsafe impl fidl::encoding::TypeMarker for CapabilityAllowlistEntry {
2926        type Owned = Self;
2927
2928        #[inline(always)]
2929        fn inline_align(_context: fidl::encoding::Context) -> usize {
2930            8
2931        }
2932
2933        #[inline(always)]
2934        fn inline_size(_context: fidl::encoding::Context) -> usize {
2935            16
2936        }
2937    }
2938
2939    unsafe impl<D: fidl::encoding::ResourceDialect>
2940        fidl::encoding::Encode<CapabilityAllowlistEntry, D> for &CapabilityAllowlistEntry
2941    {
2942        unsafe fn encode(
2943            self,
2944            encoder: &mut fidl::encoding::Encoder<'_, D>,
2945            offset: usize,
2946            mut depth: fidl::encoding::Depth,
2947        ) -> fidl::Result<()> {
2948            encoder.debug_check_bounds::<CapabilityAllowlistEntry>(offset);
2949            // Vector header
2950            let max_ordinal: u64 = self.max_ordinal_present();
2951            encoder.write_num(max_ordinal, offset);
2952            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2953            // Calling encoder.out_of_line_offset(0) is not allowed.
2954            if max_ordinal == 0 {
2955                return Ok(());
2956            }
2957            depth.increment()?;
2958            let envelope_size = 8;
2959            let bytes_len = max_ordinal as usize * envelope_size;
2960            #[allow(unused_variables)]
2961            let offset = encoder.out_of_line_offset(bytes_len);
2962            let mut _prev_end_offset: usize = 0;
2963            if 1 > max_ordinal {
2964                return Ok(());
2965            }
2966
2967            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2968            // are envelope_size bytes.
2969            let cur_offset: usize = (1 - 1) * envelope_size;
2970
2971            // Zero reserved fields.
2972            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2973
2974            // Safety:
2975            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2976            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2977            //   envelope_size bytes, there is always sufficient room.
2978            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2979            self.source_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2980            encoder, offset + cur_offset, depth
2981        )?;
2982
2983            _prev_end_offset = cur_offset + envelope_size;
2984            if 2 > max_ordinal {
2985                return Ok(());
2986            }
2987
2988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2989            // are envelope_size bytes.
2990            let cur_offset: usize = (2 - 1) * envelope_size;
2991
2992            // Zero reserved fields.
2993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2994
2995            // Safety:
2996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2998            //   envelope_size bytes, there is always sufficient room.
2999            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3000                self.source_name.as_ref().map(
3001                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3002                ),
3003                encoder,
3004                offset + cur_offset,
3005                depth,
3006            )?;
3007
3008            _prev_end_offset = cur_offset + envelope_size;
3009            if 3 > max_ordinal {
3010                return Ok(());
3011            }
3012
3013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3014            // are envelope_size bytes.
3015            let cur_offset: usize = (3 - 1) * envelope_size;
3016
3017            // Zero reserved fields.
3018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3019
3020            // Safety:
3021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3023            //   envelope_size bytes, there is always sufficient room.
3024            fidl::encoding::encode_in_envelope_optional::<AllowlistedCapability, D>(
3025                self.capability
3026                    .as_ref()
3027                    .map(<AllowlistedCapability as fidl::encoding::ValueTypeMarker>::borrow),
3028                encoder,
3029                offset + cur_offset,
3030                depth,
3031            )?;
3032
3033            _prev_end_offset = cur_offset + envelope_size;
3034            if 4 > max_ordinal {
3035                return Ok(());
3036            }
3037
3038            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3039            // are envelope_size bytes.
3040            let cur_offset: usize = (4 - 1) * envelope_size;
3041
3042            // Zero reserved fields.
3043            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3044
3045            // Safety:
3046            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3047            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3048            //   envelope_size bytes, there is always sufficient room.
3049            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3050            self.target_monikers.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3051            encoder, offset + cur_offset, depth
3052        )?;
3053
3054            _prev_end_offset = cur_offset + envelope_size;
3055            if 5 > max_ordinal {
3056                return Ok(());
3057            }
3058
3059            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3060            // are envelope_size bytes.
3061            let cur_offset: usize = (5 - 1) * envelope_size;
3062
3063            // Zero reserved fields.
3064            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3065
3066            // Safety:
3067            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3068            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3069            //   envelope_size bytes, there is always sufficient room.
3070            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
3071            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
3072            encoder, offset + cur_offset, depth
3073        )?;
3074
3075            _prev_end_offset = cur_offset + envelope_size;
3076
3077            Ok(())
3078        }
3079    }
3080
3081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3082        for CapabilityAllowlistEntry
3083    {
3084        #[inline(always)]
3085        fn new_empty() -> Self {
3086            Self::default()
3087        }
3088
3089        unsafe fn decode(
3090            &mut self,
3091            decoder: &mut fidl::encoding::Decoder<'_, D>,
3092            offset: usize,
3093            mut depth: fidl::encoding::Depth,
3094        ) -> fidl::Result<()> {
3095            decoder.debug_check_bounds::<Self>(offset);
3096            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3097                None => return Err(fidl::Error::NotNullable),
3098                Some(len) => len,
3099            };
3100            // Calling decoder.out_of_line_offset(0) is not allowed.
3101            if len == 0 {
3102                return Ok(());
3103            };
3104            depth.increment()?;
3105            let envelope_size = 8;
3106            let bytes_len = len * envelope_size;
3107            let offset = decoder.out_of_line_offset(bytes_len)?;
3108            // Decode the envelope for each type.
3109            let mut _next_ordinal_to_read = 0;
3110            let mut next_offset = offset;
3111            let end_offset = offset + bytes_len;
3112            _next_ordinal_to_read += 1;
3113            if next_offset >= end_offset {
3114                return Ok(());
3115            }
3116
3117            // Decode unknown envelopes for gaps in ordinals.
3118            while _next_ordinal_to_read < 1 {
3119                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3120                _next_ordinal_to_read += 1;
3121                next_offset += envelope_size;
3122            }
3123
3124            let next_out_of_line = decoder.next_out_of_line();
3125            let handles_before = decoder.remaining_handles();
3126            if let Some((inlined, num_bytes, num_handles)) =
3127                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3128            {
3129                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3130                if inlined != (member_inline_size <= 4) {
3131                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3132                }
3133                let inner_offset;
3134                let mut inner_depth = depth.clone();
3135                if inlined {
3136                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3137                    inner_offset = next_offset;
3138                } else {
3139                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3140                    inner_depth.increment()?;
3141                }
3142                let val_ref = self.source_moniker.get_or_insert_with(|| {
3143                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3144                });
3145                fidl::decode!(
3146                    fidl::encoding::BoundedString<4096>,
3147                    D,
3148                    val_ref,
3149                    decoder,
3150                    inner_offset,
3151                    inner_depth
3152                )?;
3153                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3154                {
3155                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3156                }
3157                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3158                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3159                }
3160            }
3161
3162            next_offset += envelope_size;
3163            _next_ordinal_to_read += 1;
3164            if next_offset >= end_offset {
3165                return Ok(());
3166            }
3167
3168            // Decode unknown envelopes for gaps in ordinals.
3169            while _next_ordinal_to_read < 2 {
3170                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3171                _next_ordinal_to_read += 1;
3172                next_offset += envelope_size;
3173            }
3174
3175            let next_out_of_line = decoder.next_out_of_line();
3176            let handles_before = decoder.remaining_handles();
3177            if let Some((inlined, num_bytes, num_handles)) =
3178                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3179            {
3180                let member_inline_size =
3181                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3182                        decoder.context,
3183                    );
3184                if inlined != (member_inline_size <= 4) {
3185                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3186                }
3187                let inner_offset;
3188                let mut inner_depth = depth.clone();
3189                if inlined {
3190                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3191                    inner_offset = next_offset;
3192                } else {
3193                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3194                    inner_depth.increment()?;
3195                }
3196                let val_ref = self
3197                    .source_name
3198                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3199                fidl::decode!(
3200                    fidl::encoding::BoundedString<255>,
3201                    D,
3202                    val_ref,
3203                    decoder,
3204                    inner_offset,
3205                    inner_depth
3206                )?;
3207                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3208                {
3209                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3210                }
3211                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3212                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3213                }
3214            }
3215
3216            next_offset += envelope_size;
3217            _next_ordinal_to_read += 1;
3218            if next_offset >= end_offset {
3219                return Ok(());
3220            }
3221
3222            // Decode unknown envelopes for gaps in ordinals.
3223            while _next_ordinal_to_read < 3 {
3224                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3225                _next_ordinal_to_read += 1;
3226                next_offset += envelope_size;
3227            }
3228
3229            let next_out_of_line = decoder.next_out_of_line();
3230            let handles_before = decoder.remaining_handles();
3231            if let Some((inlined, num_bytes, num_handles)) =
3232                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3233            {
3234                let member_inline_size =
3235                    <AllowlistedCapability as fidl::encoding::TypeMarker>::inline_size(
3236                        decoder.context,
3237                    );
3238                if inlined != (member_inline_size <= 4) {
3239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3240                }
3241                let inner_offset;
3242                let mut inner_depth = depth.clone();
3243                if inlined {
3244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3245                    inner_offset = next_offset;
3246                } else {
3247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3248                    inner_depth.increment()?;
3249                }
3250                let val_ref = self
3251                    .capability
3252                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedCapability, D));
3253                fidl::decode!(
3254                    AllowlistedCapability,
3255                    D,
3256                    val_ref,
3257                    decoder,
3258                    inner_offset,
3259                    inner_depth
3260                )?;
3261                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3262                {
3263                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3264                }
3265                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3266                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3267                }
3268            }
3269
3270            next_offset += envelope_size;
3271            _next_ordinal_to_read += 1;
3272            if next_offset >= end_offset {
3273                return Ok(());
3274            }
3275
3276            // Decode unknown envelopes for gaps in ordinals.
3277            while _next_ordinal_to_read < 4 {
3278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3279                _next_ordinal_to_read += 1;
3280                next_offset += envelope_size;
3281            }
3282
3283            let next_out_of_line = decoder.next_out_of_line();
3284            let handles_before = decoder.remaining_handles();
3285            if let Some((inlined, num_bytes, num_handles)) =
3286                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3287            {
3288                let member_inline_size = <fidl::encoding::Vector<
3289                    fidl::encoding::BoundedString<4096>,
3290                    128,
3291                > as fidl::encoding::TypeMarker>::inline_size(
3292                    decoder.context
3293                );
3294                if inlined != (member_inline_size <= 4) {
3295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3296                }
3297                let inner_offset;
3298                let mut inner_depth = depth.clone();
3299                if inlined {
3300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3301                    inner_offset = next_offset;
3302                } else {
3303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3304                    inner_depth.increment()?;
3305                }
3306                let val_ref = self.target_monikers.get_or_insert_with(|| {
3307                    fidl::new_empty!(
3308                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3309                        D
3310                    )
3311                });
3312                fidl::decode!(
3313                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3314                    D,
3315                    val_ref,
3316                    decoder,
3317                    inner_offset,
3318                    inner_depth
3319                )?;
3320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3321                {
3322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3323                }
3324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3326                }
3327            }
3328
3329            next_offset += envelope_size;
3330            _next_ordinal_to_read += 1;
3331            if next_offset >= end_offset {
3332                return Ok(());
3333            }
3334
3335            // Decode unknown envelopes for gaps in ordinals.
3336            while _next_ordinal_to_read < 5 {
3337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3338                _next_ordinal_to_read += 1;
3339                next_offset += envelope_size;
3340            }
3341
3342            let next_out_of_line = decoder.next_out_of_line();
3343            let handles_before = decoder.remaining_handles();
3344            if let Some((inlined, num_bytes, num_handles)) =
3345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3346            {
3347                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3348                if inlined != (member_inline_size <= 4) {
3349                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3350                }
3351                let inner_offset;
3352                let mut inner_depth = depth.clone();
3353                if inlined {
3354                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3355                    inner_offset = next_offset;
3356                } else {
3357                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3358                    inner_depth.increment()?;
3359                }
3360                let val_ref = self.source.get_or_insert_with(|| {
3361                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
3362                });
3363                fidl::decode!(
3364                    fidl_fuchsia_component_decl__common::Ref,
3365                    D,
3366                    val_ref,
3367                    decoder,
3368                    inner_offset,
3369                    inner_depth
3370                )?;
3371                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3372                {
3373                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3374                }
3375                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3376                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3377                }
3378            }
3379
3380            next_offset += envelope_size;
3381
3382            // Decode the remaining unknown envelopes.
3383            while next_offset < end_offset {
3384                _next_ordinal_to_read += 1;
3385                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3386                next_offset += envelope_size;
3387            }
3388
3389            Ok(())
3390        }
3391    }
3392
3393    impl CapabilityPolicyAllowlists {
3394        #[inline(always)]
3395        fn max_ordinal_present(&self) -> u64 {
3396            if let Some(_) = self.allowlist {
3397                return 1;
3398            }
3399            0
3400        }
3401    }
3402
3403    impl fidl::encoding::ValueTypeMarker for CapabilityPolicyAllowlists {
3404        type Borrowed<'a> = &'a Self;
3405        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3406            value
3407        }
3408    }
3409
3410    unsafe impl fidl::encoding::TypeMarker for CapabilityPolicyAllowlists {
3411        type Owned = Self;
3412
3413        #[inline(always)]
3414        fn inline_align(_context: fidl::encoding::Context) -> usize {
3415            8
3416        }
3417
3418        #[inline(always)]
3419        fn inline_size(_context: fidl::encoding::Context) -> usize {
3420            16
3421        }
3422    }
3423
3424    unsafe impl<D: fidl::encoding::ResourceDialect>
3425        fidl::encoding::Encode<CapabilityPolicyAllowlists, D> for &CapabilityPolicyAllowlists
3426    {
3427        unsafe fn encode(
3428            self,
3429            encoder: &mut fidl::encoding::Encoder<'_, D>,
3430            offset: usize,
3431            mut depth: fidl::encoding::Depth,
3432        ) -> fidl::Result<()> {
3433            encoder.debug_check_bounds::<CapabilityPolicyAllowlists>(offset);
3434            // Vector header
3435            let max_ordinal: u64 = self.max_ordinal_present();
3436            encoder.write_num(max_ordinal, offset);
3437            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3438            // Calling encoder.out_of_line_offset(0) is not allowed.
3439            if max_ordinal == 0 {
3440                return Ok(());
3441            }
3442            depth.increment()?;
3443            let envelope_size = 8;
3444            let bytes_len = max_ordinal as usize * envelope_size;
3445            #[allow(unused_variables)]
3446            let offset = encoder.out_of_line_offset(bytes_len);
3447            let mut _prev_end_offset: usize = 0;
3448            if 1 > max_ordinal {
3449                return Ok(());
3450            }
3451
3452            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3453            // are envelope_size bytes.
3454            let cur_offset: usize = (1 - 1) * envelope_size;
3455
3456            // Zero reserved fields.
3457            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3458
3459            // Safety:
3460            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3461            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3462            //   envelope_size bytes, there is always sufficient room.
3463            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D>(
3464            self.allowlist.as_ref().map(<fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3465            encoder, offset + cur_offset, depth
3466        )?;
3467
3468            _prev_end_offset = cur_offset + envelope_size;
3469
3470            Ok(())
3471        }
3472    }
3473
3474    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3475        for CapabilityPolicyAllowlists
3476    {
3477        #[inline(always)]
3478        fn new_empty() -> Self {
3479            Self::default()
3480        }
3481
3482        unsafe fn decode(
3483            &mut self,
3484            decoder: &mut fidl::encoding::Decoder<'_, D>,
3485            offset: usize,
3486            mut depth: fidl::encoding::Depth,
3487        ) -> fidl::Result<()> {
3488            decoder.debug_check_bounds::<Self>(offset);
3489            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3490                None => return Err(fidl::Error::NotNullable),
3491                Some(len) => len,
3492            };
3493            // Calling decoder.out_of_line_offset(0) is not allowed.
3494            if len == 0 {
3495                return Ok(());
3496            };
3497            depth.increment()?;
3498            let envelope_size = 8;
3499            let bytes_len = len * envelope_size;
3500            let offset = decoder.out_of_line_offset(bytes_len)?;
3501            // Decode the envelope for each type.
3502            let mut _next_ordinal_to_read = 0;
3503            let mut next_offset = offset;
3504            let end_offset = offset + bytes_len;
3505            _next_ordinal_to_read += 1;
3506            if next_offset >= end_offset {
3507                return Ok(());
3508            }
3509
3510            // Decode unknown envelopes for gaps in ordinals.
3511            while _next_ordinal_to_read < 1 {
3512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3513                _next_ordinal_to_read += 1;
3514                next_offset += envelope_size;
3515            }
3516
3517            let next_out_of_line = decoder.next_out_of_line();
3518            let handles_before = decoder.remaining_handles();
3519            if let Some((inlined, num_bytes, num_handles)) =
3520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3521            {
3522                let member_inline_size = <fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3523                if inlined != (member_inline_size <= 4) {
3524                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3525                }
3526                let inner_offset;
3527                let mut inner_depth = depth.clone();
3528                if inlined {
3529                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3530                    inner_offset = next_offset;
3531                } else {
3532                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3533                    inner_depth.increment()?;
3534                }
3535                let val_ref = self.allowlist.get_or_insert_with(
3536                    || fidl::new_empty!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D),
3537                );
3538                fidl::decode!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
3539                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3540                {
3541                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3542                }
3543                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3544                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3545                }
3546            }
3547
3548            next_offset += envelope_size;
3549
3550            // Decode the remaining unknown envelopes.
3551            while next_offset < end_offset {
3552                _next_ordinal_to_read += 1;
3553                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3554                next_offset += envelope_size;
3555            }
3556
3557            Ok(())
3558        }
3559    }
3560
3561    impl ChildPolicyAllowlists {
3562        #[inline(always)]
3563        fn max_ordinal_present(&self) -> u64 {
3564            if let Some(_) = self.reboot_on_terminate {
3565                return 1;
3566            }
3567            0
3568        }
3569    }
3570
3571    impl fidl::encoding::ValueTypeMarker for ChildPolicyAllowlists {
3572        type Borrowed<'a> = &'a Self;
3573        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3574            value
3575        }
3576    }
3577
3578    unsafe impl fidl::encoding::TypeMarker for ChildPolicyAllowlists {
3579        type Owned = Self;
3580
3581        #[inline(always)]
3582        fn inline_align(_context: fidl::encoding::Context) -> usize {
3583            8
3584        }
3585
3586        #[inline(always)]
3587        fn inline_size(_context: fidl::encoding::Context) -> usize {
3588            16
3589        }
3590    }
3591
3592    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildPolicyAllowlists, D>
3593        for &ChildPolicyAllowlists
3594    {
3595        unsafe fn encode(
3596            self,
3597            encoder: &mut fidl::encoding::Encoder<'_, D>,
3598            offset: usize,
3599            mut depth: fidl::encoding::Depth,
3600        ) -> fidl::Result<()> {
3601            encoder.debug_check_bounds::<ChildPolicyAllowlists>(offset);
3602            // Vector header
3603            let max_ordinal: u64 = self.max_ordinal_present();
3604            encoder.write_num(max_ordinal, offset);
3605            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3606            // Calling encoder.out_of_line_offset(0) is not allowed.
3607            if max_ordinal == 0 {
3608                return Ok(());
3609            }
3610            depth.increment()?;
3611            let envelope_size = 8;
3612            let bytes_len = max_ordinal as usize * envelope_size;
3613            #[allow(unused_variables)]
3614            let offset = encoder.out_of_line_offset(bytes_len);
3615            let mut _prev_end_offset: usize = 0;
3616            if 1 > max_ordinal {
3617                return Ok(());
3618            }
3619
3620            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3621            // are envelope_size bytes.
3622            let cur_offset: usize = (1 - 1) * envelope_size;
3623
3624            // Zero reserved fields.
3625            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3626
3627            // Safety:
3628            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3629            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3630            //   envelope_size bytes, there is always sufficient room.
3631            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3632            self.reboot_on_terminate.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3633            encoder, offset + cur_offset, depth
3634        )?;
3635
3636            _prev_end_offset = cur_offset + envelope_size;
3637
3638            Ok(())
3639        }
3640    }
3641
3642    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildPolicyAllowlists {
3643        #[inline(always)]
3644        fn new_empty() -> Self {
3645            Self::default()
3646        }
3647
3648        unsafe fn decode(
3649            &mut self,
3650            decoder: &mut fidl::encoding::Decoder<'_, D>,
3651            offset: usize,
3652            mut depth: fidl::encoding::Depth,
3653        ) -> fidl::Result<()> {
3654            decoder.debug_check_bounds::<Self>(offset);
3655            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3656                None => return Err(fidl::Error::NotNullable),
3657                Some(len) => len,
3658            };
3659            // Calling decoder.out_of_line_offset(0) is not allowed.
3660            if len == 0 {
3661                return Ok(());
3662            };
3663            depth.increment()?;
3664            let envelope_size = 8;
3665            let bytes_len = len * envelope_size;
3666            let offset = decoder.out_of_line_offset(bytes_len)?;
3667            // Decode the envelope for each type.
3668            let mut _next_ordinal_to_read = 0;
3669            let mut next_offset = offset;
3670            let end_offset = offset + bytes_len;
3671            _next_ordinal_to_read += 1;
3672            if next_offset >= end_offset {
3673                return Ok(());
3674            }
3675
3676            // Decode unknown envelopes for gaps in ordinals.
3677            while _next_ordinal_to_read < 1 {
3678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3679                _next_ordinal_to_read += 1;
3680                next_offset += envelope_size;
3681            }
3682
3683            let next_out_of_line = decoder.next_out_of_line();
3684            let handles_before = decoder.remaining_handles();
3685            if let Some((inlined, num_bytes, num_handles)) =
3686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3687            {
3688                let member_inline_size = <fidl::encoding::Vector<
3689                    fidl::encoding::BoundedString<4096>,
3690                    128,
3691                > as fidl::encoding::TypeMarker>::inline_size(
3692                    decoder.context
3693                );
3694                if inlined != (member_inline_size <= 4) {
3695                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3696                }
3697                let inner_offset;
3698                let mut inner_depth = depth.clone();
3699                if inlined {
3700                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3701                    inner_offset = next_offset;
3702                } else {
3703                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3704                    inner_depth.increment()?;
3705                }
3706                let val_ref = self.reboot_on_terminate.get_or_insert_with(|| {
3707                    fidl::new_empty!(
3708                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3709                        D
3710                    )
3711                });
3712                fidl::decode!(
3713                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3714                    D,
3715                    val_ref,
3716                    decoder,
3717                    inner_offset,
3718                    inner_depth
3719                )?;
3720                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3721                {
3722                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3723                }
3724                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3725                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3726                }
3727            }
3728
3729            next_offset += envelope_size;
3730
3731            // Decode the remaining unknown envelopes.
3732            while next_offset < end_offset {
3733                _next_ordinal_to_read += 1;
3734                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3735                next_offset += envelope_size;
3736            }
3737
3738            Ok(())
3739        }
3740    }
3741
3742    impl Component {
3743        #[inline(always)]
3744        fn max_ordinal_present(&self) -> u64 {
3745            if let Some(_) = self.moniker {
3746                return 2;
3747            }
3748            if let Some(_) = self.capability {
3749                return 1;
3750            }
3751            0
3752        }
3753    }
3754
3755    impl fidl::encoding::ValueTypeMarker for Component {
3756        type Borrowed<'a> = &'a Self;
3757        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3758            value
3759        }
3760    }
3761
3762    unsafe impl fidl::encoding::TypeMarker for Component {
3763        type Owned = Self;
3764
3765        #[inline(always)]
3766        fn inline_align(_context: fidl::encoding::Context) -> usize {
3767            8
3768        }
3769
3770        #[inline(always)]
3771        fn inline_size(_context: fidl::encoding::Context) -> usize {
3772            16
3773        }
3774    }
3775
3776    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Component, D>
3777        for &Component
3778    {
3779        unsafe fn encode(
3780            self,
3781            encoder: &mut fidl::encoding::Encoder<'_, D>,
3782            offset: usize,
3783            mut depth: fidl::encoding::Depth,
3784        ) -> fidl::Result<()> {
3785            encoder.debug_check_bounds::<Component>(offset);
3786            // Vector header
3787            let max_ordinal: u64 = self.max_ordinal_present();
3788            encoder.write_num(max_ordinal, offset);
3789            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3790            // Calling encoder.out_of_line_offset(0) is not allowed.
3791            if max_ordinal == 0 {
3792                return Ok(());
3793            }
3794            depth.increment()?;
3795            let envelope_size = 8;
3796            let bytes_len = max_ordinal as usize * envelope_size;
3797            #[allow(unused_variables)]
3798            let offset = encoder.out_of_line_offset(bytes_len);
3799            let mut _prev_end_offset: usize = 0;
3800            if 1 > max_ordinal {
3801                return Ok(());
3802            }
3803
3804            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3805            // are envelope_size bytes.
3806            let cur_offset: usize = (1 - 1) * envelope_size;
3807
3808            // Zero reserved fields.
3809            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3810
3811            // Safety:
3812            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3813            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3814            //   envelope_size bytes, there is always sufficient room.
3815            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
3816                self.capability
3817                    .as_ref()
3818                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
3819                encoder,
3820                offset + cur_offset,
3821                depth,
3822            )?;
3823
3824            _prev_end_offset = cur_offset + envelope_size;
3825            if 2 > max_ordinal {
3826                return Ok(());
3827            }
3828
3829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3830            // are envelope_size bytes.
3831            let cur_offset: usize = (2 - 1) * envelope_size;
3832
3833            // Zero reserved fields.
3834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3835
3836            // Safety:
3837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3839            //   envelope_size bytes, there is always sufficient room.
3840            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3841            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3842            encoder, offset + cur_offset, depth
3843        )?;
3844
3845            _prev_end_offset = cur_offset + envelope_size;
3846
3847            Ok(())
3848        }
3849    }
3850
3851    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Component {
3852        #[inline(always)]
3853        fn new_empty() -> Self {
3854            Self::default()
3855        }
3856
3857        unsafe fn decode(
3858            &mut self,
3859            decoder: &mut fidl::encoding::Decoder<'_, D>,
3860            offset: usize,
3861            mut depth: fidl::encoding::Depth,
3862        ) -> fidl::Result<()> {
3863            decoder.debug_check_bounds::<Self>(offset);
3864            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3865                None => return Err(fidl::Error::NotNullable),
3866                Some(len) => len,
3867            };
3868            // Calling decoder.out_of_line_offset(0) is not allowed.
3869            if len == 0 {
3870                return Ok(());
3871            };
3872            depth.increment()?;
3873            let envelope_size = 8;
3874            let bytes_len = len * envelope_size;
3875            let offset = decoder.out_of_line_offset(bytes_len)?;
3876            // Decode the envelope for each type.
3877            let mut _next_ordinal_to_read = 0;
3878            let mut next_offset = offset;
3879            let end_offset = offset + bytes_len;
3880            _next_ordinal_to_read += 1;
3881            if next_offset >= end_offset {
3882                return Ok(());
3883            }
3884
3885            // Decode unknown envelopes for gaps in ordinals.
3886            while _next_ordinal_to_read < 1 {
3887                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3888                _next_ordinal_to_read += 1;
3889                next_offset += envelope_size;
3890            }
3891
3892            let next_out_of_line = decoder.next_out_of_line();
3893            let handles_before = decoder.remaining_handles();
3894            if let Some((inlined, num_bytes, num_handles)) =
3895                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3896            {
3897                let member_inline_size =
3898                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
3899                        decoder.context,
3900                    );
3901                if inlined != (member_inline_size <= 4) {
3902                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3903                }
3904                let inner_offset;
3905                let mut inner_depth = depth.clone();
3906                if inlined {
3907                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3908                    inner_offset = next_offset;
3909                } else {
3910                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3911                    inner_depth.increment()?;
3912                }
3913                let val_ref =
3914                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
3915                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
3916                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3917                {
3918                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3919                }
3920                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3921                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3922                }
3923            }
3924
3925            next_offset += envelope_size;
3926            _next_ordinal_to_read += 1;
3927            if next_offset >= end_offset {
3928                return Ok(());
3929            }
3930
3931            // Decode unknown envelopes for gaps in ordinals.
3932            while _next_ordinal_to_read < 2 {
3933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3934                _next_ordinal_to_read += 1;
3935                next_offset += envelope_size;
3936            }
3937
3938            let next_out_of_line = decoder.next_out_of_line();
3939            let handles_before = decoder.remaining_handles();
3940            if let Some((inlined, num_bytes, num_handles)) =
3941                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3942            {
3943                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3944                if inlined != (member_inline_size <= 4) {
3945                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3946                }
3947                let inner_offset;
3948                let mut inner_depth = depth.clone();
3949                if inlined {
3950                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3951                    inner_offset = next_offset;
3952                } else {
3953                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3954                    inner_depth.increment()?;
3955                }
3956                let val_ref = self.moniker.get_or_insert_with(|| {
3957                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3958                });
3959                fidl::decode!(
3960                    fidl::encoding::BoundedString<4096>,
3961                    D,
3962                    val_ref,
3963                    decoder,
3964                    inner_offset,
3965                    inner_depth
3966                )?;
3967                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3968                {
3969                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3970                }
3971                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3972                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3973                }
3974            }
3975
3976            next_offset += envelope_size;
3977
3978            // Decode the remaining unknown envelopes.
3979            while next_offset < end_offset {
3980                _next_ordinal_to_read += 1;
3981                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3982                next_offset += envelope_size;
3983            }
3984
3985            Ok(())
3986        }
3987    }
3988
3989    impl ComponentIdIndex {
3990        #[inline(always)]
3991        fn max_ordinal_present(&self) -> u64 {
3992            if let Some(_) = self.instances {
3993                return 2;
3994            }
3995            0
3996        }
3997    }
3998
3999    impl fidl::encoding::ValueTypeMarker for ComponentIdIndex {
4000        type Borrowed<'a> = &'a Self;
4001        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4002            value
4003        }
4004    }
4005
4006    unsafe impl fidl::encoding::TypeMarker for ComponentIdIndex {
4007        type Owned = Self;
4008
4009        #[inline(always)]
4010        fn inline_align(_context: fidl::encoding::Context) -> usize {
4011            8
4012        }
4013
4014        #[inline(always)]
4015        fn inline_size(_context: fidl::encoding::Context) -> usize {
4016            16
4017        }
4018    }
4019
4020    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentIdIndex, D>
4021        for &ComponentIdIndex
4022    {
4023        unsafe fn encode(
4024            self,
4025            encoder: &mut fidl::encoding::Encoder<'_, D>,
4026            offset: usize,
4027            mut depth: fidl::encoding::Depth,
4028        ) -> fidl::Result<()> {
4029            encoder.debug_check_bounds::<ComponentIdIndex>(offset);
4030            // Vector header
4031            let max_ordinal: u64 = self.max_ordinal_present();
4032            encoder.write_num(max_ordinal, offset);
4033            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4034            // Calling encoder.out_of_line_offset(0) is not allowed.
4035            if max_ordinal == 0 {
4036                return Ok(());
4037            }
4038            depth.increment()?;
4039            let envelope_size = 8;
4040            let bytes_len = max_ordinal as usize * envelope_size;
4041            #[allow(unused_variables)]
4042            let offset = encoder.out_of_line_offset(bytes_len);
4043            let mut _prev_end_offset: usize = 0;
4044            if 2 > max_ordinal {
4045                return Ok(());
4046            }
4047
4048            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4049            // are envelope_size bytes.
4050            let cur_offset: usize = (2 - 1) * envelope_size;
4051
4052            // Zero reserved fields.
4053            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4054
4055            // Safety:
4056            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4057            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4058            //   envelope_size bytes, there is always sufficient room.
4059            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InstanceIdEntry, 1024>, D>(
4060            self.instances.as_ref().map(<fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
4061            encoder, offset + cur_offset, depth
4062        )?;
4063
4064            _prev_end_offset = cur_offset + envelope_size;
4065
4066            Ok(())
4067        }
4068    }
4069
4070    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentIdIndex {
4071        #[inline(always)]
4072        fn new_empty() -> Self {
4073            Self::default()
4074        }
4075
4076        unsafe fn decode(
4077            &mut self,
4078            decoder: &mut fidl::encoding::Decoder<'_, D>,
4079            offset: usize,
4080            mut depth: fidl::encoding::Depth,
4081        ) -> fidl::Result<()> {
4082            decoder.debug_check_bounds::<Self>(offset);
4083            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4084                None => return Err(fidl::Error::NotNullable),
4085                Some(len) => len,
4086            };
4087            // Calling decoder.out_of_line_offset(0) is not allowed.
4088            if len == 0 {
4089                return Ok(());
4090            };
4091            depth.increment()?;
4092            let envelope_size = 8;
4093            let bytes_len = len * envelope_size;
4094            let offset = decoder.out_of_line_offset(bytes_len)?;
4095            // Decode the envelope for each type.
4096            let mut _next_ordinal_to_read = 0;
4097            let mut next_offset = offset;
4098            let end_offset = offset + bytes_len;
4099            _next_ordinal_to_read += 1;
4100            if next_offset >= end_offset {
4101                return Ok(());
4102            }
4103
4104            // Decode unknown envelopes for gaps in ordinals.
4105            while _next_ordinal_to_read < 2 {
4106                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4107                _next_ordinal_to_read += 1;
4108                next_offset += envelope_size;
4109            }
4110
4111            let next_out_of_line = decoder.next_out_of_line();
4112            let handles_before = decoder.remaining_handles();
4113            if let Some((inlined, num_bytes, num_handles)) =
4114                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4115            {
4116                let member_inline_size = <fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4117                if inlined != (member_inline_size <= 4) {
4118                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4119                }
4120                let inner_offset;
4121                let mut inner_depth = depth.clone();
4122                if inlined {
4123                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4124                    inner_offset = next_offset;
4125                } else {
4126                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4127                    inner_depth.increment()?;
4128                }
4129                let val_ref = self.instances.get_or_insert_with(
4130                    || fidl::new_empty!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D),
4131                );
4132                fidl::decode!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
4133                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4134                {
4135                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4136                }
4137                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4138                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4139                }
4140            }
4141
4142            next_offset += envelope_size;
4143
4144            // Decode the remaining unknown envelopes.
4145            while next_offset < end_offset {
4146                _next_ordinal_to_read += 1;
4147                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4148                next_offset += envelope_size;
4149            }
4150
4151            Ok(())
4152        }
4153    }
4154
4155    impl Config {
4156        #[inline(always)]
4157        fn max_ordinal_present(&self) -> u64 {
4158            if let Some(_) = self.trace_provider {
4159                return 22;
4160            }
4161            if let Some(_) = self.health_check {
4162                return 21;
4163            }
4164            if let Some(_) = self.vmex_source {
4165                return 20;
4166            }
4167            if let Some(_) = self.abi_revision_policy {
4168                return 19;
4169            }
4170            if let Some(_) = self.enable_introspection {
4171                return 18;
4172            }
4173            if let Some(_) = self.builtin_capabilities {
4174                return 17;
4175            }
4176            if let Some(_) = self.realm_builder_resolver_and_runner {
4177                return 16;
4178            }
4179            if let Some(_) = self.builtin_boot_resolver {
4180                return 14;
4181            }
4182            if let Some(_) = self.log_all_events {
4183                return 13;
4184            }
4185            if let Some(_) = self.log_destination {
4186                return 12;
4187            }
4188            if let Some(_) = self.component_id_index_path {
4189                return 11;
4190            }
4191            if let Some(_) = self.root_component_url {
4192                return 10;
4193            }
4194            if let Some(_) = self.num_threads {
4195                return 7;
4196            }
4197            if let Some(_) = self.maintain_utc_clock {
4198                return 6;
4199            }
4200            if let Some(_) = self.use_builtin_process_launcher {
4201                return 5;
4202            }
4203            if let Some(_) = self.namespace_capabilities {
4204                return 4;
4205            }
4206            if let Some(_) = self.security_policy {
4207                return 3;
4208            }
4209            if let Some(_) = self.list_children_batch_size {
4210                return 2;
4211            }
4212            if let Some(_) = self.debug {
4213                return 1;
4214            }
4215            0
4216        }
4217    }
4218
4219    impl fidl::encoding::ValueTypeMarker for Config {
4220        type Borrowed<'a> = &'a Self;
4221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4222            value
4223        }
4224    }
4225
4226    unsafe impl fidl::encoding::TypeMarker for Config {
4227        type Owned = Self;
4228
4229        #[inline(always)]
4230        fn inline_align(_context: fidl::encoding::Context) -> usize {
4231            8
4232        }
4233
4234        #[inline(always)]
4235        fn inline_size(_context: fidl::encoding::Context) -> usize {
4236            16
4237        }
4238    }
4239
4240    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
4241        unsafe fn encode(
4242            self,
4243            encoder: &mut fidl::encoding::Encoder<'_, D>,
4244            offset: usize,
4245            mut depth: fidl::encoding::Depth,
4246        ) -> fidl::Result<()> {
4247            encoder.debug_check_bounds::<Config>(offset);
4248            // Vector header
4249            let max_ordinal: u64 = self.max_ordinal_present();
4250            encoder.write_num(max_ordinal, offset);
4251            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4252            // Calling encoder.out_of_line_offset(0) is not allowed.
4253            if max_ordinal == 0 {
4254                return Ok(());
4255            }
4256            depth.increment()?;
4257            let envelope_size = 8;
4258            let bytes_len = max_ordinal as usize * envelope_size;
4259            #[allow(unused_variables)]
4260            let offset = encoder.out_of_line_offset(bytes_len);
4261            let mut _prev_end_offset: usize = 0;
4262            if 1 > max_ordinal {
4263                return Ok(());
4264            }
4265
4266            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4267            // are envelope_size bytes.
4268            let cur_offset: usize = (1 - 1) * envelope_size;
4269
4270            // Zero reserved fields.
4271            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4272
4273            // Safety:
4274            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4275            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4276            //   envelope_size bytes, there is always sufficient room.
4277            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4278                self.debug.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4279                encoder,
4280                offset + cur_offset,
4281                depth,
4282            )?;
4283
4284            _prev_end_offset = cur_offset + envelope_size;
4285            if 2 > max_ordinal {
4286                return Ok(());
4287            }
4288
4289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4290            // are envelope_size bytes.
4291            let cur_offset: usize = (2 - 1) * envelope_size;
4292
4293            // Zero reserved fields.
4294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4295
4296            // Safety:
4297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4299            //   envelope_size bytes, there is always sufficient room.
4300            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4301                self.list_children_batch_size
4302                    .as_ref()
4303                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4304                encoder,
4305                offset + cur_offset,
4306                depth,
4307            )?;
4308
4309            _prev_end_offset = cur_offset + envelope_size;
4310            if 3 > max_ordinal {
4311                return Ok(());
4312            }
4313
4314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4315            // are envelope_size bytes.
4316            let cur_offset: usize = (3 - 1) * envelope_size;
4317
4318            // Zero reserved fields.
4319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4320
4321            // Safety:
4322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4324            //   envelope_size bytes, there is always sufficient room.
4325            fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
4326                self.security_policy
4327                    .as_ref()
4328                    .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4329                encoder,
4330                offset + cur_offset,
4331                depth,
4332            )?;
4333
4334            _prev_end_offset = cur_offset + envelope_size;
4335            if 4 > max_ordinal {
4336                return Ok(());
4337            }
4338
4339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4340            // are envelope_size bytes.
4341            let cur_offset: usize = (4 - 1) * envelope_size;
4342
4343            // Zero reserved fields.
4344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4345
4346            // Safety:
4347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4349            //   envelope_size bytes, there is always sufficient room.
4350            fidl::encoding::encode_in_envelope_optional::<
4351                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4352                D,
4353            >(
4354                self.namespace_capabilities.as_ref().map(
4355                    <fidl::encoding::UnboundedVector<
4356                        fidl_fuchsia_component_decl__common::Capability,
4357                    > as fidl::encoding::ValueTypeMarker>::borrow,
4358                ),
4359                encoder,
4360                offset + cur_offset,
4361                depth,
4362            )?;
4363
4364            _prev_end_offset = cur_offset + envelope_size;
4365            if 5 > max_ordinal {
4366                return Ok(());
4367            }
4368
4369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4370            // are envelope_size bytes.
4371            let cur_offset: usize = (5 - 1) * envelope_size;
4372
4373            // Zero reserved fields.
4374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4375
4376            // Safety:
4377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4379            //   envelope_size bytes, there is always sufficient room.
4380            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4381                self.use_builtin_process_launcher
4382                    .as_ref()
4383                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4384                encoder,
4385                offset + cur_offset,
4386                depth,
4387            )?;
4388
4389            _prev_end_offset = cur_offset + envelope_size;
4390            if 6 > max_ordinal {
4391                return Ok(());
4392            }
4393
4394            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4395            // are envelope_size bytes.
4396            let cur_offset: usize = (6 - 1) * envelope_size;
4397
4398            // Zero reserved fields.
4399            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4400
4401            // Safety:
4402            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4403            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4404            //   envelope_size bytes, there is always sufficient room.
4405            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4406                self.maintain_utc_clock
4407                    .as_ref()
4408                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4409                encoder,
4410                offset + cur_offset,
4411                depth,
4412            )?;
4413
4414            _prev_end_offset = cur_offset + envelope_size;
4415            if 7 > max_ordinal {
4416                return Ok(());
4417            }
4418
4419            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4420            // are envelope_size bytes.
4421            let cur_offset: usize = (7 - 1) * envelope_size;
4422
4423            // Zero reserved fields.
4424            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4425
4426            // Safety:
4427            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4428            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4429            //   envelope_size bytes, there is always sufficient room.
4430            fidl::encoding::encode_in_envelope_optional::<u8, D>(
4431                self.num_threads.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4432                encoder,
4433                offset + cur_offset,
4434                depth,
4435            )?;
4436
4437            _prev_end_offset = cur_offset + envelope_size;
4438            if 10 > max_ordinal {
4439                return Ok(());
4440            }
4441
4442            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4443            // are envelope_size bytes.
4444            let cur_offset: usize = (10 - 1) * envelope_size;
4445
4446            // Zero reserved fields.
4447            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4448
4449            // Safety:
4450            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4451            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4452            //   envelope_size bytes, there is always sufficient room.
4453            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4454            self.root_component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4455            encoder, offset + cur_offset, depth
4456        )?;
4457
4458            _prev_end_offset = cur_offset + envelope_size;
4459            if 11 > max_ordinal {
4460                return Ok(());
4461            }
4462
4463            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4464            // are envelope_size bytes.
4465            let cur_offset: usize = (11 - 1) * envelope_size;
4466
4467            // Zero reserved fields.
4468            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4469
4470            // Safety:
4471            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4472            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4473            //   envelope_size bytes, there is always sufficient room.
4474            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
4475            self.component_id_index_path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
4476            encoder, offset + cur_offset, depth
4477        )?;
4478
4479            _prev_end_offset = cur_offset + envelope_size;
4480            if 12 > max_ordinal {
4481                return Ok(());
4482            }
4483
4484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4485            // are envelope_size bytes.
4486            let cur_offset: usize = (12 - 1) * envelope_size;
4487
4488            // Zero reserved fields.
4489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4490
4491            // Safety:
4492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4494            //   envelope_size bytes, there is always sufficient room.
4495            fidl::encoding::encode_in_envelope_optional::<LogDestination, D>(
4496                self.log_destination
4497                    .as_ref()
4498                    .map(<LogDestination as fidl::encoding::ValueTypeMarker>::borrow),
4499                encoder,
4500                offset + cur_offset,
4501                depth,
4502            )?;
4503
4504            _prev_end_offset = cur_offset + envelope_size;
4505            if 13 > max_ordinal {
4506                return Ok(());
4507            }
4508
4509            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4510            // are envelope_size bytes.
4511            let cur_offset: usize = (13 - 1) * envelope_size;
4512
4513            // Zero reserved fields.
4514            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4515
4516            // Safety:
4517            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4518            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4519            //   envelope_size bytes, there is always sufficient room.
4520            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4521                self.log_all_events.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4522                encoder,
4523                offset + cur_offset,
4524                depth,
4525            )?;
4526
4527            _prev_end_offset = cur_offset + envelope_size;
4528            if 14 > max_ordinal {
4529                return Ok(());
4530            }
4531
4532            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4533            // are envelope_size bytes.
4534            let cur_offset: usize = (14 - 1) * envelope_size;
4535
4536            // Zero reserved fields.
4537            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4538
4539            // Safety:
4540            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4541            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4542            //   envelope_size bytes, there is always sufficient room.
4543            fidl::encoding::encode_in_envelope_optional::<BuiltinBootResolver, D>(
4544                self.builtin_boot_resolver
4545                    .as_ref()
4546                    .map(<BuiltinBootResolver as fidl::encoding::ValueTypeMarker>::borrow),
4547                encoder,
4548                offset + cur_offset,
4549                depth,
4550            )?;
4551
4552            _prev_end_offset = cur_offset + envelope_size;
4553            if 16 > max_ordinal {
4554                return Ok(());
4555            }
4556
4557            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4558            // are envelope_size bytes.
4559            let cur_offset: usize = (16 - 1) * envelope_size;
4560
4561            // Zero reserved fields.
4562            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4563
4564            // Safety:
4565            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4566            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4567            //   envelope_size bytes, there is always sufficient room.
4568            fidl::encoding::encode_in_envelope_optional::<RealmBuilderResolverAndRunner, D>(
4569                self.realm_builder_resolver_and_runner.as_ref().map(
4570                    <RealmBuilderResolverAndRunner as fidl::encoding::ValueTypeMarker>::borrow,
4571                ),
4572                encoder,
4573                offset + cur_offset,
4574                depth,
4575            )?;
4576
4577            _prev_end_offset = cur_offset + envelope_size;
4578            if 17 > max_ordinal {
4579                return Ok(());
4580            }
4581
4582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4583            // are envelope_size bytes.
4584            let cur_offset: usize = (17 - 1) * envelope_size;
4585
4586            // Zero reserved fields.
4587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4588
4589            // Safety:
4590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4592            //   envelope_size bytes, there is always sufficient room.
4593            fidl::encoding::encode_in_envelope_optional::<
4594                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4595                D,
4596            >(
4597                self.builtin_capabilities.as_ref().map(
4598                    <fidl::encoding::UnboundedVector<
4599                        fidl_fuchsia_component_decl__common::Capability,
4600                    > as fidl::encoding::ValueTypeMarker>::borrow,
4601                ),
4602                encoder,
4603                offset + cur_offset,
4604                depth,
4605            )?;
4606
4607            _prev_end_offset = cur_offset + envelope_size;
4608            if 18 > max_ordinal {
4609                return Ok(());
4610            }
4611
4612            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4613            // are envelope_size bytes.
4614            let cur_offset: usize = (18 - 1) * envelope_size;
4615
4616            // Zero reserved fields.
4617            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4618
4619            // Safety:
4620            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4621            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4622            //   envelope_size bytes, there is always sufficient room.
4623            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4624                self.enable_introspection
4625                    .as_ref()
4626                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4627                encoder,
4628                offset + cur_offset,
4629                depth,
4630            )?;
4631
4632            _prev_end_offset = cur_offset + envelope_size;
4633            if 19 > max_ordinal {
4634                return Ok(());
4635            }
4636
4637            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4638            // are envelope_size bytes.
4639            let cur_offset: usize = (19 - 1) * envelope_size;
4640
4641            // Zero reserved fields.
4642            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4643
4644            // Safety:
4645            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4646            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4647            //   envelope_size bytes, there is always sufficient room.
4648            fidl::encoding::encode_in_envelope_optional::<AbiRevisionPolicy, D>(
4649                self.abi_revision_policy
4650                    .as_ref()
4651                    .map(<AbiRevisionPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4652                encoder,
4653                offset + cur_offset,
4654                depth,
4655            )?;
4656
4657            _prev_end_offset = cur_offset + envelope_size;
4658            if 20 > max_ordinal {
4659                return Ok(());
4660            }
4661
4662            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4663            // are envelope_size bytes.
4664            let cur_offset: usize = (20 - 1) * envelope_size;
4665
4666            // Zero reserved fields.
4667            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4668
4669            // Safety:
4670            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4671            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4672            //   envelope_size bytes, there is always sufficient room.
4673            fidl::encoding::encode_in_envelope_optional::<VmexSource, D>(
4674                self.vmex_source
4675                    .as_ref()
4676                    .map(<VmexSource as fidl::encoding::ValueTypeMarker>::borrow),
4677                encoder,
4678                offset + cur_offset,
4679                depth,
4680            )?;
4681
4682            _prev_end_offset = cur_offset + envelope_size;
4683            if 21 > max_ordinal {
4684                return Ok(());
4685            }
4686
4687            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4688            // are envelope_size bytes.
4689            let cur_offset: usize = (21 - 1) * envelope_size;
4690
4691            // Zero reserved fields.
4692            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4693
4694            // Safety:
4695            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4696            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4697            //   envelope_size bytes, there is always sufficient room.
4698            fidl::encoding::encode_in_envelope_optional::<HealthCheck, D>(
4699                self.health_check
4700                    .as_ref()
4701                    .map(<HealthCheck as fidl::encoding::ValueTypeMarker>::borrow),
4702                encoder,
4703                offset + cur_offset,
4704                depth,
4705            )?;
4706
4707            _prev_end_offset = cur_offset + envelope_size;
4708            if 22 > max_ordinal {
4709                return Ok(());
4710            }
4711
4712            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4713            // are envelope_size bytes.
4714            let cur_offset: usize = (22 - 1) * envelope_size;
4715
4716            // Zero reserved fields.
4717            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4718
4719            // Safety:
4720            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4721            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4722            //   envelope_size bytes, there is always sufficient room.
4723            fidl::encoding::encode_in_envelope_optional::<TraceProvider, D>(
4724                self.trace_provider
4725                    .as_ref()
4726                    .map(<TraceProvider as fidl::encoding::ValueTypeMarker>::borrow),
4727                encoder,
4728                offset + cur_offset,
4729                depth,
4730            )?;
4731
4732            _prev_end_offset = cur_offset + envelope_size;
4733
4734            Ok(())
4735        }
4736    }
4737
4738    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
4739        #[inline(always)]
4740        fn new_empty() -> Self {
4741            Self::default()
4742        }
4743
4744        unsafe fn decode(
4745            &mut self,
4746            decoder: &mut fidl::encoding::Decoder<'_, D>,
4747            offset: usize,
4748            mut depth: fidl::encoding::Depth,
4749        ) -> fidl::Result<()> {
4750            decoder.debug_check_bounds::<Self>(offset);
4751            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4752                None => return Err(fidl::Error::NotNullable),
4753                Some(len) => len,
4754            };
4755            // Calling decoder.out_of_line_offset(0) is not allowed.
4756            if len == 0 {
4757                return Ok(());
4758            };
4759            depth.increment()?;
4760            let envelope_size = 8;
4761            let bytes_len = len * envelope_size;
4762            let offset = decoder.out_of_line_offset(bytes_len)?;
4763            // Decode the envelope for each type.
4764            let mut _next_ordinal_to_read = 0;
4765            let mut next_offset = offset;
4766            let end_offset = offset + bytes_len;
4767            _next_ordinal_to_read += 1;
4768            if next_offset >= end_offset {
4769                return Ok(());
4770            }
4771
4772            // Decode unknown envelopes for gaps in ordinals.
4773            while _next_ordinal_to_read < 1 {
4774                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4775                _next_ordinal_to_read += 1;
4776                next_offset += envelope_size;
4777            }
4778
4779            let next_out_of_line = decoder.next_out_of_line();
4780            let handles_before = decoder.remaining_handles();
4781            if let Some((inlined, num_bytes, num_handles)) =
4782                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4783            {
4784                let member_inline_size =
4785                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4786                if inlined != (member_inline_size <= 4) {
4787                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4788                }
4789                let inner_offset;
4790                let mut inner_depth = depth.clone();
4791                if inlined {
4792                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4793                    inner_offset = next_offset;
4794                } else {
4795                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4796                    inner_depth.increment()?;
4797                }
4798                let val_ref = self.debug.get_or_insert_with(|| fidl::new_empty!(bool, D));
4799                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4800                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4801                {
4802                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4803                }
4804                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4805                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4806                }
4807            }
4808
4809            next_offset += envelope_size;
4810            _next_ordinal_to_read += 1;
4811            if next_offset >= end_offset {
4812                return Ok(());
4813            }
4814
4815            // Decode unknown envelopes for gaps in ordinals.
4816            while _next_ordinal_to_read < 2 {
4817                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4818                _next_ordinal_to_read += 1;
4819                next_offset += envelope_size;
4820            }
4821
4822            let next_out_of_line = decoder.next_out_of_line();
4823            let handles_before = decoder.remaining_handles();
4824            if let Some((inlined, num_bytes, num_handles)) =
4825                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4826            {
4827                let member_inline_size =
4828                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4829                if inlined != (member_inline_size <= 4) {
4830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4831                }
4832                let inner_offset;
4833                let mut inner_depth = depth.clone();
4834                if inlined {
4835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4836                    inner_offset = next_offset;
4837                } else {
4838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4839                    inner_depth.increment()?;
4840                }
4841                let val_ref =
4842                    self.list_children_batch_size.get_or_insert_with(|| fidl::new_empty!(u32, D));
4843                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4844                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4845                {
4846                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4847                }
4848                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4849                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4850                }
4851            }
4852
4853            next_offset += envelope_size;
4854            _next_ordinal_to_read += 1;
4855            if next_offset >= end_offset {
4856                return Ok(());
4857            }
4858
4859            // Decode unknown envelopes for gaps in ordinals.
4860            while _next_ordinal_to_read < 3 {
4861                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4862                _next_ordinal_to_read += 1;
4863                next_offset += envelope_size;
4864            }
4865
4866            let next_out_of_line = decoder.next_out_of_line();
4867            let handles_before = decoder.remaining_handles();
4868            if let Some((inlined, num_bytes, num_handles)) =
4869                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4870            {
4871                let member_inline_size =
4872                    <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4873                if inlined != (member_inline_size <= 4) {
4874                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4875                }
4876                let inner_offset;
4877                let mut inner_depth = depth.clone();
4878                if inlined {
4879                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4880                    inner_offset = next_offset;
4881                } else {
4882                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4883                    inner_depth.increment()?;
4884                }
4885                let val_ref =
4886                    self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
4887                fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
4888                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4889                {
4890                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4891                }
4892                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4893                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4894                }
4895            }
4896
4897            next_offset += envelope_size;
4898            _next_ordinal_to_read += 1;
4899            if next_offset >= end_offset {
4900                return Ok(());
4901            }
4902
4903            // Decode unknown envelopes for gaps in ordinals.
4904            while _next_ordinal_to_read < 4 {
4905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4906                _next_ordinal_to_read += 1;
4907                next_offset += envelope_size;
4908            }
4909
4910            let next_out_of_line = decoder.next_out_of_line();
4911            let handles_before = decoder.remaining_handles();
4912            if let Some((inlined, num_bytes, num_handles)) =
4913                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4914            {
4915                let member_inline_size = <fidl::encoding::UnboundedVector<
4916                    fidl_fuchsia_component_decl__common::Capability,
4917                > as fidl::encoding::TypeMarker>::inline_size(
4918                    decoder.context
4919                );
4920                if inlined != (member_inline_size <= 4) {
4921                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4922                }
4923                let inner_offset;
4924                let mut inner_depth = depth.clone();
4925                if inlined {
4926                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4927                    inner_offset = next_offset;
4928                } else {
4929                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4930                    inner_depth.increment()?;
4931                }
4932                let val_ref = self.namespace_capabilities.get_or_insert_with(|| {
4933                    fidl::new_empty!(
4934                        fidl::encoding::UnboundedVector<
4935                            fidl_fuchsia_component_decl__common::Capability,
4936                        >,
4937                        D
4938                    )
4939                });
4940                fidl::decode!(
4941                    fidl::encoding::UnboundedVector<
4942                        fidl_fuchsia_component_decl__common::Capability,
4943                    >,
4944                    D,
4945                    val_ref,
4946                    decoder,
4947                    inner_offset,
4948                    inner_depth
4949                )?;
4950                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4951                {
4952                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4953                }
4954                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4955                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4956                }
4957            }
4958
4959            next_offset += envelope_size;
4960            _next_ordinal_to_read += 1;
4961            if next_offset >= end_offset {
4962                return Ok(());
4963            }
4964
4965            // Decode unknown envelopes for gaps in ordinals.
4966            while _next_ordinal_to_read < 5 {
4967                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4968                _next_ordinal_to_read += 1;
4969                next_offset += envelope_size;
4970            }
4971
4972            let next_out_of_line = decoder.next_out_of_line();
4973            let handles_before = decoder.remaining_handles();
4974            if let Some((inlined, num_bytes, num_handles)) =
4975                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4976            {
4977                let member_inline_size =
4978                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4979                if inlined != (member_inline_size <= 4) {
4980                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4981                }
4982                let inner_offset;
4983                let mut inner_depth = depth.clone();
4984                if inlined {
4985                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4986                    inner_offset = next_offset;
4987                } else {
4988                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4989                    inner_depth.increment()?;
4990                }
4991                let val_ref = self
4992                    .use_builtin_process_launcher
4993                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
4994                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4995                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4996                {
4997                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4998                }
4999                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5000                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5001                }
5002            }
5003
5004            next_offset += envelope_size;
5005            _next_ordinal_to_read += 1;
5006            if next_offset >= end_offset {
5007                return Ok(());
5008            }
5009
5010            // Decode unknown envelopes for gaps in ordinals.
5011            while _next_ordinal_to_read < 6 {
5012                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5013                _next_ordinal_to_read += 1;
5014                next_offset += envelope_size;
5015            }
5016
5017            let next_out_of_line = decoder.next_out_of_line();
5018            let handles_before = decoder.remaining_handles();
5019            if let Some((inlined, num_bytes, num_handles)) =
5020                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5021            {
5022                let member_inline_size =
5023                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5024                if inlined != (member_inline_size <= 4) {
5025                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5026                }
5027                let inner_offset;
5028                let mut inner_depth = depth.clone();
5029                if inlined {
5030                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5031                    inner_offset = next_offset;
5032                } else {
5033                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5034                    inner_depth.increment()?;
5035                }
5036                let val_ref =
5037                    self.maintain_utc_clock.get_or_insert_with(|| fidl::new_empty!(bool, D));
5038                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5039                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5040                {
5041                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5042                }
5043                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5044                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5045                }
5046            }
5047
5048            next_offset += envelope_size;
5049            _next_ordinal_to_read += 1;
5050            if next_offset >= end_offset {
5051                return Ok(());
5052            }
5053
5054            // Decode unknown envelopes for gaps in ordinals.
5055            while _next_ordinal_to_read < 7 {
5056                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5057                _next_ordinal_to_read += 1;
5058                next_offset += envelope_size;
5059            }
5060
5061            let next_out_of_line = decoder.next_out_of_line();
5062            let handles_before = decoder.remaining_handles();
5063            if let Some((inlined, num_bytes, num_handles)) =
5064                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5065            {
5066                let member_inline_size =
5067                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5068                if inlined != (member_inline_size <= 4) {
5069                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5070                }
5071                let inner_offset;
5072                let mut inner_depth = depth.clone();
5073                if inlined {
5074                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5075                    inner_offset = next_offset;
5076                } else {
5077                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5078                    inner_depth.increment()?;
5079                }
5080                let val_ref = self.num_threads.get_or_insert_with(|| fidl::new_empty!(u8, D));
5081                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5082                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5083                {
5084                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5085                }
5086                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5087                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5088                }
5089            }
5090
5091            next_offset += envelope_size;
5092            _next_ordinal_to_read += 1;
5093            if next_offset >= end_offset {
5094                return Ok(());
5095            }
5096
5097            // Decode unknown envelopes for gaps in ordinals.
5098            while _next_ordinal_to_read < 10 {
5099                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5100                _next_ordinal_to_read += 1;
5101                next_offset += envelope_size;
5102            }
5103
5104            let next_out_of_line = decoder.next_out_of_line();
5105            let handles_before = decoder.remaining_handles();
5106            if let Some((inlined, num_bytes, num_handles)) =
5107                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5108            {
5109                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5110                if inlined != (member_inline_size <= 4) {
5111                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5112                }
5113                let inner_offset;
5114                let mut inner_depth = depth.clone();
5115                if inlined {
5116                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5117                    inner_offset = next_offset;
5118                } else {
5119                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5120                    inner_depth.increment()?;
5121                }
5122                let val_ref = self.root_component_url.get_or_insert_with(|| {
5123                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5124                });
5125                fidl::decode!(
5126                    fidl::encoding::BoundedString<4096>,
5127                    D,
5128                    val_ref,
5129                    decoder,
5130                    inner_offset,
5131                    inner_depth
5132                )?;
5133                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5134                {
5135                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5136                }
5137                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5138                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5139                }
5140            }
5141
5142            next_offset += envelope_size;
5143            _next_ordinal_to_read += 1;
5144            if next_offset >= end_offset {
5145                return Ok(());
5146            }
5147
5148            // Decode unknown envelopes for gaps in ordinals.
5149            while _next_ordinal_to_read < 11 {
5150                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5151                _next_ordinal_to_read += 1;
5152                next_offset += envelope_size;
5153            }
5154
5155            let next_out_of_line = decoder.next_out_of_line();
5156            let handles_before = decoder.remaining_handles();
5157            if let Some((inlined, num_bytes, num_handles)) =
5158                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5159            {
5160                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5161                if inlined != (member_inline_size <= 4) {
5162                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5163                }
5164                let inner_offset;
5165                let mut inner_depth = depth.clone();
5166                if inlined {
5167                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5168                    inner_offset = next_offset;
5169                } else {
5170                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5171                    inner_depth.increment()?;
5172                }
5173                let val_ref = self.component_id_index_path.get_or_insert_with(|| {
5174                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
5175                });
5176                fidl::decode!(
5177                    fidl::encoding::BoundedString<4095>,
5178                    D,
5179                    val_ref,
5180                    decoder,
5181                    inner_offset,
5182                    inner_depth
5183                )?;
5184                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5185                {
5186                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5187                }
5188                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5189                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5190                }
5191            }
5192
5193            next_offset += envelope_size;
5194            _next_ordinal_to_read += 1;
5195            if next_offset >= end_offset {
5196                return Ok(());
5197            }
5198
5199            // Decode unknown envelopes for gaps in ordinals.
5200            while _next_ordinal_to_read < 12 {
5201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5202                _next_ordinal_to_read += 1;
5203                next_offset += envelope_size;
5204            }
5205
5206            let next_out_of_line = decoder.next_out_of_line();
5207            let handles_before = decoder.remaining_handles();
5208            if let Some((inlined, num_bytes, num_handles)) =
5209                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5210            {
5211                let member_inline_size =
5212                    <LogDestination as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5213                if inlined != (member_inline_size <= 4) {
5214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5215                }
5216                let inner_offset;
5217                let mut inner_depth = depth.clone();
5218                if inlined {
5219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5220                    inner_offset = next_offset;
5221                } else {
5222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5223                    inner_depth.increment()?;
5224                }
5225                let val_ref =
5226                    self.log_destination.get_or_insert_with(|| fidl::new_empty!(LogDestination, D));
5227                fidl::decode!(LogDestination, D, val_ref, decoder, inner_offset, inner_depth)?;
5228                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5229                {
5230                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5231                }
5232                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5233                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5234                }
5235            }
5236
5237            next_offset += envelope_size;
5238            _next_ordinal_to_read += 1;
5239            if next_offset >= end_offset {
5240                return Ok(());
5241            }
5242
5243            // Decode unknown envelopes for gaps in ordinals.
5244            while _next_ordinal_to_read < 13 {
5245                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5246                _next_ordinal_to_read += 1;
5247                next_offset += envelope_size;
5248            }
5249
5250            let next_out_of_line = decoder.next_out_of_line();
5251            let handles_before = decoder.remaining_handles();
5252            if let Some((inlined, num_bytes, num_handles)) =
5253                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5254            {
5255                let member_inline_size =
5256                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5257                if inlined != (member_inline_size <= 4) {
5258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5259                }
5260                let inner_offset;
5261                let mut inner_depth = depth.clone();
5262                if inlined {
5263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5264                    inner_offset = next_offset;
5265                } else {
5266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5267                    inner_depth.increment()?;
5268                }
5269                let val_ref = self.log_all_events.get_or_insert_with(|| fidl::new_empty!(bool, D));
5270                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5272                {
5273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5274                }
5275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5277                }
5278            }
5279
5280            next_offset += envelope_size;
5281            _next_ordinal_to_read += 1;
5282            if next_offset >= end_offset {
5283                return Ok(());
5284            }
5285
5286            // Decode unknown envelopes for gaps in ordinals.
5287            while _next_ordinal_to_read < 14 {
5288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5289                _next_ordinal_to_read += 1;
5290                next_offset += envelope_size;
5291            }
5292
5293            let next_out_of_line = decoder.next_out_of_line();
5294            let handles_before = decoder.remaining_handles();
5295            if let Some((inlined, num_bytes, num_handles)) =
5296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5297            {
5298                let member_inline_size =
5299                    <BuiltinBootResolver as fidl::encoding::TypeMarker>::inline_size(
5300                        decoder.context,
5301                    );
5302                if inlined != (member_inline_size <= 4) {
5303                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5304                }
5305                let inner_offset;
5306                let mut inner_depth = depth.clone();
5307                if inlined {
5308                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5309                    inner_offset = next_offset;
5310                } else {
5311                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5312                    inner_depth.increment()?;
5313                }
5314                let val_ref = self
5315                    .builtin_boot_resolver
5316                    .get_or_insert_with(|| fidl::new_empty!(BuiltinBootResolver, D));
5317                fidl::decode!(BuiltinBootResolver, D, val_ref, decoder, inner_offset, inner_depth)?;
5318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5319                {
5320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5321                }
5322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5324                }
5325            }
5326
5327            next_offset += envelope_size;
5328            _next_ordinal_to_read += 1;
5329            if next_offset >= end_offset {
5330                return Ok(());
5331            }
5332
5333            // Decode unknown envelopes for gaps in ordinals.
5334            while _next_ordinal_to_read < 16 {
5335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5336                _next_ordinal_to_read += 1;
5337                next_offset += envelope_size;
5338            }
5339
5340            let next_out_of_line = decoder.next_out_of_line();
5341            let handles_before = decoder.remaining_handles();
5342            if let Some((inlined, num_bytes, num_handles)) =
5343                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5344            {
5345                let member_inline_size =
5346                    <RealmBuilderResolverAndRunner as fidl::encoding::TypeMarker>::inline_size(
5347                        decoder.context,
5348                    );
5349                if inlined != (member_inline_size <= 4) {
5350                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5351                }
5352                let inner_offset;
5353                let mut inner_depth = depth.clone();
5354                if inlined {
5355                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5356                    inner_offset = next_offset;
5357                } else {
5358                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5359                    inner_depth.increment()?;
5360                }
5361                let val_ref = self
5362                    .realm_builder_resolver_and_runner
5363                    .get_or_insert_with(|| fidl::new_empty!(RealmBuilderResolverAndRunner, D));
5364                fidl::decode!(
5365                    RealmBuilderResolverAndRunner,
5366                    D,
5367                    val_ref,
5368                    decoder,
5369                    inner_offset,
5370                    inner_depth
5371                )?;
5372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5373                {
5374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5375                }
5376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5378                }
5379            }
5380
5381            next_offset += envelope_size;
5382            _next_ordinal_to_read += 1;
5383            if next_offset >= end_offset {
5384                return Ok(());
5385            }
5386
5387            // Decode unknown envelopes for gaps in ordinals.
5388            while _next_ordinal_to_read < 17 {
5389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5390                _next_ordinal_to_read += 1;
5391                next_offset += envelope_size;
5392            }
5393
5394            let next_out_of_line = decoder.next_out_of_line();
5395            let handles_before = decoder.remaining_handles();
5396            if let Some((inlined, num_bytes, num_handles)) =
5397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5398            {
5399                let member_inline_size = <fidl::encoding::UnboundedVector<
5400                    fidl_fuchsia_component_decl__common::Capability,
5401                > as fidl::encoding::TypeMarker>::inline_size(
5402                    decoder.context
5403                );
5404                if inlined != (member_inline_size <= 4) {
5405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5406                }
5407                let inner_offset;
5408                let mut inner_depth = depth.clone();
5409                if inlined {
5410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5411                    inner_offset = next_offset;
5412                } else {
5413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5414                    inner_depth.increment()?;
5415                }
5416                let val_ref = self.builtin_capabilities.get_or_insert_with(|| {
5417                    fidl::new_empty!(
5418                        fidl::encoding::UnboundedVector<
5419                            fidl_fuchsia_component_decl__common::Capability,
5420                        >,
5421                        D
5422                    )
5423                });
5424                fidl::decode!(
5425                    fidl::encoding::UnboundedVector<
5426                        fidl_fuchsia_component_decl__common::Capability,
5427                    >,
5428                    D,
5429                    val_ref,
5430                    decoder,
5431                    inner_offset,
5432                    inner_depth
5433                )?;
5434                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5435                {
5436                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5437                }
5438                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5439                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5440                }
5441            }
5442
5443            next_offset += envelope_size;
5444            _next_ordinal_to_read += 1;
5445            if next_offset >= end_offset {
5446                return Ok(());
5447            }
5448
5449            // Decode unknown envelopes for gaps in ordinals.
5450            while _next_ordinal_to_read < 18 {
5451                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5452                _next_ordinal_to_read += 1;
5453                next_offset += envelope_size;
5454            }
5455
5456            let next_out_of_line = decoder.next_out_of_line();
5457            let handles_before = decoder.remaining_handles();
5458            if let Some((inlined, num_bytes, num_handles)) =
5459                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5460            {
5461                let member_inline_size =
5462                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5463                if inlined != (member_inline_size <= 4) {
5464                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5465                }
5466                let inner_offset;
5467                let mut inner_depth = depth.clone();
5468                if inlined {
5469                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5470                    inner_offset = next_offset;
5471                } else {
5472                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5473                    inner_depth.increment()?;
5474                }
5475                let val_ref =
5476                    self.enable_introspection.get_or_insert_with(|| fidl::new_empty!(bool, D));
5477                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5478                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5479                {
5480                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5481                }
5482                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5483                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5484                }
5485            }
5486
5487            next_offset += envelope_size;
5488            _next_ordinal_to_read += 1;
5489            if next_offset >= end_offset {
5490                return Ok(());
5491            }
5492
5493            // Decode unknown envelopes for gaps in ordinals.
5494            while _next_ordinal_to_read < 19 {
5495                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5496                _next_ordinal_to_read += 1;
5497                next_offset += envelope_size;
5498            }
5499
5500            let next_out_of_line = decoder.next_out_of_line();
5501            let handles_before = decoder.remaining_handles();
5502            if let Some((inlined, num_bytes, num_handles)) =
5503                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5504            {
5505                let member_inline_size =
5506                    <AbiRevisionPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5507                if inlined != (member_inline_size <= 4) {
5508                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5509                }
5510                let inner_offset;
5511                let mut inner_depth = depth.clone();
5512                if inlined {
5513                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5514                    inner_offset = next_offset;
5515                } else {
5516                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5517                    inner_depth.increment()?;
5518                }
5519                let val_ref = self
5520                    .abi_revision_policy
5521                    .get_or_insert_with(|| fidl::new_empty!(AbiRevisionPolicy, D));
5522                fidl::decode!(AbiRevisionPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
5523                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5524                {
5525                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5526                }
5527                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5528                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5529                }
5530            }
5531
5532            next_offset += envelope_size;
5533            _next_ordinal_to_read += 1;
5534            if next_offset >= end_offset {
5535                return Ok(());
5536            }
5537
5538            // Decode unknown envelopes for gaps in ordinals.
5539            while _next_ordinal_to_read < 20 {
5540                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5541                _next_ordinal_to_read += 1;
5542                next_offset += envelope_size;
5543            }
5544
5545            let next_out_of_line = decoder.next_out_of_line();
5546            let handles_before = decoder.remaining_handles();
5547            if let Some((inlined, num_bytes, num_handles)) =
5548                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5549            {
5550                let member_inline_size =
5551                    <VmexSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5552                if inlined != (member_inline_size <= 4) {
5553                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5554                }
5555                let inner_offset;
5556                let mut inner_depth = depth.clone();
5557                if inlined {
5558                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5559                    inner_offset = next_offset;
5560                } else {
5561                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5562                    inner_depth.increment()?;
5563                }
5564                let val_ref =
5565                    self.vmex_source.get_or_insert_with(|| fidl::new_empty!(VmexSource, D));
5566                fidl::decode!(VmexSource, D, val_ref, decoder, inner_offset, inner_depth)?;
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            _next_ordinal_to_read += 1;
5578            if next_offset >= end_offset {
5579                return Ok(());
5580            }
5581
5582            // Decode unknown envelopes for gaps in ordinals.
5583            while _next_ordinal_to_read < 21 {
5584                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5585                _next_ordinal_to_read += 1;
5586                next_offset += envelope_size;
5587            }
5588
5589            let next_out_of_line = decoder.next_out_of_line();
5590            let handles_before = decoder.remaining_handles();
5591            if let Some((inlined, num_bytes, num_handles)) =
5592                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5593            {
5594                let member_inline_size =
5595                    <HealthCheck as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5596                if inlined != (member_inline_size <= 4) {
5597                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5598                }
5599                let inner_offset;
5600                let mut inner_depth = depth.clone();
5601                if inlined {
5602                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5603                    inner_offset = next_offset;
5604                } else {
5605                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5606                    inner_depth.increment()?;
5607                }
5608                let val_ref =
5609                    self.health_check.get_or_insert_with(|| fidl::new_empty!(HealthCheck, D));
5610                fidl::decode!(HealthCheck, D, val_ref, decoder, inner_offset, inner_depth)?;
5611                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5612                {
5613                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5614                }
5615                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5616                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5617                }
5618            }
5619
5620            next_offset += envelope_size;
5621            _next_ordinal_to_read += 1;
5622            if next_offset >= end_offset {
5623                return Ok(());
5624            }
5625
5626            // Decode unknown envelopes for gaps in ordinals.
5627            while _next_ordinal_to_read < 22 {
5628                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5629                _next_ordinal_to_read += 1;
5630                next_offset += envelope_size;
5631            }
5632
5633            let next_out_of_line = decoder.next_out_of_line();
5634            let handles_before = decoder.remaining_handles();
5635            if let Some((inlined, num_bytes, num_handles)) =
5636                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5637            {
5638                let member_inline_size =
5639                    <TraceProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5640                if inlined != (member_inline_size <= 4) {
5641                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5642                }
5643                let inner_offset;
5644                let mut inner_depth = depth.clone();
5645                if inlined {
5646                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5647                    inner_offset = next_offset;
5648                } else {
5649                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5650                    inner_depth.increment()?;
5651                }
5652                let val_ref =
5653                    self.trace_provider.get_or_insert_with(|| fidl::new_empty!(TraceProvider, D));
5654                fidl::decode!(TraceProvider, D, val_ref, decoder, inner_offset, inner_depth)?;
5655                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5656                {
5657                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5658                }
5659                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5660                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5661                }
5662            }
5663
5664            next_offset += envelope_size;
5665
5666            // Decode the remaining unknown envelopes.
5667            while next_offset < end_offset {
5668                _next_ordinal_to_read += 1;
5669                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5670                next_offset += envelope_size;
5671            }
5672
5673            Ok(())
5674        }
5675    }
5676
5677    impl DebugRegistrationAllowlistEntry {
5678        #[inline(always)]
5679        fn max_ordinal_present(&self) -> u64 {
5680            if let Some(_) = self.environment_name {
5681                return 4;
5682            }
5683            if let Some(_) = self.moniker {
5684                return 3;
5685            }
5686            if let Some(_) = self.debug {
5687                return 2;
5688            }
5689            if let Some(_) = self.name {
5690                return 1;
5691            }
5692            0
5693        }
5694    }
5695
5696    impl fidl::encoding::ValueTypeMarker for DebugRegistrationAllowlistEntry {
5697        type Borrowed<'a> = &'a Self;
5698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5699            value
5700        }
5701    }
5702
5703    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationAllowlistEntry {
5704        type Owned = Self;
5705
5706        #[inline(always)]
5707        fn inline_align(_context: fidl::encoding::Context) -> usize {
5708            8
5709        }
5710
5711        #[inline(always)]
5712        fn inline_size(_context: fidl::encoding::Context) -> usize {
5713            16
5714        }
5715    }
5716
5717    unsafe impl<D: fidl::encoding::ResourceDialect>
5718        fidl::encoding::Encode<DebugRegistrationAllowlistEntry, D>
5719        for &DebugRegistrationAllowlistEntry
5720    {
5721        unsafe fn encode(
5722            self,
5723            encoder: &mut fidl::encoding::Encoder<'_, D>,
5724            offset: usize,
5725            mut depth: fidl::encoding::Depth,
5726        ) -> fidl::Result<()> {
5727            encoder.debug_check_bounds::<DebugRegistrationAllowlistEntry>(offset);
5728            // Vector header
5729            let max_ordinal: u64 = self.max_ordinal_present();
5730            encoder.write_num(max_ordinal, offset);
5731            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5732            // Calling encoder.out_of_line_offset(0) is not allowed.
5733            if max_ordinal == 0 {
5734                return Ok(());
5735            }
5736            depth.increment()?;
5737            let envelope_size = 8;
5738            let bytes_len = max_ordinal as usize * envelope_size;
5739            #[allow(unused_variables)]
5740            let offset = encoder.out_of_line_offset(bytes_len);
5741            let mut _prev_end_offset: usize = 0;
5742            if 1 > max_ordinal {
5743                return Ok(());
5744            }
5745
5746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5747            // are envelope_size bytes.
5748            let cur_offset: usize = (1 - 1) * envelope_size;
5749
5750            // Zero reserved fields.
5751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5752
5753            // Safety:
5754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5756            //   envelope_size bytes, there is always sufficient room.
5757            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5758                self.name.as_ref().map(
5759                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5760                ),
5761                encoder,
5762                offset + cur_offset,
5763                depth,
5764            )?;
5765
5766            _prev_end_offset = cur_offset + envelope_size;
5767            if 2 > max_ordinal {
5768                return Ok(());
5769            }
5770
5771            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5772            // are envelope_size bytes.
5773            let cur_offset: usize = (2 - 1) * envelope_size;
5774
5775            // Zero reserved fields.
5776            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5777
5778            // Safety:
5779            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5780            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5781            //   envelope_size bytes, there is always sufficient room.
5782            fidl::encoding::encode_in_envelope_optional::<AllowlistedDebugRegistration, D>(
5783                self.debug
5784                    .as_ref()
5785                    .map(<AllowlistedDebugRegistration as fidl::encoding::ValueTypeMarker>::borrow),
5786                encoder,
5787                offset + cur_offset,
5788                depth,
5789            )?;
5790
5791            _prev_end_offset = cur_offset + envelope_size;
5792            if 3 > max_ordinal {
5793                return Ok(());
5794            }
5795
5796            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5797            // are envelope_size bytes.
5798            let cur_offset: usize = (3 - 1) * envelope_size;
5799
5800            // Zero reserved fields.
5801            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5802
5803            // Safety:
5804            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5805            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5806            //   envelope_size bytes, there is always sufficient room.
5807            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5808            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5809            encoder, offset + cur_offset, depth
5810        )?;
5811
5812            _prev_end_offset = cur_offset + envelope_size;
5813            if 4 > max_ordinal {
5814                return Ok(());
5815            }
5816
5817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5818            // are envelope_size bytes.
5819            let cur_offset: usize = (4 - 1) * envelope_size;
5820
5821            // Zero reserved fields.
5822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5823
5824            // Safety:
5825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5827            //   envelope_size bytes, there is always sufficient room.
5828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5829                self.environment_name.as_ref().map(
5830                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5831                ),
5832                encoder,
5833                offset + cur_offset,
5834                depth,
5835            )?;
5836
5837            _prev_end_offset = cur_offset + envelope_size;
5838
5839            Ok(())
5840        }
5841    }
5842
5843    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5844        for DebugRegistrationAllowlistEntry
5845    {
5846        #[inline(always)]
5847        fn new_empty() -> Self {
5848            Self::default()
5849        }
5850
5851        unsafe fn decode(
5852            &mut self,
5853            decoder: &mut fidl::encoding::Decoder<'_, D>,
5854            offset: usize,
5855            mut depth: fidl::encoding::Depth,
5856        ) -> fidl::Result<()> {
5857            decoder.debug_check_bounds::<Self>(offset);
5858            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5859                None => return Err(fidl::Error::NotNullable),
5860                Some(len) => len,
5861            };
5862            // Calling decoder.out_of_line_offset(0) is not allowed.
5863            if len == 0 {
5864                return Ok(());
5865            };
5866            depth.increment()?;
5867            let envelope_size = 8;
5868            let bytes_len = len * envelope_size;
5869            let offset = decoder.out_of_line_offset(bytes_len)?;
5870            // Decode the envelope for each type.
5871            let mut _next_ordinal_to_read = 0;
5872            let mut next_offset = offset;
5873            let end_offset = offset + bytes_len;
5874            _next_ordinal_to_read += 1;
5875            if next_offset >= end_offset {
5876                return Ok(());
5877            }
5878
5879            // Decode unknown envelopes for gaps in ordinals.
5880            while _next_ordinal_to_read < 1 {
5881                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5882                _next_ordinal_to_read += 1;
5883                next_offset += envelope_size;
5884            }
5885
5886            let next_out_of_line = decoder.next_out_of_line();
5887            let handles_before = decoder.remaining_handles();
5888            if let Some((inlined, num_bytes, num_handles)) =
5889                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5890            {
5891                let member_inline_size =
5892                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5893                        decoder.context,
5894                    );
5895                if inlined != (member_inline_size <= 4) {
5896                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5897                }
5898                let inner_offset;
5899                let mut inner_depth = depth.clone();
5900                if inlined {
5901                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5902                    inner_offset = next_offset;
5903                } else {
5904                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5905                    inner_depth.increment()?;
5906                }
5907                let val_ref = self
5908                    .name
5909                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5910                fidl::decode!(
5911                    fidl::encoding::BoundedString<255>,
5912                    D,
5913                    val_ref,
5914                    decoder,
5915                    inner_offset,
5916                    inner_depth
5917                )?;
5918                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5919                {
5920                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5921                }
5922                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5923                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5924                }
5925            }
5926
5927            next_offset += envelope_size;
5928            _next_ordinal_to_read += 1;
5929            if next_offset >= end_offset {
5930                return Ok(());
5931            }
5932
5933            // Decode unknown envelopes for gaps in ordinals.
5934            while _next_ordinal_to_read < 2 {
5935                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5936                _next_ordinal_to_read += 1;
5937                next_offset += envelope_size;
5938            }
5939
5940            let next_out_of_line = decoder.next_out_of_line();
5941            let handles_before = decoder.remaining_handles();
5942            if let Some((inlined, num_bytes, num_handles)) =
5943                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5944            {
5945                let member_inline_size =
5946                    <AllowlistedDebugRegistration as fidl::encoding::TypeMarker>::inline_size(
5947                        decoder.context,
5948                    );
5949                if inlined != (member_inline_size <= 4) {
5950                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5951                }
5952                let inner_offset;
5953                let mut inner_depth = depth.clone();
5954                if inlined {
5955                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5956                    inner_offset = next_offset;
5957                } else {
5958                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5959                    inner_depth.increment()?;
5960                }
5961                let val_ref = self
5962                    .debug
5963                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedDebugRegistration, D));
5964                fidl::decode!(
5965                    AllowlistedDebugRegistration,
5966                    D,
5967                    val_ref,
5968                    decoder,
5969                    inner_offset,
5970                    inner_depth
5971                )?;
5972                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5973                {
5974                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5975                }
5976                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5977                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5978                }
5979            }
5980
5981            next_offset += envelope_size;
5982            _next_ordinal_to_read += 1;
5983            if next_offset >= end_offset {
5984                return Ok(());
5985            }
5986
5987            // Decode unknown envelopes for gaps in ordinals.
5988            while _next_ordinal_to_read < 3 {
5989                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5990                _next_ordinal_to_read += 1;
5991                next_offset += envelope_size;
5992            }
5993
5994            let next_out_of_line = decoder.next_out_of_line();
5995            let handles_before = decoder.remaining_handles();
5996            if let Some((inlined, num_bytes, num_handles)) =
5997                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5998            {
5999                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6000                if inlined != (member_inline_size <= 4) {
6001                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6002                }
6003                let inner_offset;
6004                let mut inner_depth = depth.clone();
6005                if inlined {
6006                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6007                    inner_offset = next_offset;
6008                } else {
6009                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6010                    inner_depth.increment()?;
6011                }
6012                let val_ref = self.moniker.get_or_insert_with(|| {
6013                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6014                });
6015                fidl::decode!(
6016                    fidl::encoding::BoundedString<4096>,
6017                    D,
6018                    val_ref,
6019                    decoder,
6020                    inner_offset,
6021                    inner_depth
6022                )?;
6023                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6024                {
6025                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6026                }
6027                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6028                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6029                }
6030            }
6031
6032            next_offset += envelope_size;
6033            _next_ordinal_to_read += 1;
6034            if next_offset >= end_offset {
6035                return Ok(());
6036            }
6037
6038            // Decode unknown envelopes for gaps in ordinals.
6039            while _next_ordinal_to_read < 4 {
6040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6041                _next_ordinal_to_read += 1;
6042                next_offset += envelope_size;
6043            }
6044
6045            let next_out_of_line = decoder.next_out_of_line();
6046            let handles_before = decoder.remaining_handles();
6047            if let Some((inlined, num_bytes, num_handles)) =
6048                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6049            {
6050                let member_inline_size =
6051                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6052                        decoder.context,
6053                    );
6054                if inlined != (member_inline_size <= 4) {
6055                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6056                }
6057                let inner_offset;
6058                let mut inner_depth = depth.clone();
6059                if inlined {
6060                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6061                    inner_offset = next_offset;
6062                } else {
6063                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6064                    inner_depth.increment()?;
6065                }
6066                let val_ref = self
6067                    .environment_name
6068                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6069                fidl::decode!(
6070                    fidl::encoding::BoundedString<255>,
6071                    D,
6072                    val_ref,
6073                    decoder,
6074                    inner_offset,
6075                    inner_depth
6076                )?;
6077                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6078                {
6079                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6080                }
6081                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6082                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6083                }
6084            }
6085
6086            next_offset += envelope_size;
6087
6088            // Decode the remaining unknown envelopes.
6089            while next_offset < end_offset {
6090                _next_ordinal_to_read += 1;
6091                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6092                next_offset += envelope_size;
6093            }
6094
6095            Ok(())
6096        }
6097    }
6098
6099    impl DebugRegistrationPolicyAllowlists {
6100        #[inline(always)]
6101        fn max_ordinal_present(&self) -> u64 {
6102            if let Some(_) = self.allowlist {
6103                return 1;
6104            }
6105            0
6106        }
6107    }
6108
6109    impl fidl::encoding::ValueTypeMarker for DebugRegistrationPolicyAllowlists {
6110        type Borrowed<'a> = &'a Self;
6111        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6112            value
6113        }
6114    }
6115
6116    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationPolicyAllowlists {
6117        type Owned = Self;
6118
6119        #[inline(always)]
6120        fn inline_align(_context: fidl::encoding::Context) -> usize {
6121            8
6122        }
6123
6124        #[inline(always)]
6125        fn inline_size(_context: fidl::encoding::Context) -> usize {
6126            16
6127        }
6128    }
6129
6130    unsafe impl<D: fidl::encoding::ResourceDialect>
6131        fidl::encoding::Encode<DebugRegistrationPolicyAllowlists, D>
6132        for &DebugRegistrationPolicyAllowlists
6133    {
6134        unsafe fn encode(
6135            self,
6136            encoder: &mut fidl::encoding::Encoder<'_, D>,
6137            offset: usize,
6138            mut depth: fidl::encoding::Depth,
6139        ) -> fidl::Result<()> {
6140            encoder.debug_check_bounds::<DebugRegistrationPolicyAllowlists>(offset);
6141            // Vector header
6142            let max_ordinal: u64 = self.max_ordinal_present();
6143            encoder.write_num(max_ordinal, offset);
6144            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6145            // Calling encoder.out_of_line_offset(0) is not allowed.
6146            if max_ordinal == 0 {
6147                return Ok(());
6148            }
6149            depth.increment()?;
6150            let envelope_size = 8;
6151            let bytes_len = max_ordinal as usize * envelope_size;
6152            #[allow(unused_variables)]
6153            let offset = encoder.out_of_line_offset(bytes_len);
6154            let mut _prev_end_offset: usize = 0;
6155            if 1 > max_ordinal {
6156                return Ok(());
6157            }
6158
6159            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6160            // are envelope_size bytes.
6161            let cur_offset: usize = (1 - 1) * envelope_size;
6162
6163            // Zero reserved fields.
6164            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6165
6166            // Safety:
6167            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6168            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6169            //   envelope_size bytes, there is always sufficient room.
6170            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D>(
6171            self.allowlist.as_ref().map(<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6172            encoder, offset + cur_offset, depth
6173        )?;
6174
6175            _prev_end_offset = cur_offset + envelope_size;
6176
6177            Ok(())
6178        }
6179    }
6180
6181    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6182        for DebugRegistrationPolicyAllowlists
6183    {
6184        #[inline(always)]
6185        fn new_empty() -> Self {
6186            Self::default()
6187        }
6188
6189        unsafe fn decode(
6190            &mut self,
6191            decoder: &mut fidl::encoding::Decoder<'_, D>,
6192            offset: usize,
6193            mut depth: fidl::encoding::Depth,
6194        ) -> fidl::Result<()> {
6195            decoder.debug_check_bounds::<Self>(offset);
6196            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6197                None => return Err(fidl::Error::NotNullable),
6198                Some(len) => len,
6199            };
6200            // Calling decoder.out_of_line_offset(0) is not allowed.
6201            if len == 0 {
6202                return Ok(());
6203            };
6204            depth.increment()?;
6205            let envelope_size = 8;
6206            let bytes_len = len * envelope_size;
6207            let offset = decoder.out_of_line_offset(bytes_len)?;
6208            // Decode the envelope for each type.
6209            let mut _next_ordinal_to_read = 0;
6210            let mut next_offset = offset;
6211            let end_offset = offset + bytes_len;
6212            _next_ordinal_to_read += 1;
6213            if next_offset >= end_offset {
6214                return Ok(());
6215            }
6216
6217            // Decode unknown envelopes for gaps in ordinals.
6218            while _next_ordinal_to_read < 1 {
6219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6220                _next_ordinal_to_read += 1;
6221                next_offset += envelope_size;
6222            }
6223
6224            let next_out_of_line = decoder.next_out_of_line();
6225            let handles_before = decoder.remaining_handles();
6226            if let Some((inlined, num_bytes, num_handles)) =
6227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6228            {
6229                let member_inline_size = <fidl::encoding::Vector<
6230                    DebugRegistrationAllowlistEntry,
6231                    128,
6232                > as fidl::encoding::TypeMarker>::inline_size(
6233                    decoder.context
6234                );
6235                if inlined != (member_inline_size <= 4) {
6236                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6237                }
6238                let inner_offset;
6239                let mut inner_depth = depth.clone();
6240                if inlined {
6241                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6242                    inner_offset = next_offset;
6243                } else {
6244                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6245                    inner_depth.increment()?;
6246                }
6247                let val_ref =
6248                self.allowlist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D));
6249                fidl::decode!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
6250                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6251                {
6252                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6253                }
6254                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6255                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6256                }
6257            }
6258
6259            next_offset += envelope_size;
6260
6261            // Decode the remaining unknown envelopes.
6262            while next_offset < end_offset {
6263                _next_ordinal_to_read += 1;
6264                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6265                next_offset += envelope_size;
6266            }
6267
6268            Ok(())
6269        }
6270    }
6271
6272    impl Environment {
6273        #[inline(always)]
6274        fn max_ordinal_present(&self) -> u64 {
6275            if let Some(_) = self.moniker {
6276                return 2;
6277            }
6278            if let Some(_) = self.capability {
6279                return 1;
6280            }
6281            0
6282        }
6283    }
6284
6285    impl fidl::encoding::ValueTypeMarker for Environment {
6286        type Borrowed<'a> = &'a Self;
6287        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6288            value
6289        }
6290    }
6291
6292    unsafe impl fidl::encoding::TypeMarker for Environment {
6293        type Owned = Self;
6294
6295        #[inline(always)]
6296        fn inline_align(_context: fidl::encoding::Context) -> usize {
6297            8
6298        }
6299
6300        #[inline(always)]
6301        fn inline_size(_context: fidl::encoding::Context) -> usize {
6302            16
6303        }
6304    }
6305
6306    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
6307        for &Environment
6308    {
6309        unsafe fn encode(
6310            self,
6311            encoder: &mut fidl::encoding::Encoder<'_, D>,
6312            offset: usize,
6313            mut depth: fidl::encoding::Depth,
6314        ) -> fidl::Result<()> {
6315            encoder.debug_check_bounds::<Environment>(offset);
6316            // Vector header
6317            let max_ordinal: u64 = self.max_ordinal_present();
6318            encoder.write_num(max_ordinal, offset);
6319            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6320            // Calling encoder.out_of_line_offset(0) is not allowed.
6321            if max_ordinal == 0 {
6322                return Ok(());
6323            }
6324            depth.increment()?;
6325            let envelope_size = 8;
6326            let bytes_len = max_ordinal as usize * envelope_size;
6327            #[allow(unused_variables)]
6328            let offset = encoder.out_of_line_offset(bytes_len);
6329            let mut _prev_end_offset: usize = 0;
6330            if 1 > max_ordinal {
6331                return Ok(());
6332            }
6333
6334            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6335            // are envelope_size bytes.
6336            let cur_offset: usize = (1 - 1) * envelope_size;
6337
6338            // Zero reserved fields.
6339            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6340
6341            // Safety:
6342            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6343            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6344            //   envelope_size bytes, there is always sufficient room.
6345            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
6346                self.capability
6347                    .as_ref()
6348                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
6349                encoder,
6350                offset + cur_offset,
6351                depth,
6352            )?;
6353
6354            _prev_end_offset = cur_offset + envelope_size;
6355            if 2 > max_ordinal {
6356                return Ok(());
6357            }
6358
6359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6360            // are envelope_size bytes.
6361            let cur_offset: usize = (2 - 1) * envelope_size;
6362
6363            // Zero reserved fields.
6364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6365
6366            // Safety:
6367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6369            //   envelope_size bytes, there is always sufficient room.
6370            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6371            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6372            encoder, offset + cur_offset, depth
6373        )?;
6374
6375            _prev_end_offset = cur_offset + envelope_size;
6376
6377            Ok(())
6378        }
6379    }
6380
6381    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
6382        #[inline(always)]
6383        fn new_empty() -> Self {
6384            Self::default()
6385        }
6386
6387        unsafe fn decode(
6388            &mut self,
6389            decoder: &mut fidl::encoding::Decoder<'_, D>,
6390            offset: usize,
6391            mut depth: fidl::encoding::Depth,
6392        ) -> fidl::Result<()> {
6393            decoder.debug_check_bounds::<Self>(offset);
6394            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6395                None => return Err(fidl::Error::NotNullable),
6396                Some(len) => len,
6397            };
6398            // Calling decoder.out_of_line_offset(0) is not allowed.
6399            if len == 0 {
6400                return Ok(());
6401            };
6402            depth.increment()?;
6403            let envelope_size = 8;
6404            let bytes_len = len * envelope_size;
6405            let offset = decoder.out_of_line_offset(bytes_len)?;
6406            // Decode the envelope for each type.
6407            let mut _next_ordinal_to_read = 0;
6408            let mut next_offset = offset;
6409            let end_offset = offset + bytes_len;
6410            _next_ordinal_to_read += 1;
6411            if next_offset >= end_offset {
6412                return Ok(());
6413            }
6414
6415            // Decode unknown envelopes for gaps in ordinals.
6416            while _next_ordinal_to_read < 1 {
6417                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6418                _next_ordinal_to_read += 1;
6419                next_offset += envelope_size;
6420            }
6421
6422            let next_out_of_line = decoder.next_out_of_line();
6423            let handles_before = decoder.remaining_handles();
6424            if let Some((inlined, num_bytes, num_handles)) =
6425                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6426            {
6427                let member_inline_size =
6428                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
6429                        decoder.context,
6430                    );
6431                if inlined != (member_inline_size <= 4) {
6432                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6433                }
6434                let inner_offset;
6435                let mut inner_depth = depth.clone();
6436                if inlined {
6437                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6438                    inner_offset = next_offset;
6439                } else {
6440                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6441                    inner_depth.increment()?;
6442                }
6443                let val_ref =
6444                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
6445                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
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 < 2 {
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<4096> 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.moniker.get_or_insert_with(|| {
6487                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6488                });
6489                fidl::decode!(
6490                    fidl::encoding::BoundedString<4096>,
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
6508            // Decode the remaining unknown envelopes.
6509            while next_offset < end_offset {
6510                _next_ordinal_to_read += 1;
6511                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6512                next_offset += envelope_size;
6513            }
6514
6515            Ok(())
6516        }
6517    }
6518
6519    impl EnvironmentSource {
6520        #[inline(always)]
6521        fn max_ordinal_present(&self) -> u64 {
6522            if let Some(_) = self.source {
6523                return 2;
6524            }
6525            if let Some(_) = self.source_name {
6526                return 1;
6527            }
6528            0
6529        }
6530    }
6531
6532    impl fidl::encoding::ValueTypeMarker for EnvironmentSource {
6533        type Borrowed<'a> = &'a Self;
6534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6535            value
6536        }
6537    }
6538
6539    unsafe impl fidl::encoding::TypeMarker for EnvironmentSource {
6540        type Owned = Self;
6541
6542        #[inline(always)]
6543        fn inline_align(_context: fidl::encoding::Context) -> usize {
6544            8
6545        }
6546
6547        #[inline(always)]
6548        fn inline_size(_context: fidl::encoding::Context) -> usize {
6549            16
6550        }
6551    }
6552
6553    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentSource, D>
6554        for &EnvironmentSource
6555    {
6556        unsafe fn encode(
6557            self,
6558            encoder: &mut fidl::encoding::Encoder<'_, D>,
6559            offset: usize,
6560            mut depth: fidl::encoding::Depth,
6561        ) -> fidl::Result<()> {
6562            encoder.debug_check_bounds::<EnvironmentSource>(offset);
6563            // Vector header
6564            let max_ordinal: u64 = self.max_ordinal_present();
6565            encoder.write_num(max_ordinal, offset);
6566            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6567            // Calling encoder.out_of_line_offset(0) is not allowed.
6568            if max_ordinal == 0 {
6569                return Ok(());
6570            }
6571            depth.increment()?;
6572            let envelope_size = 8;
6573            let bytes_len = max_ordinal as usize * envelope_size;
6574            #[allow(unused_variables)]
6575            let offset = encoder.out_of_line_offset(bytes_len);
6576            let mut _prev_end_offset: usize = 0;
6577            if 1 > max_ordinal {
6578                return Ok(());
6579            }
6580
6581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6582            // are envelope_size bytes.
6583            let cur_offset: usize = (1 - 1) * envelope_size;
6584
6585            // Zero reserved fields.
6586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6587
6588            // Safety:
6589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6591            //   envelope_size bytes, there is always sufficient room.
6592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
6593            self.source_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
6594            encoder, offset + cur_offset, depth
6595        )?;
6596
6597            _prev_end_offset = cur_offset + envelope_size;
6598            if 2 > max_ordinal {
6599                return Ok(());
6600            }
6601
6602            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6603            // are envelope_size bytes.
6604            let cur_offset: usize = (2 - 1) * envelope_size;
6605
6606            // Zero reserved fields.
6607            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6608
6609            // Safety:
6610            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6611            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6612            //   envelope_size bytes, there is always sufficient room.
6613            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
6614            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
6615            encoder, offset + cur_offset, depth
6616        )?;
6617
6618            _prev_end_offset = cur_offset + envelope_size;
6619
6620            Ok(())
6621        }
6622    }
6623
6624    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentSource {
6625        #[inline(always)]
6626        fn new_empty() -> Self {
6627            Self::default()
6628        }
6629
6630        unsafe fn decode(
6631            &mut self,
6632            decoder: &mut fidl::encoding::Decoder<'_, D>,
6633            offset: usize,
6634            mut depth: fidl::encoding::Depth,
6635        ) -> fidl::Result<()> {
6636            decoder.debug_check_bounds::<Self>(offset);
6637            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6638                None => return Err(fidl::Error::NotNullable),
6639                Some(len) => len,
6640            };
6641            // Calling decoder.out_of_line_offset(0) is not allowed.
6642            if len == 0 {
6643                return Ok(());
6644            };
6645            depth.increment()?;
6646            let envelope_size = 8;
6647            let bytes_len = len * envelope_size;
6648            let offset = decoder.out_of_line_offset(bytes_len)?;
6649            // Decode the envelope for each type.
6650            let mut _next_ordinal_to_read = 0;
6651            let mut next_offset = offset;
6652            let end_offset = offset + bytes_len;
6653            _next_ordinal_to_read += 1;
6654            if next_offset >= end_offset {
6655                return Ok(());
6656            }
6657
6658            // Decode unknown envelopes for gaps in ordinals.
6659            while _next_ordinal_to_read < 1 {
6660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6661                _next_ordinal_to_read += 1;
6662                next_offset += envelope_size;
6663            }
6664
6665            let next_out_of_line = decoder.next_out_of_line();
6666            let handles_before = decoder.remaining_handles();
6667            if let Some((inlined, num_bytes, num_handles)) =
6668                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6669            {
6670                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6671                if inlined != (member_inline_size <= 4) {
6672                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6673                }
6674                let inner_offset;
6675                let mut inner_depth = depth.clone();
6676                if inlined {
6677                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6678                    inner_offset = next_offset;
6679                } else {
6680                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6681                    inner_depth.increment()?;
6682                }
6683                let val_ref = self.source_name.get_or_insert_with(|| {
6684                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6685                });
6686                fidl::decode!(
6687                    fidl::encoding::BoundedString<1024>,
6688                    D,
6689                    val_ref,
6690                    decoder,
6691                    inner_offset,
6692                    inner_depth
6693                )?;
6694                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6695                {
6696                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6697                }
6698                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6699                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6700                }
6701            }
6702
6703            next_offset += envelope_size;
6704            _next_ordinal_to_read += 1;
6705            if next_offset >= end_offset {
6706                return Ok(());
6707            }
6708
6709            // Decode unknown envelopes for gaps in ordinals.
6710            while _next_ordinal_to_read < 2 {
6711                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6712                _next_ordinal_to_read += 1;
6713                next_offset += envelope_size;
6714            }
6715
6716            let next_out_of_line = decoder.next_out_of_line();
6717            let handles_before = decoder.remaining_handles();
6718            if let Some((inlined, num_bytes, num_handles)) =
6719                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6720            {
6721                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6722                if inlined != (member_inline_size <= 4) {
6723                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6724                }
6725                let inner_offset;
6726                let mut inner_depth = depth.clone();
6727                if inlined {
6728                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6729                    inner_offset = next_offset;
6730                } else {
6731                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6732                    inner_depth.increment()?;
6733                }
6734                let val_ref = self.source.get_or_insert_with(|| {
6735                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
6736                });
6737                fidl::decode!(
6738                    fidl_fuchsia_component_decl__common::Ref,
6739                    D,
6740                    val_ref,
6741                    decoder,
6742                    inner_offset,
6743                    inner_depth
6744                )?;
6745                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6746                {
6747                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6748                }
6749                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6750                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6751                }
6752            }
6753
6754            next_offset += envelope_size;
6755
6756            // Decode the remaining unknown envelopes.
6757            while next_offset < end_offset {
6758                _next_ordinal_to_read += 1;
6759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6760                next_offset += envelope_size;
6761            }
6762
6763            Ok(())
6764        }
6765    }
6766
6767    impl EventStreamRouteMetadata {
6768        #[inline(always)]
6769        fn max_ordinal_present(&self) -> u64 {
6770            if let Some(_) = self.scope {
6771                return 2;
6772            }
6773            if let Some(_) = self.scope_moniker {
6774                return 1;
6775            }
6776            0
6777        }
6778    }
6779
6780    impl fidl::encoding::ValueTypeMarker for EventStreamRouteMetadata {
6781        type Borrowed<'a> = &'a Self;
6782        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6783            value
6784        }
6785    }
6786
6787    unsafe impl fidl::encoding::TypeMarker for EventStreamRouteMetadata {
6788        type Owned = Self;
6789
6790        #[inline(always)]
6791        fn inline_align(_context: fidl::encoding::Context) -> usize {
6792            8
6793        }
6794
6795        #[inline(always)]
6796        fn inline_size(_context: fidl::encoding::Context) -> usize {
6797            16
6798        }
6799    }
6800
6801    unsafe impl<D: fidl::encoding::ResourceDialect>
6802        fidl::encoding::Encode<EventStreamRouteMetadata, D> for &EventStreamRouteMetadata
6803    {
6804        unsafe fn encode(
6805            self,
6806            encoder: &mut fidl::encoding::Encoder<'_, D>,
6807            offset: usize,
6808            mut depth: fidl::encoding::Depth,
6809        ) -> fidl::Result<()> {
6810            encoder.debug_check_bounds::<EventStreamRouteMetadata>(offset);
6811            // Vector header
6812            let max_ordinal: u64 = self.max_ordinal_present();
6813            encoder.write_num(max_ordinal, offset);
6814            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6815            // Calling encoder.out_of_line_offset(0) is not allowed.
6816            if max_ordinal == 0 {
6817                return Ok(());
6818            }
6819            depth.increment()?;
6820            let envelope_size = 8;
6821            let bytes_len = max_ordinal as usize * envelope_size;
6822            #[allow(unused_variables)]
6823            let offset = encoder.out_of_line_offset(bytes_len);
6824            let mut _prev_end_offset: usize = 0;
6825            if 1 > max_ordinal {
6826                return Ok(());
6827            }
6828
6829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6830            // are envelope_size bytes.
6831            let cur_offset: usize = (1 - 1) * envelope_size;
6832
6833            // Zero reserved fields.
6834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6835
6836            // Safety:
6837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6839            //   envelope_size bytes, there is always sufficient room.
6840            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6841            self.scope_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6842            encoder, offset + cur_offset, depth
6843        )?;
6844
6845            _prev_end_offset = cur_offset + envelope_size;
6846            if 2 > max_ordinal {
6847                return Ok(());
6848            }
6849
6850            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6851            // are envelope_size bytes.
6852            let cur_offset: usize = (2 - 1) * envelope_size;
6853
6854            // Zero reserved fields.
6855            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6856
6857            // Safety:
6858            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6859            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6860            //   envelope_size bytes, there is always sufficient room.
6861            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>, D>(
6862            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
6863            encoder, offset + cur_offset, depth
6864        )?;
6865
6866            _prev_end_offset = cur_offset + envelope_size;
6867
6868            Ok(())
6869        }
6870    }
6871
6872    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6873        for EventStreamRouteMetadata
6874    {
6875        #[inline(always)]
6876        fn new_empty() -> Self {
6877            Self::default()
6878        }
6879
6880        unsafe fn decode(
6881            &mut self,
6882            decoder: &mut fidl::encoding::Decoder<'_, D>,
6883            offset: usize,
6884            mut depth: fidl::encoding::Depth,
6885        ) -> fidl::Result<()> {
6886            decoder.debug_check_bounds::<Self>(offset);
6887            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6888                None => return Err(fidl::Error::NotNullable),
6889                Some(len) => len,
6890            };
6891            // Calling decoder.out_of_line_offset(0) is not allowed.
6892            if len == 0 {
6893                return Ok(());
6894            };
6895            depth.increment()?;
6896            let envelope_size = 8;
6897            let bytes_len = len * envelope_size;
6898            let offset = decoder.out_of_line_offset(bytes_len)?;
6899            // Decode the envelope for each type.
6900            let mut _next_ordinal_to_read = 0;
6901            let mut next_offset = offset;
6902            let end_offset = offset + bytes_len;
6903            _next_ordinal_to_read += 1;
6904            if next_offset >= end_offset {
6905                return Ok(());
6906            }
6907
6908            // Decode unknown envelopes for gaps in ordinals.
6909            while _next_ordinal_to_read < 1 {
6910                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6911                _next_ordinal_to_read += 1;
6912                next_offset += envelope_size;
6913            }
6914
6915            let next_out_of_line = decoder.next_out_of_line();
6916            let handles_before = decoder.remaining_handles();
6917            if let Some((inlined, num_bytes, num_handles)) =
6918                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6919            {
6920                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6921                if inlined != (member_inline_size <= 4) {
6922                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6923                }
6924                let inner_offset;
6925                let mut inner_depth = depth.clone();
6926                if inlined {
6927                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6928                    inner_offset = next_offset;
6929                } else {
6930                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6931                    inner_depth.increment()?;
6932                }
6933                let val_ref = self.scope_moniker.get_or_insert_with(|| {
6934                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6935                });
6936                fidl::decode!(
6937                    fidl::encoding::BoundedString<4096>,
6938                    D,
6939                    val_ref,
6940                    decoder,
6941                    inner_offset,
6942                    inner_depth
6943                )?;
6944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6945                {
6946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6947                }
6948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6950                }
6951            }
6952
6953            next_offset += envelope_size;
6954            _next_ordinal_to_read += 1;
6955            if next_offset >= end_offset {
6956                return Ok(());
6957            }
6958
6959            // Decode unknown envelopes for gaps in ordinals.
6960            while _next_ordinal_to_read < 2 {
6961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6962                _next_ordinal_to_read += 1;
6963                next_offset += envelope_size;
6964            }
6965
6966            let next_out_of_line = decoder.next_out_of_line();
6967            let handles_before = decoder.remaining_handles();
6968            if let Some((inlined, num_bytes, num_handles)) =
6969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6970            {
6971                let member_inline_size = <fidl::encoding::UnboundedVector<
6972                    fidl_fuchsia_component_decl__common::Ref,
6973                > as fidl::encoding::TypeMarker>::inline_size(
6974                    decoder.context
6975                );
6976                if inlined != (member_inline_size <= 4) {
6977                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6978                }
6979                let inner_offset;
6980                let mut inner_depth = depth.clone();
6981                if inlined {
6982                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6983                    inner_offset = next_offset;
6984                } else {
6985                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6986                    inner_depth.increment()?;
6987                }
6988                let val_ref = self.scope.get_or_insert_with(|| {
6989                    fidl::new_empty!(
6990                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
6991                        D
6992                    )
6993                });
6994                fidl::decode!(
6995                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
6996                    D,
6997                    val_ref,
6998                    decoder,
6999                    inner_offset,
7000                    inner_depth
7001                )?;
7002                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7003                {
7004                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7005                }
7006                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7007                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7008                }
7009            }
7010
7011            next_offset += envelope_size;
7012
7013            // Decode the remaining unknown envelopes.
7014            while next_offset < end_offset {
7015                _next_ordinal_to_read += 1;
7016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7017                next_offset += envelope_size;
7018            }
7019
7020            Ok(())
7021        }
7022    }
7023
7024    impl FilteredAggregateProvider {
7025        #[inline(always)]
7026        fn max_ordinal_present(&self) -> u64 {
7027            if let Some(_) = self.sources {
7028                return 4;
7029            }
7030            if let Some(_) = self.offer_service_decls {
7031                return 3;
7032            }
7033            if let Some(_) = self.moniker {
7034                return 2;
7035            }
7036            if let Some(_) = self.capability {
7037                return 1;
7038            }
7039            0
7040        }
7041    }
7042
7043    impl fidl::encoding::ValueTypeMarker for FilteredAggregateProvider {
7044        type Borrowed<'a> = &'a Self;
7045        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7046            value
7047        }
7048    }
7049
7050    unsafe impl fidl::encoding::TypeMarker for FilteredAggregateProvider {
7051        type Owned = Self;
7052
7053        #[inline(always)]
7054        fn inline_align(_context: fidl::encoding::Context) -> usize {
7055            8
7056        }
7057
7058        #[inline(always)]
7059        fn inline_size(_context: fidl::encoding::Context) -> usize {
7060            16
7061        }
7062    }
7063
7064    unsafe impl<D: fidl::encoding::ResourceDialect>
7065        fidl::encoding::Encode<FilteredAggregateProvider, D> for &FilteredAggregateProvider
7066    {
7067        unsafe fn encode(
7068            self,
7069            encoder: &mut fidl::encoding::Encoder<'_, D>,
7070            offset: usize,
7071            mut depth: fidl::encoding::Depth,
7072        ) -> fidl::Result<()> {
7073            encoder.debug_check_bounds::<FilteredAggregateProvider>(offset);
7074            // Vector header
7075            let max_ordinal: u64 = self.max_ordinal_present();
7076            encoder.write_num(max_ordinal, offset);
7077            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7078            // Calling encoder.out_of_line_offset(0) is not allowed.
7079            if max_ordinal == 0 {
7080                return Ok(());
7081            }
7082            depth.increment()?;
7083            let envelope_size = 8;
7084            let bytes_len = max_ordinal as usize * envelope_size;
7085            #[allow(unused_variables)]
7086            let offset = encoder.out_of_line_offset(bytes_len);
7087            let mut _prev_end_offset: usize = 0;
7088            if 1 > max_ordinal {
7089                return Ok(());
7090            }
7091
7092            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7093            // are envelope_size bytes.
7094            let cur_offset: usize = (1 - 1) * envelope_size;
7095
7096            // Zero reserved fields.
7097            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7098
7099            // Safety:
7100            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7101            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7102            //   envelope_size bytes, there is always sufficient room.
7103            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7104                self.capability
7105                    .as_ref()
7106                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7107                encoder,
7108                offset + cur_offset,
7109                depth,
7110            )?;
7111
7112            _prev_end_offset = cur_offset + envelope_size;
7113            if 2 > max_ordinal {
7114                return Ok(());
7115            }
7116
7117            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7118            // are envelope_size bytes.
7119            let cur_offset: usize = (2 - 1) * envelope_size;
7120
7121            // Zero reserved fields.
7122            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7123
7124            // Safety:
7125            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7126            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7127            //   envelope_size bytes, there is always sufficient room.
7128            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7129            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7130            encoder, offset + cur_offset, depth
7131        )?;
7132
7133            _prev_end_offset = cur_offset + envelope_size;
7134            if 3 > max_ordinal {
7135                return Ok(());
7136            }
7137
7138            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7139            // are envelope_size bytes.
7140            let cur_offset: usize = (3 - 1) * envelope_size;
7141
7142            // Zero reserved fields.
7143            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7144
7145            // Safety:
7146            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7147            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7148            //   envelope_size bytes, there is always sufficient room.
7149            fidl::encoding::encode_in_envelope_optional::<
7150                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::OfferService>,
7151                D,
7152            >(
7153                self.offer_service_decls.as_ref().map(
7154                    <fidl::encoding::UnboundedVector<
7155                        fidl_fuchsia_component_decl__common::OfferService,
7156                    > as fidl::encoding::ValueTypeMarker>::borrow,
7157                ),
7158                encoder,
7159                offset + cur_offset,
7160                depth,
7161            )?;
7162
7163            _prev_end_offset = cur_offset + envelope_size;
7164            if 4 > max_ordinal {
7165                return Ok(());
7166            }
7167
7168            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7169            // are envelope_size bytes.
7170            let cur_offset: usize = (4 - 1) * envelope_size;
7171
7172            // Zero reserved fields.
7173            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7174
7175            // Safety:
7176            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7177            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7178            //   envelope_size bytes, there is always sufficient room.
7179            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
7180                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
7181                encoder,
7182                offset + cur_offset,
7183                depth,
7184            )?;
7185
7186            _prev_end_offset = cur_offset + envelope_size;
7187
7188            Ok(())
7189        }
7190    }
7191
7192    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7193        for FilteredAggregateProvider
7194    {
7195        #[inline(always)]
7196        fn new_empty() -> Self {
7197            Self::default()
7198        }
7199
7200        unsafe fn decode(
7201            &mut self,
7202            decoder: &mut fidl::encoding::Decoder<'_, D>,
7203            offset: usize,
7204            mut depth: fidl::encoding::Depth,
7205        ) -> fidl::Result<()> {
7206            decoder.debug_check_bounds::<Self>(offset);
7207            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7208                None => return Err(fidl::Error::NotNullable),
7209                Some(len) => len,
7210            };
7211            // Calling decoder.out_of_line_offset(0) is not allowed.
7212            if len == 0 {
7213                return Ok(());
7214            };
7215            depth.increment()?;
7216            let envelope_size = 8;
7217            let bytes_len = len * envelope_size;
7218            let offset = decoder.out_of_line_offset(bytes_len)?;
7219            // Decode the envelope for each type.
7220            let mut _next_ordinal_to_read = 0;
7221            let mut next_offset = offset;
7222            let end_offset = offset + bytes_len;
7223            _next_ordinal_to_read += 1;
7224            if next_offset >= end_offset {
7225                return Ok(());
7226            }
7227
7228            // Decode unknown envelopes for gaps in ordinals.
7229            while _next_ordinal_to_read < 1 {
7230                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7231                _next_ordinal_to_read += 1;
7232                next_offset += envelope_size;
7233            }
7234
7235            let next_out_of_line = decoder.next_out_of_line();
7236            let handles_before = decoder.remaining_handles();
7237            if let Some((inlined, num_bytes, num_handles)) =
7238                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7239            {
7240                let member_inline_size =
7241                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7242                        decoder.context,
7243                    );
7244                if inlined != (member_inline_size <= 4) {
7245                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7246                }
7247                let inner_offset;
7248                let mut inner_depth = depth.clone();
7249                if inlined {
7250                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7251                    inner_offset = next_offset;
7252                } else {
7253                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7254                    inner_depth.increment()?;
7255                }
7256                let val_ref =
7257                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7258                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7259                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7260                {
7261                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7262                }
7263                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7264                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7265                }
7266            }
7267
7268            next_offset += envelope_size;
7269            _next_ordinal_to_read += 1;
7270            if next_offset >= end_offset {
7271                return Ok(());
7272            }
7273
7274            // Decode unknown envelopes for gaps in ordinals.
7275            while _next_ordinal_to_read < 2 {
7276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7277                _next_ordinal_to_read += 1;
7278                next_offset += envelope_size;
7279            }
7280
7281            let next_out_of_line = decoder.next_out_of_line();
7282            let handles_before = decoder.remaining_handles();
7283            if let Some((inlined, num_bytes, num_handles)) =
7284                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7285            {
7286                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7287                if inlined != (member_inline_size <= 4) {
7288                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7289                }
7290                let inner_offset;
7291                let mut inner_depth = depth.clone();
7292                if inlined {
7293                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7294                    inner_offset = next_offset;
7295                } else {
7296                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7297                    inner_depth.increment()?;
7298                }
7299                let val_ref = self.moniker.get_or_insert_with(|| {
7300                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7301                });
7302                fidl::decode!(
7303                    fidl::encoding::BoundedString<4096>,
7304                    D,
7305                    val_ref,
7306                    decoder,
7307                    inner_offset,
7308                    inner_depth
7309                )?;
7310                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7311                {
7312                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7313                }
7314                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7315                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7316                }
7317            }
7318
7319            next_offset += envelope_size;
7320            _next_ordinal_to_read += 1;
7321            if next_offset >= end_offset {
7322                return Ok(());
7323            }
7324
7325            // Decode unknown envelopes for gaps in ordinals.
7326            while _next_ordinal_to_read < 3 {
7327                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7328                _next_ordinal_to_read += 1;
7329                next_offset += envelope_size;
7330            }
7331
7332            let next_out_of_line = decoder.next_out_of_line();
7333            let handles_before = decoder.remaining_handles();
7334            if let Some((inlined, num_bytes, num_handles)) =
7335                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7336            {
7337                let member_inline_size = <fidl::encoding::UnboundedVector<
7338                    fidl_fuchsia_component_decl__common::OfferService,
7339                > as fidl::encoding::TypeMarker>::inline_size(
7340                    decoder.context
7341                );
7342                if inlined != (member_inline_size <= 4) {
7343                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7344                }
7345                let inner_offset;
7346                let mut inner_depth = depth.clone();
7347                if inlined {
7348                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7349                    inner_offset = next_offset;
7350                } else {
7351                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7352                    inner_depth.increment()?;
7353                }
7354                let val_ref = self.offer_service_decls.get_or_insert_with(|| {
7355                    fidl::new_empty!(
7356                        fidl::encoding::UnboundedVector<
7357                            fidl_fuchsia_component_decl__common::OfferService,
7358                        >,
7359                        D
7360                    )
7361                });
7362                fidl::decode!(
7363                    fidl::encoding::UnboundedVector<
7364                        fidl_fuchsia_component_decl__common::OfferService,
7365                    >,
7366                    D,
7367                    val_ref,
7368                    decoder,
7369                    inner_offset,
7370                    inner_depth
7371                )?;
7372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7373                {
7374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7375                }
7376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7378                }
7379            }
7380
7381            next_offset += envelope_size;
7382            _next_ordinal_to_read += 1;
7383            if next_offset >= end_offset {
7384                return Ok(());
7385            }
7386
7387            // Decode unknown envelopes for gaps in ordinals.
7388            while _next_ordinal_to_read < 4 {
7389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7390                _next_ordinal_to_read += 1;
7391                next_offset += envelope_size;
7392            }
7393
7394            let next_out_of_line = decoder.next_out_of_line();
7395            let handles_before = decoder.remaining_handles();
7396            if let Some((inlined, num_bytes, num_handles)) =
7397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7398            {
7399                let member_inline_size =
7400                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7401                if inlined != (member_inline_size <= 4) {
7402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7403                }
7404                let inner_offset;
7405                let mut inner_depth = depth.clone();
7406                if inlined {
7407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7408                    inner_offset = next_offset;
7409                } else {
7410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7411                    inner_depth.increment()?;
7412                }
7413                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
7414                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
7415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7416                {
7417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7418                }
7419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7421                }
7422            }
7423
7424            next_offset += envelope_size;
7425
7426            // Decode the remaining unknown envelopes.
7427            while next_offset < end_offset {
7428                _next_ordinal_to_read += 1;
7429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7430                next_offset += envelope_size;
7431            }
7432
7433            Ok(())
7434        }
7435    }
7436
7437    impl FilteredProvider {
7438        #[inline(always)]
7439        fn max_ordinal_present(&self) -> u64 {
7440            if let Some(_) = self.offer_service_decl {
7441                return 4;
7442            }
7443            if let Some(_) = self.service_capability {
7444                return 3;
7445            }
7446            if let Some(_) = self.moniker {
7447                return 2;
7448            }
7449            if let Some(_) = self.capability {
7450                return 1;
7451            }
7452            0
7453        }
7454    }
7455
7456    impl fidl::encoding::ValueTypeMarker for FilteredProvider {
7457        type Borrowed<'a> = &'a Self;
7458        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7459            value
7460        }
7461    }
7462
7463    unsafe impl fidl::encoding::TypeMarker for FilteredProvider {
7464        type Owned = Self;
7465
7466        #[inline(always)]
7467        fn inline_align(_context: fidl::encoding::Context) -> usize {
7468            8
7469        }
7470
7471        #[inline(always)]
7472        fn inline_size(_context: fidl::encoding::Context) -> usize {
7473            16
7474        }
7475    }
7476
7477    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FilteredProvider, D>
7478        for &FilteredProvider
7479    {
7480        unsafe fn encode(
7481            self,
7482            encoder: &mut fidl::encoding::Encoder<'_, D>,
7483            offset: usize,
7484            mut depth: fidl::encoding::Depth,
7485        ) -> fidl::Result<()> {
7486            encoder.debug_check_bounds::<FilteredProvider>(offset);
7487            // Vector header
7488            let max_ordinal: u64 = self.max_ordinal_present();
7489            encoder.write_num(max_ordinal, offset);
7490            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7491            // Calling encoder.out_of_line_offset(0) is not allowed.
7492            if max_ordinal == 0 {
7493                return Ok(());
7494            }
7495            depth.increment()?;
7496            let envelope_size = 8;
7497            let bytes_len = max_ordinal as usize * envelope_size;
7498            #[allow(unused_variables)]
7499            let offset = encoder.out_of_line_offset(bytes_len);
7500            let mut _prev_end_offset: usize = 0;
7501            if 1 > max_ordinal {
7502                return Ok(());
7503            }
7504
7505            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7506            // are envelope_size bytes.
7507            let cur_offset: usize = (1 - 1) * envelope_size;
7508
7509            // Zero reserved fields.
7510            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7511
7512            // Safety:
7513            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7514            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7515            //   envelope_size bytes, there is always sufficient room.
7516            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7517                self.capability
7518                    .as_ref()
7519                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7520                encoder,
7521                offset + cur_offset,
7522                depth,
7523            )?;
7524
7525            _prev_end_offset = cur_offset + envelope_size;
7526            if 2 > max_ordinal {
7527                return Ok(());
7528            }
7529
7530            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7531            // are envelope_size bytes.
7532            let cur_offset: usize = (2 - 1) * envelope_size;
7533
7534            // Zero reserved fields.
7535            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7536
7537            // Safety:
7538            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7539            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7540            //   envelope_size bytes, there is always sufficient room.
7541            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7542            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7543            encoder, offset + cur_offset, depth
7544        )?;
7545
7546            _prev_end_offset = cur_offset + envelope_size;
7547            if 3 > max_ordinal {
7548                return Ok(());
7549            }
7550
7551            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7552            // are envelope_size bytes.
7553            let cur_offset: usize = (3 - 1) * envelope_size;
7554
7555            // Zero reserved fields.
7556            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7557
7558            // Safety:
7559            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7560            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7561            //   envelope_size bytes, there is always sufficient room.
7562            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
7563                self.service_capability
7564                    .as_ref()
7565                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
7566                encoder,
7567                offset + cur_offset,
7568                depth,
7569            )?;
7570
7571            _prev_end_offset = cur_offset + envelope_size;
7572            if 4 > max_ordinal {
7573                return Ok(());
7574            }
7575
7576            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7577            // are envelope_size bytes.
7578            let cur_offset: usize = (4 - 1) * envelope_size;
7579
7580            // Zero reserved fields.
7581            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7582
7583            // Safety:
7584            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7585            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7586            //   envelope_size bytes, there is always sufficient room.
7587            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::OfferService, D>(
7588            self.offer_service_decl.as_ref().map(<fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::ValueTypeMarker>::borrow),
7589            encoder, offset + cur_offset, depth
7590        )?;
7591
7592            _prev_end_offset = cur_offset + envelope_size;
7593
7594            Ok(())
7595        }
7596    }
7597
7598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilteredProvider {
7599        #[inline(always)]
7600        fn new_empty() -> Self {
7601            Self::default()
7602        }
7603
7604        unsafe fn decode(
7605            &mut self,
7606            decoder: &mut fidl::encoding::Decoder<'_, D>,
7607            offset: usize,
7608            mut depth: fidl::encoding::Depth,
7609        ) -> fidl::Result<()> {
7610            decoder.debug_check_bounds::<Self>(offset);
7611            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7612                None => return Err(fidl::Error::NotNullable),
7613                Some(len) => len,
7614            };
7615            // Calling decoder.out_of_line_offset(0) is not allowed.
7616            if len == 0 {
7617                return Ok(());
7618            };
7619            depth.increment()?;
7620            let envelope_size = 8;
7621            let bytes_len = len * envelope_size;
7622            let offset = decoder.out_of_line_offset(bytes_len)?;
7623            // Decode the envelope for each type.
7624            let mut _next_ordinal_to_read = 0;
7625            let mut next_offset = offset;
7626            let end_offset = offset + bytes_len;
7627            _next_ordinal_to_read += 1;
7628            if next_offset >= end_offset {
7629                return Ok(());
7630            }
7631
7632            // Decode unknown envelopes for gaps in ordinals.
7633            while _next_ordinal_to_read < 1 {
7634                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7635                _next_ordinal_to_read += 1;
7636                next_offset += envelope_size;
7637            }
7638
7639            let next_out_of_line = decoder.next_out_of_line();
7640            let handles_before = decoder.remaining_handles();
7641            if let Some((inlined, num_bytes, num_handles)) =
7642                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7643            {
7644                let member_inline_size =
7645                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7646                        decoder.context,
7647                    );
7648                if inlined != (member_inline_size <= 4) {
7649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7650                }
7651                let inner_offset;
7652                let mut inner_depth = depth.clone();
7653                if inlined {
7654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7655                    inner_offset = next_offset;
7656                } else {
7657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7658                    inner_depth.increment()?;
7659                }
7660                let val_ref =
7661                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7662                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7663                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7664                {
7665                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7666                }
7667                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7668                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7669                }
7670            }
7671
7672            next_offset += envelope_size;
7673            _next_ordinal_to_read += 1;
7674            if next_offset >= end_offset {
7675                return Ok(());
7676            }
7677
7678            // Decode unknown envelopes for gaps in ordinals.
7679            while _next_ordinal_to_read < 2 {
7680                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7681                _next_ordinal_to_read += 1;
7682                next_offset += envelope_size;
7683            }
7684
7685            let next_out_of_line = decoder.next_out_of_line();
7686            let handles_before = decoder.remaining_handles();
7687            if let Some((inlined, num_bytes, num_handles)) =
7688                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7689            {
7690                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7691                if inlined != (member_inline_size <= 4) {
7692                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7693                }
7694                let inner_offset;
7695                let mut inner_depth = depth.clone();
7696                if inlined {
7697                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7698                    inner_offset = next_offset;
7699                } else {
7700                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7701                    inner_depth.increment()?;
7702                }
7703                let val_ref = self.moniker.get_or_insert_with(|| {
7704                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7705                });
7706                fidl::decode!(
7707                    fidl::encoding::BoundedString<4096>,
7708                    D,
7709                    val_ref,
7710                    decoder,
7711                    inner_offset,
7712                    inner_depth
7713                )?;
7714                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7715                {
7716                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7717                }
7718                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7719                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7720                }
7721            }
7722
7723            next_offset += envelope_size;
7724            _next_ordinal_to_read += 1;
7725            if next_offset >= end_offset {
7726                return Ok(());
7727            }
7728
7729            // Decode unknown envelopes for gaps in ordinals.
7730            while _next_ordinal_to_read < 3 {
7731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7732                _next_ordinal_to_read += 1;
7733                next_offset += envelope_size;
7734            }
7735
7736            let next_out_of_line = decoder.next_out_of_line();
7737            let handles_before = decoder.remaining_handles();
7738            if let Some((inlined, num_bytes, num_handles)) =
7739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7740            {
7741                let member_inline_size =
7742                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
7743                        decoder.context,
7744                    );
7745                if inlined != (member_inline_size <= 4) {
7746                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7747                }
7748                let inner_offset;
7749                let mut inner_depth = depth.clone();
7750                if inlined {
7751                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7752                    inner_offset = next_offset;
7753                } else {
7754                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7755                    inner_depth.increment()?;
7756                }
7757                let val_ref = self
7758                    .service_capability
7759                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
7760                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7761                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7762                {
7763                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7764                }
7765                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7766                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7767                }
7768            }
7769
7770            next_offset += envelope_size;
7771            _next_ordinal_to_read += 1;
7772            if next_offset >= end_offset {
7773                return Ok(());
7774            }
7775
7776            // Decode unknown envelopes for gaps in ordinals.
7777            while _next_ordinal_to_read < 4 {
7778                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7779                _next_ordinal_to_read += 1;
7780                next_offset += envelope_size;
7781            }
7782
7783            let next_out_of_line = decoder.next_out_of_line();
7784            let handles_before = decoder.remaining_handles();
7785            if let Some((inlined, num_bytes, num_handles)) =
7786                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7787            {
7788                let member_inline_size = <fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7789                if inlined != (member_inline_size <= 4) {
7790                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7791                }
7792                let inner_offset;
7793                let mut inner_depth = depth.clone();
7794                if inlined {
7795                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7796                    inner_offset = next_offset;
7797                } else {
7798                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7799                    inner_depth.increment()?;
7800                }
7801                let val_ref = self.offer_service_decl.get_or_insert_with(|| {
7802                    fidl::new_empty!(fidl_fuchsia_component_decl__common::OfferService, D)
7803                });
7804                fidl::decode!(
7805                    fidl_fuchsia_component_decl__common::OfferService,
7806                    D,
7807                    val_ref,
7808                    decoder,
7809                    inner_offset,
7810                    inner_depth
7811                )?;
7812                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7813                {
7814                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7815                }
7816                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7817                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7818                }
7819            }
7820
7821            next_offset += envelope_size;
7822
7823            // Decode the remaining unknown envelopes.
7824            while next_offset < end_offset {
7825                _next_ordinal_to_read += 1;
7826                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7827                next_offset += envelope_size;
7828            }
7829
7830            Ok(())
7831        }
7832    }
7833
7834    impl Framework {
7835        #[inline(always)]
7836        fn max_ordinal_present(&self) -> u64 {
7837            if let Some(_) = self.moniker {
7838                return 2;
7839            }
7840            if let Some(_) = self.capability {
7841                return 1;
7842            }
7843            0
7844        }
7845    }
7846
7847    impl fidl::encoding::ValueTypeMarker for Framework {
7848        type Borrowed<'a> = &'a Self;
7849        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7850            value
7851        }
7852    }
7853
7854    unsafe impl fidl::encoding::TypeMarker for Framework {
7855        type Owned = Self;
7856
7857        #[inline(always)]
7858        fn inline_align(_context: fidl::encoding::Context) -> usize {
7859            8
7860        }
7861
7862        #[inline(always)]
7863        fn inline_size(_context: fidl::encoding::Context) -> usize {
7864            16
7865        }
7866    }
7867
7868    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Framework, D>
7869        for &Framework
7870    {
7871        unsafe fn encode(
7872            self,
7873            encoder: &mut fidl::encoding::Encoder<'_, D>,
7874            offset: usize,
7875            mut depth: fidl::encoding::Depth,
7876        ) -> fidl::Result<()> {
7877            encoder.debug_check_bounds::<Framework>(offset);
7878            // Vector header
7879            let max_ordinal: u64 = self.max_ordinal_present();
7880            encoder.write_num(max_ordinal, offset);
7881            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7882            // Calling encoder.out_of_line_offset(0) is not allowed.
7883            if max_ordinal == 0 {
7884                return Ok(());
7885            }
7886            depth.increment()?;
7887            let envelope_size = 8;
7888            let bytes_len = max_ordinal as usize * envelope_size;
7889            #[allow(unused_variables)]
7890            let offset = encoder.out_of_line_offset(bytes_len);
7891            let mut _prev_end_offset: usize = 0;
7892            if 1 > max_ordinal {
7893                return Ok(());
7894            }
7895
7896            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7897            // are envelope_size bytes.
7898            let cur_offset: usize = (1 - 1) * envelope_size;
7899
7900            // Zero reserved fields.
7901            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7902
7903            // Safety:
7904            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7905            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7906            //   envelope_size bytes, there is always sufficient room.
7907            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
7908                self.capability
7909                    .as_ref()
7910                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
7911                encoder,
7912                offset + cur_offset,
7913                depth,
7914            )?;
7915
7916            _prev_end_offset = cur_offset + envelope_size;
7917            if 2 > max_ordinal {
7918                return Ok(());
7919            }
7920
7921            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7922            // are envelope_size bytes.
7923            let cur_offset: usize = (2 - 1) * envelope_size;
7924
7925            // Zero reserved fields.
7926            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7927
7928            // Safety:
7929            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7930            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7931            //   envelope_size bytes, there is always sufficient room.
7932            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7933            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7934            encoder, offset + cur_offset, depth
7935        )?;
7936
7937            _prev_end_offset = cur_offset + envelope_size;
7938
7939            Ok(())
7940        }
7941    }
7942
7943    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Framework {
7944        #[inline(always)]
7945        fn new_empty() -> Self {
7946            Self::default()
7947        }
7948
7949        unsafe fn decode(
7950            &mut self,
7951            decoder: &mut fidl::encoding::Decoder<'_, D>,
7952            offset: usize,
7953            mut depth: fidl::encoding::Depth,
7954        ) -> fidl::Result<()> {
7955            decoder.debug_check_bounds::<Self>(offset);
7956            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7957                None => return Err(fidl::Error::NotNullable),
7958                Some(len) => len,
7959            };
7960            // Calling decoder.out_of_line_offset(0) is not allowed.
7961            if len == 0 {
7962                return Ok(());
7963            };
7964            depth.increment()?;
7965            let envelope_size = 8;
7966            let bytes_len = len * envelope_size;
7967            let offset = decoder.out_of_line_offset(bytes_len)?;
7968            // Decode the envelope for each type.
7969            let mut _next_ordinal_to_read = 0;
7970            let mut next_offset = offset;
7971            let end_offset = offset + bytes_len;
7972            _next_ordinal_to_read += 1;
7973            if next_offset >= end_offset {
7974                return Ok(());
7975            }
7976
7977            // Decode unknown envelopes for gaps in ordinals.
7978            while _next_ordinal_to_read < 1 {
7979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7980                _next_ordinal_to_read += 1;
7981                next_offset += envelope_size;
7982            }
7983
7984            let next_out_of_line = decoder.next_out_of_line();
7985            let handles_before = decoder.remaining_handles();
7986            if let Some((inlined, num_bytes, num_handles)) =
7987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7988            {
7989                let member_inline_size =
7990                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
7991                        decoder.context,
7992                    );
7993                if inlined != (member_inline_size <= 4) {
7994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7995                }
7996                let inner_offset;
7997                let mut inner_depth = depth.clone();
7998                if inlined {
7999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8000                    inner_offset = next_offset;
8001                } else {
8002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8003                    inner_depth.increment()?;
8004                }
8005                let val_ref =
8006                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
8007                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
8008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8009                {
8010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8011                }
8012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8014                }
8015            }
8016
8017            next_offset += envelope_size;
8018            _next_ordinal_to_read += 1;
8019            if next_offset >= end_offset {
8020                return Ok(());
8021            }
8022
8023            // Decode unknown envelopes for gaps in ordinals.
8024            while _next_ordinal_to_read < 2 {
8025                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8026                _next_ordinal_to_read += 1;
8027                next_offset += envelope_size;
8028            }
8029
8030            let next_out_of_line = decoder.next_out_of_line();
8031            let handles_before = decoder.remaining_handles();
8032            if let Some((inlined, num_bytes, num_handles)) =
8033                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8034            {
8035                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8036                if inlined != (member_inline_size <= 4) {
8037                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8038                }
8039                let inner_offset;
8040                let mut inner_depth = depth.clone();
8041                if inlined {
8042                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8043                    inner_offset = next_offset;
8044                } else {
8045                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8046                    inner_depth.increment()?;
8047                }
8048                let val_ref = self.moniker.get_or_insert_with(|| {
8049                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
8050                });
8051                fidl::decode!(
8052                    fidl::encoding::BoundedString<4096>,
8053                    D,
8054                    val_ref,
8055                    decoder,
8056                    inner_offset,
8057                    inner_depth
8058                )?;
8059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8060                {
8061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8062                }
8063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8065                }
8066            }
8067
8068            next_offset += envelope_size;
8069
8070            // Decode the remaining unknown envelopes.
8071            while next_offset < end_offset {
8072                _next_ordinal_to_read += 1;
8073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8074                next_offset += envelope_size;
8075            }
8076
8077            Ok(())
8078        }
8079    }
8080
8081    impl HealthCheck {
8082        #[inline(always)]
8083        fn max_ordinal_present(&self) -> u64 {
8084            if let Some(_) = self.monikers {
8085                return 1;
8086            }
8087            0
8088        }
8089    }
8090
8091    impl fidl::encoding::ValueTypeMarker for HealthCheck {
8092        type Borrowed<'a> = &'a Self;
8093        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8094            value
8095        }
8096    }
8097
8098    unsafe impl fidl::encoding::TypeMarker for HealthCheck {
8099        type Owned = Self;
8100
8101        #[inline(always)]
8102        fn inline_align(_context: fidl::encoding::Context) -> usize {
8103            8
8104        }
8105
8106        #[inline(always)]
8107        fn inline_size(_context: fidl::encoding::Context) -> usize {
8108            16
8109        }
8110    }
8111
8112    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheck, D>
8113        for &HealthCheck
8114    {
8115        unsafe fn encode(
8116            self,
8117            encoder: &mut fidl::encoding::Encoder<'_, D>,
8118            offset: usize,
8119            mut depth: fidl::encoding::Depth,
8120        ) -> fidl::Result<()> {
8121            encoder.debug_check_bounds::<HealthCheck>(offset);
8122            // Vector header
8123            let max_ordinal: u64 = self.max_ordinal_present();
8124            encoder.write_num(max_ordinal, offset);
8125            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8126            // Calling encoder.out_of_line_offset(0) is not allowed.
8127            if max_ordinal == 0 {
8128                return Ok(());
8129            }
8130            depth.increment()?;
8131            let envelope_size = 8;
8132            let bytes_len = max_ordinal as usize * envelope_size;
8133            #[allow(unused_variables)]
8134            let offset = encoder.out_of_line_offset(bytes_len);
8135            let mut _prev_end_offset: usize = 0;
8136            if 1 > max_ordinal {
8137                return Ok(());
8138            }
8139
8140            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8141            // are envelope_size bytes.
8142            let cur_offset: usize = (1 - 1) * envelope_size;
8143
8144            // Zero reserved fields.
8145            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8146
8147            // Safety:
8148            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8149            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8150            //   envelope_size bytes, there is always sufficient room.
8151            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, D>(
8152            self.monikers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
8153            encoder, offset + cur_offset, depth
8154        )?;
8155
8156            _prev_end_offset = cur_offset + envelope_size;
8157
8158            Ok(())
8159        }
8160    }
8161
8162    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheck {
8163        #[inline(always)]
8164        fn new_empty() -> Self {
8165            Self::default()
8166        }
8167
8168        unsafe fn decode(
8169            &mut self,
8170            decoder: &mut fidl::encoding::Decoder<'_, D>,
8171            offset: usize,
8172            mut depth: fidl::encoding::Depth,
8173        ) -> fidl::Result<()> {
8174            decoder.debug_check_bounds::<Self>(offset);
8175            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8176                None => return Err(fidl::Error::NotNullable),
8177                Some(len) => len,
8178            };
8179            // Calling decoder.out_of_line_offset(0) is not allowed.
8180            if len == 0 {
8181                return Ok(());
8182            };
8183            depth.increment()?;
8184            let envelope_size = 8;
8185            let bytes_len = len * envelope_size;
8186            let offset = decoder.out_of_line_offset(bytes_len)?;
8187            // Decode the envelope for each type.
8188            let mut _next_ordinal_to_read = 0;
8189            let mut next_offset = offset;
8190            let end_offset = offset + bytes_len;
8191            _next_ordinal_to_read += 1;
8192            if next_offset >= end_offset {
8193                return Ok(());
8194            }
8195
8196            // Decode unknown envelopes for gaps in ordinals.
8197            while _next_ordinal_to_read < 1 {
8198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8199                _next_ordinal_to_read += 1;
8200                next_offset += envelope_size;
8201            }
8202
8203            let next_out_of_line = decoder.next_out_of_line();
8204            let handles_before = decoder.remaining_handles();
8205            if let Some((inlined, num_bytes, num_handles)) =
8206                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8207            {
8208                let member_inline_size = <fidl::encoding::UnboundedVector<
8209                    fidl::encoding::BoundedString<255>,
8210                > as fidl::encoding::TypeMarker>::inline_size(
8211                    decoder.context
8212                );
8213                if inlined != (member_inline_size <= 4) {
8214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8215                }
8216                let inner_offset;
8217                let mut inner_depth = depth.clone();
8218                if inlined {
8219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8220                    inner_offset = next_offset;
8221                } else {
8222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8223                    inner_depth.increment()?;
8224                }
8225                let val_ref = self.monikers.get_or_insert_with(|| {
8226                    fidl::new_empty!(
8227                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8228                        D
8229                    )
8230                });
8231                fidl::decode!(
8232                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8233                    D,
8234                    val_ref,
8235                    decoder,
8236                    inner_offset,
8237                    inner_depth
8238                )?;
8239                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8240                {
8241                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8242                }
8243                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8244                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8245                }
8246            }
8247
8248            next_offset += envelope_size;
8249
8250            // Decode the remaining unknown envelopes.
8251            while next_offset < end_offset {
8252                _next_ordinal_to_read += 1;
8253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8254                next_offset += envelope_size;
8255            }
8256
8257            Ok(())
8258        }
8259    }
8260
8261    impl InstanceIdEntry {
8262        #[inline(always)]
8263        fn max_ordinal_present(&self) -> u64 {
8264            if let Some(_) = self.moniker {
8265                return 3;
8266            }
8267            if let Some(_) = self.instance_id {
8268                return 1;
8269            }
8270            0
8271        }
8272    }
8273
8274    impl fidl::encoding::ValueTypeMarker for InstanceIdEntry {
8275        type Borrowed<'a> = &'a Self;
8276        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8277            value
8278        }
8279    }
8280
8281    unsafe impl fidl::encoding::TypeMarker for InstanceIdEntry {
8282        type Owned = Self;
8283
8284        #[inline(always)]
8285        fn inline_align(_context: fidl::encoding::Context) -> usize {
8286            8
8287        }
8288
8289        #[inline(always)]
8290        fn inline_size(_context: fidl::encoding::Context) -> usize {
8291            16
8292        }
8293    }
8294
8295    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstanceIdEntry, D>
8296        for &InstanceIdEntry
8297    {
8298        unsafe fn encode(
8299            self,
8300            encoder: &mut fidl::encoding::Encoder<'_, D>,
8301            offset: usize,
8302            mut depth: fidl::encoding::Depth,
8303        ) -> fidl::Result<()> {
8304            encoder.debug_check_bounds::<InstanceIdEntry>(offset);
8305            // Vector header
8306            let max_ordinal: u64 = self.max_ordinal_present();
8307            encoder.write_num(max_ordinal, offset);
8308            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8309            // Calling encoder.out_of_line_offset(0) is not allowed.
8310            if max_ordinal == 0 {
8311                return Ok(());
8312            }
8313            depth.increment()?;
8314            let envelope_size = 8;
8315            let bytes_len = max_ordinal as usize * envelope_size;
8316            #[allow(unused_variables)]
8317            let offset = encoder.out_of_line_offset(bytes_len);
8318            let mut _prev_end_offset: usize = 0;
8319            if 1 > max_ordinal {
8320                return Ok(());
8321            }
8322
8323            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8324            // are envelope_size bytes.
8325            let cur_offset: usize = (1 - 1) * envelope_size;
8326
8327            // Zero reserved fields.
8328            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8329
8330            // Safety:
8331            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8332            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8333            //   envelope_size bytes, there is always sufficient room.
8334            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8335                self.instance_id.as_ref().map(
8336                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8337                ),
8338                encoder,
8339                offset + cur_offset,
8340                depth,
8341            )?;
8342
8343            _prev_end_offset = cur_offset + envelope_size;
8344            if 3 > max_ordinal {
8345                return Ok(());
8346            }
8347
8348            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8349            // are envelope_size bytes.
8350            let cur_offset: usize = (3 - 1) * envelope_size;
8351
8352            // Zero reserved fields.
8353            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8354
8355            // Safety:
8356            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8357            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8358            //   envelope_size bytes, there is always sufficient room.
8359            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
8360            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
8361            encoder, offset + cur_offset, depth
8362        )?;
8363
8364            _prev_end_offset = cur_offset + envelope_size;
8365
8366            Ok(())
8367        }
8368    }
8369
8370    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstanceIdEntry {
8371        #[inline(always)]
8372        fn new_empty() -> Self {
8373            Self::default()
8374        }
8375
8376        unsafe fn decode(
8377            &mut self,
8378            decoder: &mut fidl::encoding::Decoder<'_, D>,
8379            offset: usize,
8380            mut depth: fidl::encoding::Depth,
8381        ) -> fidl::Result<()> {
8382            decoder.debug_check_bounds::<Self>(offset);
8383            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8384                None => return Err(fidl::Error::NotNullable),
8385                Some(len) => len,
8386            };
8387            // Calling decoder.out_of_line_offset(0) is not allowed.
8388            if len == 0 {
8389                return Ok(());
8390            };
8391            depth.increment()?;
8392            let envelope_size = 8;
8393            let bytes_len = len * envelope_size;
8394            let offset = decoder.out_of_line_offset(bytes_len)?;
8395            // Decode the envelope for each type.
8396            let mut _next_ordinal_to_read = 0;
8397            let mut next_offset = offset;
8398            let end_offset = offset + bytes_len;
8399            _next_ordinal_to_read += 1;
8400            if next_offset >= end_offset {
8401                return Ok(());
8402            }
8403
8404            // Decode unknown envelopes for gaps in ordinals.
8405            while _next_ordinal_to_read < 1 {
8406                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8407                _next_ordinal_to_read += 1;
8408                next_offset += envelope_size;
8409            }
8410
8411            let next_out_of_line = decoder.next_out_of_line();
8412            let handles_before = decoder.remaining_handles();
8413            if let Some((inlined, num_bytes, num_handles)) =
8414                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8415            {
8416                let member_inline_size =
8417                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8418                        decoder.context,
8419                    );
8420                if inlined != (member_inline_size <= 4) {
8421                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8422                }
8423                let inner_offset;
8424                let mut inner_depth = depth.clone();
8425                if inlined {
8426                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8427                    inner_offset = next_offset;
8428                } else {
8429                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8430                    inner_depth.increment()?;
8431                }
8432                let val_ref = self
8433                    .instance_id
8434                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8435                fidl::decode!(
8436                    fidl::encoding::BoundedString<64>,
8437                    D,
8438                    val_ref,
8439                    decoder,
8440                    inner_offset,
8441                    inner_depth
8442                )?;
8443                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8444                {
8445                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8446                }
8447                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8448                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8449                }
8450            }
8451
8452            next_offset += envelope_size;
8453            _next_ordinal_to_read += 1;
8454            if next_offset >= end_offset {
8455                return Ok(());
8456            }
8457
8458            // Decode unknown envelopes for gaps in ordinals.
8459            while _next_ordinal_to_read < 3 {
8460                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8461                _next_ordinal_to_read += 1;
8462                next_offset += envelope_size;
8463            }
8464
8465            let next_out_of_line = decoder.next_out_of_line();
8466            let handles_before = decoder.remaining_handles();
8467            if let Some((inlined, num_bytes, num_handles)) =
8468                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8469            {
8470                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8471                if inlined != (member_inline_size <= 4) {
8472                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8473                }
8474                let inner_offset;
8475                let mut inner_depth = depth.clone();
8476                if inlined {
8477                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8478                    inner_offset = next_offset;
8479                } else {
8480                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8481                    inner_depth.increment()?;
8482                }
8483                let val_ref = self.moniker.get_or_insert_with(|| {
8484                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
8485                });
8486                fidl::decode!(
8487                    fidl::encoding::BoundedString<4096>,
8488                    D,
8489                    val_ref,
8490                    decoder,
8491                    inner_offset,
8492                    inner_depth
8493                )?;
8494                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8495                {
8496                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8497                }
8498                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8499                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8500                }
8501            }
8502
8503            next_offset += envelope_size;
8504
8505            // Decode the remaining unknown envelopes.
8506            while next_offset < end_offset {
8507                _next_ordinal_to_read += 1;
8508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8509                next_offset += envelope_size;
8510            }
8511
8512            Ok(())
8513        }
8514    }
8515
8516    impl JobPolicyAllowlists {
8517        #[inline(always)]
8518        fn max_ordinal_present(&self) -> u64 {
8519            if let Some(_) = self.create_raw_processes {
8520                return 3;
8521            }
8522            if let Some(_) = self.main_process_critical {
8523                return 2;
8524            }
8525            if let Some(_) = self.ambient_mark_vmo_exec {
8526                return 1;
8527            }
8528            0
8529        }
8530    }
8531
8532    impl fidl::encoding::ValueTypeMarker for JobPolicyAllowlists {
8533        type Borrowed<'a> = &'a Self;
8534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8535            value
8536        }
8537    }
8538
8539    unsafe impl fidl::encoding::TypeMarker for JobPolicyAllowlists {
8540        type Owned = Self;
8541
8542        #[inline(always)]
8543        fn inline_align(_context: fidl::encoding::Context) -> usize {
8544            8
8545        }
8546
8547        #[inline(always)]
8548        fn inline_size(_context: fidl::encoding::Context) -> usize {
8549            16
8550        }
8551    }
8552
8553    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JobPolicyAllowlists, D>
8554        for &JobPolicyAllowlists
8555    {
8556        unsafe fn encode(
8557            self,
8558            encoder: &mut fidl::encoding::Encoder<'_, D>,
8559            offset: usize,
8560            mut depth: fidl::encoding::Depth,
8561        ) -> fidl::Result<()> {
8562            encoder.debug_check_bounds::<JobPolicyAllowlists>(offset);
8563            // Vector header
8564            let max_ordinal: u64 = self.max_ordinal_present();
8565            encoder.write_num(max_ordinal, offset);
8566            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8567            // Calling encoder.out_of_line_offset(0) is not allowed.
8568            if max_ordinal == 0 {
8569                return Ok(());
8570            }
8571            depth.increment()?;
8572            let envelope_size = 8;
8573            let bytes_len = max_ordinal as usize * envelope_size;
8574            #[allow(unused_variables)]
8575            let offset = encoder.out_of_line_offset(bytes_len);
8576            let mut _prev_end_offset: usize = 0;
8577            if 1 > max_ordinal {
8578                return Ok(());
8579            }
8580
8581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8582            // are envelope_size bytes.
8583            let cur_offset: usize = (1 - 1) * envelope_size;
8584
8585            // Zero reserved fields.
8586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8587
8588            // Safety:
8589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8591            //   envelope_size bytes, there is always sufficient room.
8592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
8593            self.ambient_mark_vmo_exec.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8594            encoder, offset + cur_offset, depth
8595        )?;
8596
8597            _prev_end_offset = cur_offset + envelope_size;
8598            if 2 > max_ordinal {
8599                return Ok(());
8600            }
8601
8602            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8603            // are envelope_size bytes.
8604            let cur_offset: usize = (2 - 1) * envelope_size;
8605
8606            // Zero reserved fields.
8607            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8608
8609            // Safety:
8610            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8611            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8612            //   envelope_size bytes, there is always sufficient room.
8613            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
8614            self.main_process_critical.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8615            encoder, offset + cur_offset, depth
8616        )?;
8617
8618            _prev_end_offset = cur_offset + envelope_size;
8619            if 3 > max_ordinal {
8620                return Ok(());
8621            }
8622
8623            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8624            // are envelope_size bytes.
8625            let cur_offset: usize = (3 - 1) * envelope_size;
8626
8627            // Zero reserved fields.
8628            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8629
8630            // Safety:
8631            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8632            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8633            //   envelope_size bytes, there is always sufficient room.
8634            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
8635            self.create_raw_processes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8636            encoder, offset + cur_offset, depth
8637        )?;
8638
8639            _prev_end_offset = cur_offset + envelope_size;
8640
8641            Ok(())
8642        }
8643    }
8644
8645    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JobPolicyAllowlists {
8646        #[inline(always)]
8647        fn new_empty() -> Self {
8648            Self::default()
8649        }
8650
8651        unsafe fn decode(
8652            &mut self,
8653            decoder: &mut fidl::encoding::Decoder<'_, D>,
8654            offset: usize,
8655            mut depth: fidl::encoding::Depth,
8656        ) -> fidl::Result<()> {
8657            decoder.debug_check_bounds::<Self>(offset);
8658            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8659                None => return Err(fidl::Error::NotNullable),
8660                Some(len) => len,
8661            };
8662            // Calling decoder.out_of_line_offset(0) is not allowed.
8663            if len == 0 {
8664                return Ok(());
8665            };
8666            depth.increment()?;
8667            let envelope_size = 8;
8668            let bytes_len = len * envelope_size;
8669            let offset = decoder.out_of_line_offset(bytes_len)?;
8670            // Decode the envelope for each type.
8671            let mut _next_ordinal_to_read = 0;
8672            let mut next_offset = offset;
8673            let end_offset = offset + bytes_len;
8674            _next_ordinal_to_read += 1;
8675            if next_offset >= end_offset {
8676                return Ok(());
8677            }
8678
8679            // Decode unknown envelopes for gaps in ordinals.
8680            while _next_ordinal_to_read < 1 {
8681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8682                _next_ordinal_to_read += 1;
8683                next_offset += envelope_size;
8684            }
8685
8686            let next_out_of_line = decoder.next_out_of_line();
8687            let handles_before = decoder.remaining_handles();
8688            if let Some((inlined, num_bytes, num_handles)) =
8689                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8690            {
8691                let member_inline_size = <fidl::encoding::Vector<
8692                    fidl::encoding::BoundedString<4096>,
8693                    128,
8694                > as fidl::encoding::TypeMarker>::inline_size(
8695                    decoder.context
8696                );
8697                if inlined != (member_inline_size <= 4) {
8698                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8699                }
8700                let inner_offset;
8701                let mut inner_depth = depth.clone();
8702                if inlined {
8703                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8704                    inner_offset = next_offset;
8705                } else {
8706                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8707                    inner_depth.increment()?;
8708                }
8709                let val_ref = self.ambient_mark_vmo_exec.get_or_insert_with(|| {
8710                    fidl::new_empty!(
8711                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8712                        D
8713                    )
8714                });
8715                fidl::decode!(
8716                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8717                    D,
8718                    val_ref,
8719                    decoder,
8720                    inner_offset,
8721                    inner_depth
8722                )?;
8723                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8724                {
8725                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8726                }
8727                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8728                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8729                }
8730            }
8731
8732            next_offset += envelope_size;
8733            _next_ordinal_to_read += 1;
8734            if next_offset >= end_offset {
8735                return Ok(());
8736            }
8737
8738            // Decode unknown envelopes for gaps in ordinals.
8739            while _next_ordinal_to_read < 2 {
8740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8741                _next_ordinal_to_read += 1;
8742                next_offset += envelope_size;
8743            }
8744
8745            let next_out_of_line = decoder.next_out_of_line();
8746            let handles_before = decoder.remaining_handles();
8747            if let Some((inlined, num_bytes, num_handles)) =
8748                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8749            {
8750                let member_inline_size = <fidl::encoding::Vector<
8751                    fidl::encoding::BoundedString<4096>,
8752                    128,
8753                > as fidl::encoding::TypeMarker>::inline_size(
8754                    decoder.context
8755                );
8756                if inlined != (member_inline_size <= 4) {
8757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8758                }
8759                let inner_offset;
8760                let mut inner_depth = depth.clone();
8761                if inlined {
8762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8763                    inner_offset = next_offset;
8764                } else {
8765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8766                    inner_depth.increment()?;
8767                }
8768                let val_ref = self.main_process_critical.get_or_insert_with(|| {
8769                    fidl::new_empty!(
8770                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8771                        D
8772                    )
8773                });
8774                fidl::decode!(
8775                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8776                    D,
8777                    val_ref,
8778                    decoder,
8779                    inner_offset,
8780                    inner_depth
8781                )?;
8782                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8783                {
8784                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8785                }
8786                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8787                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8788                }
8789            }
8790
8791            next_offset += envelope_size;
8792            _next_ordinal_to_read += 1;
8793            if next_offset >= end_offset {
8794                return Ok(());
8795            }
8796
8797            // Decode unknown envelopes for gaps in ordinals.
8798            while _next_ordinal_to_read < 3 {
8799                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8800                _next_ordinal_to_read += 1;
8801                next_offset += envelope_size;
8802            }
8803
8804            let next_out_of_line = decoder.next_out_of_line();
8805            let handles_before = decoder.remaining_handles();
8806            if let Some((inlined, num_bytes, num_handles)) =
8807                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8808            {
8809                let member_inline_size = <fidl::encoding::Vector<
8810                    fidl::encoding::BoundedString<4096>,
8811                    128,
8812                > as fidl::encoding::TypeMarker>::inline_size(
8813                    decoder.context
8814                );
8815                if inlined != (member_inline_size <= 4) {
8816                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8817                }
8818                let inner_offset;
8819                let mut inner_depth = depth.clone();
8820                if inlined {
8821                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8822                    inner_offset = next_offset;
8823                } else {
8824                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8825                    inner_depth.increment()?;
8826                }
8827                let val_ref = self.create_raw_processes.get_or_insert_with(|| {
8828                    fidl::new_empty!(
8829                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8830                        D
8831                    )
8832                });
8833                fidl::decode!(
8834                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8835                    D,
8836                    val_ref,
8837                    decoder,
8838                    inner_offset,
8839                    inner_depth
8840                )?;
8841                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8842                {
8843                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8844                }
8845                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8846                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8847                }
8848            }
8849
8850            next_offset += envelope_size;
8851
8852            // Decode the remaining unknown envelopes.
8853            while next_offset < end_offset {
8854                _next_ordinal_to_read += 1;
8855                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8856                next_offset += envelope_size;
8857            }
8858
8859            Ok(())
8860        }
8861    }
8862
8863    impl Namespace {
8864        #[inline(always)]
8865        fn max_ordinal_present(&self) -> u64 {
8866            if let Some(_) = self.capability {
8867                return 1;
8868            }
8869            0
8870        }
8871    }
8872
8873    impl fidl::encoding::ValueTypeMarker for Namespace {
8874        type Borrowed<'a> = &'a Self;
8875        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8876            value
8877        }
8878    }
8879
8880    unsafe impl fidl::encoding::TypeMarker for Namespace {
8881        type Owned = Self;
8882
8883        #[inline(always)]
8884        fn inline_align(_context: fidl::encoding::Context) -> usize {
8885            8
8886        }
8887
8888        #[inline(always)]
8889        fn inline_size(_context: fidl::encoding::Context) -> usize {
8890            16
8891        }
8892    }
8893
8894    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Namespace, D>
8895        for &Namespace
8896    {
8897        unsafe fn encode(
8898            self,
8899            encoder: &mut fidl::encoding::Encoder<'_, D>,
8900            offset: usize,
8901            mut depth: fidl::encoding::Depth,
8902        ) -> fidl::Result<()> {
8903            encoder.debug_check_bounds::<Namespace>(offset);
8904            // Vector header
8905            let max_ordinal: u64 = self.max_ordinal_present();
8906            encoder.write_num(max_ordinal, offset);
8907            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8908            // Calling encoder.out_of_line_offset(0) is not allowed.
8909            if max_ordinal == 0 {
8910                return Ok(());
8911            }
8912            depth.increment()?;
8913            let envelope_size = 8;
8914            let bytes_len = max_ordinal as usize * envelope_size;
8915            #[allow(unused_variables)]
8916            let offset = encoder.out_of_line_offset(bytes_len);
8917            let mut _prev_end_offset: usize = 0;
8918            if 1 > max_ordinal {
8919                return Ok(());
8920            }
8921
8922            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8923            // are envelope_size bytes.
8924            let cur_offset: usize = (1 - 1) * envelope_size;
8925
8926            // Zero reserved fields.
8927            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8928
8929            // Safety:
8930            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8931            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8932            //   envelope_size bytes, there is always sufficient room.
8933            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
8934                self.capability
8935                    .as_ref()
8936                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
8937                encoder,
8938                offset + cur_offset,
8939                depth,
8940            )?;
8941
8942            _prev_end_offset = cur_offset + envelope_size;
8943
8944            Ok(())
8945        }
8946    }
8947
8948    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Namespace {
8949        #[inline(always)]
8950        fn new_empty() -> Self {
8951            Self::default()
8952        }
8953
8954        unsafe fn decode(
8955            &mut self,
8956            decoder: &mut fidl::encoding::Decoder<'_, D>,
8957            offset: usize,
8958            mut depth: fidl::encoding::Depth,
8959        ) -> fidl::Result<()> {
8960            decoder.debug_check_bounds::<Self>(offset);
8961            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8962                None => return Err(fidl::Error::NotNullable),
8963                Some(len) => len,
8964            };
8965            // Calling decoder.out_of_line_offset(0) is not allowed.
8966            if len == 0 {
8967                return Ok(());
8968            };
8969            depth.increment()?;
8970            let envelope_size = 8;
8971            let bytes_len = len * envelope_size;
8972            let offset = decoder.out_of_line_offset(bytes_len)?;
8973            // Decode the envelope for each type.
8974            let mut _next_ordinal_to_read = 0;
8975            let mut next_offset = offset;
8976            let end_offset = offset + bytes_len;
8977            _next_ordinal_to_read += 1;
8978            if next_offset >= end_offset {
8979                return Ok(());
8980            }
8981
8982            // Decode unknown envelopes for gaps in ordinals.
8983            while _next_ordinal_to_read < 1 {
8984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8985                _next_ordinal_to_read += 1;
8986                next_offset += envelope_size;
8987            }
8988
8989            let next_out_of_line = decoder.next_out_of_line();
8990            let handles_before = decoder.remaining_handles();
8991            if let Some((inlined, num_bytes, num_handles)) =
8992                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8993            {
8994                let member_inline_size =
8995                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
8996                        decoder.context,
8997                    );
8998                if inlined != (member_inline_size <= 4) {
8999                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9000                }
9001                let inner_offset;
9002                let mut inner_depth = depth.clone();
9003                if inlined {
9004                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9005                    inner_offset = next_offset;
9006                } else {
9007                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9008                    inner_depth.increment()?;
9009                }
9010                let val_ref =
9011                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
9012                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
9013                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9014                {
9015                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9016                }
9017                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9018                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9019                }
9020            }
9021
9022            next_offset += envelope_size;
9023
9024            // Decode the remaining unknown envelopes.
9025            while next_offset < end_offset {
9026                _next_ordinal_to_read += 1;
9027                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9028                next_offset += envelope_size;
9029            }
9030
9031            Ok(())
9032        }
9033    }
9034
9035    impl SecurityPolicy {
9036        #[inline(always)]
9037        fn max_ordinal_present(&self) -> u64 {
9038            if let Some(_) = self.child_policy {
9039                return 4;
9040            }
9041            if let Some(_) = self.debug_registration_policy {
9042                return 3;
9043            }
9044            if let Some(_) = self.capability_policy {
9045                return 2;
9046            }
9047            if let Some(_) = self.job_policy {
9048                return 1;
9049            }
9050            0
9051        }
9052    }
9053
9054    impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
9055        type Borrowed<'a> = &'a Self;
9056        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9057            value
9058        }
9059    }
9060
9061    unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
9062        type Owned = Self;
9063
9064        #[inline(always)]
9065        fn inline_align(_context: fidl::encoding::Context) -> usize {
9066            8
9067        }
9068
9069        #[inline(always)]
9070        fn inline_size(_context: fidl::encoding::Context) -> usize {
9071            16
9072        }
9073    }
9074
9075    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
9076        for &SecurityPolicy
9077    {
9078        unsafe fn encode(
9079            self,
9080            encoder: &mut fidl::encoding::Encoder<'_, D>,
9081            offset: usize,
9082            mut depth: fidl::encoding::Depth,
9083        ) -> fidl::Result<()> {
9084            encoder.debug_check_bounds::<SecurityPolicy>(offset);
9085            // Vector header
9086            let max_ordinal: u64 = self.max_ordinal_present();
9087            encoder.write_num(max_ordinal, offset);
9088            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9089            // Calling encoder.out_of_line_offset(0) is not allowed.
9090            if max_ordinal == 0 {
9091                return Ok(());
9092            }
9093            depth.increment()?;
9094            let envelope_size = 8;
9095            let bytes_len = max_ordinal as usize * envelope_size;
9096            #[allow(unused_variables)]
9097            let offset = encoder.out_of_line_offset(bytes_len);
9098            let mut _prev_end_offset: usize = 0;
9099            if 1 > max_ordinal {
9100                return Ok(());
9101            }
9102
9103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9104            // are envelope_size bytes.
9105            let cur_offset: usize = (1 - 1) * envelope_size;
9106
9107            // Zero reserved fields.
9108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9109
9110            // Safety:
9111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9113            //   envelope_size bytes, there is always sufficient room.
9114            fidl::encoding::encode_in_envelope_optional::<JobPolicyAllowlists, D>(
9115                self.job_policy
9116                    .as_ref()
9117                    .map(<JobPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9118                encoder,
9119                offset + cur_offset,
9120                depth,
9121            )?;
9122
9123            _prev_end_offset = cur_offset + envelope_size;
9124            if 2 > max_ordinal {
9125                return Ok(());
9126            }
9127
9128            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9129            // are envelope_size bytes.
9130            let cur_offset: usize = (2 - 1) * envelope_size;
9131
9132            // Zero reserved fields.
9133            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9134
9135            // Safety:
9136            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9137            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9138            //   envelope_size bytes, there is always sufficient room.
9139            fidl::encoding::encode_in_envelope_optional::<CapabilityPolicyAllowlists, D>(
9140                self.capability_policy
9141                    .as_ref()
9142                    .map(<CapabilityPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9143                encoder,
9144                offset + cur_offset,
9145                depth,
9146            )?;
9147
9148            _prev_end_offset = cur_offset + envelope_size;
9149            if 3 > max_ordinal {
9150                return Ok(());
9151            }
9152
9153            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9154            // are envelope_size bytes.
9155            let cur_offset: usize = (3 - 1) * envelope_size;
9156
9157            // Zero reserved fields.
9158            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9159
9160            // Safety:
9161            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9162            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9163            //   envelope_size bytes, there is always sufficient room.
9164            fidl::encoding::encode_in_envelope_optional::<DebugRegistrationPolicyAllowlists, D>(
9165                self.debug_registration_policy.as_ref().map(
9166                    <DebugRegistrationPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow,
9167                ),
9168                encoder,
9169                offset + cur_offset,
9170                depth,
9171            )?;
9172
9173            _prev_end_offset = cur_offset + envelope_size;
9174            if 4 > max_ordinal {
9175                return Ok(());
9176            }
9177
9178            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9179            // are envelope_size bytes.
9180            let cur_offset: usize = (4 - 1) * envelope_size;
9181
9182            // Zero reserved fields.
9183            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9184
9185            // Safety:
9186            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9187            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9188            //   envelope_size bytes, there is always sufficient room.
9189            fidl::encoding::encode_in_envelope_optional::<ChildPolicyAllowlists, D>(
9190                self.child_policy
9191                    .as_ref()
9192                    .map(<ChildPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9193                encoder,
9194                offset + cur_offset,
9195                depth,
9196            )?;
9197
9198            _prev_end_offset = cur_offset + envelope_size;
9199
9200            Ok(())
9201        }
9202    }
9203
9204    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
9205        #[inline(always)]
9206        fn new_empty() -> Self {
9207            Self::default()
9208        }
9209
9210        unsafe fn decode(
9211            &mut self,
9212            decoder: &mut fidl::encoding::Decoder<'_, D>,
9213            offset: usize,
9214            mut depth: fidl::encoding::Depth,
9215        ) -> fidl::Result<()> {
9216            decoder.debug_check_bounds::<Self>(offset);
9217            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9218                None => return Err(fidl::Error::NotNullable),
9219                Some(len) => len,
9220            };
9221            // Calling decoder.out_of_line_offset(0) is not allowed.
9222            if len == 0 {
9223                return Ok(());
9224            };
9225            depth.increment()?;
9226            let envelope_size = 8;
9227            let bytes_len = len * envelope_size;
9228            let offset = decoder.out_of_line_offset(bytes_len)?;
9229            // Decode the envelope for each type.
9230            let mut _next_ordinal_to_read = 0;
9231            let mut next_offset = offset;
9232            let end_offset = offset + bytes_len;
9233            _next_ordinal_to_read += 1;
9234            if next_offset >= end_offset {
9235                return Ok(());
9236            }
9237
9238            // Decode unknown envelopes for gaps in ordinals.
9239            while _next_ordinal_to_read < 1 {
9240                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9241                _next_ordinal_to_read += 1;
9242                next_offset += envelope_size;
9243            }
9244
9245            let next_out_of_line = decoder.next_out_of_line();
9246            let handles_before = decoder.remaining_handles();
9247            if let Some((inlined, num_bytes, num_handles)) =
9248                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9249            {
9250                let member_inline_size =
9251                    <JobPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9252                        decoder.context,
9253                    );
9254                if inlined != (member_inline_size <= 4) {
9255                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9256                }
9257                let inner_offset;
9258                let mut inner_depth = depth.clone();
9259                if inlined {
9260                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9261                    inner_offset = next_offset;
9262                } else {
9263                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9264                    inner_depth.increment()?;
9265                }
9266                let val_ref =
9267                    self.job_policy.get_or_insert_with(|| fidl::new_empty!(JobPolicyAllowlists, D));
9268                fidl::decode!(JobPolicyAllowlists, D, val_ref, decoder, inner_offset, inner_depth)?;
9269                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9270                {
9271                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9272                }
9273                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9274                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9275                }
9276            }
9277
9278            next_offset += envelope_size;
9279            _next_ordinal_to_read += 1;
9280            if next_offset >= end_offset {
9281                return Ok(());
9282            }
9283
9284            // Decode unknown envelopes for gaps in ordinals.
9285            while _next_ordinal_to_read < 2 {
9286                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9287                _next_ordinal_to_read += 1;
9288                next_offset += envelope_size;
9289            }
9290
9291            let next_out_of_line = decoder.next_out_of_line();
9292            let handles_before = decoder.remaining_handles();
9293            if let Some((inlined, num_bytes, num_handles)) =
9294                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9295            {
9296                let member_inline_size =
9297                    <CapabilityPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9298                        decoder.context,
9299                    );
9300                if inlined != (member_inline_size <= 4) {
9301                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9302                }
9303                let inner_offset;
9304                let mut inner_depth = depth.clone();
9305                if inlined {
9306                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9307                    inner_offset = next_offset;
9308                } else {
9309                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9310                    inner_depth.increment()?;
9311                }
9312                let val_ref = self
9313                    .capability_policy
9314                    .get_or_insert_with(|| fidl::new_empty!(CapabilityPolicyAllowlists, D));
9315                fidl::decode!(
9316                    CapabilityPolicyAllowlists,
9317                    D,
9318                    val_ref,
9319                    decoder,
9320                    inner_offset,
9321                    inner_depth
9322                )?;
9323                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9324                {
9325                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9326                }
9327                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9328                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9329                }
9330            }
9331
9332            next_offset += envelope_size;
9333            _next_ordinal_to_read += 1;
9334            if next_offset >= end_offset {
9335                return Ok(());
9336            }
9337
9338            // Decode unknown envelopes for gaps in ordinals.
9339            while _next_ordinal_to_read < 3 {
9340                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9341                _next_ordinal_to_read += 1;
9342                next_offset += envelope_size;
9343            }
9344
9345            let next_out_of_line = decoder.next_out_of_line();
9346            let handles_before = decoder.remaining_handles();
9347            if let Some((inlined, num_bytes, num_handles)) =
9348                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9349            {
9350                let member_inline_size =
9351                    <DebugRegistrationPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9352                        decoder.context,
9353                    );
9354                if inlined != (member_inline_size <= 4) {
9355                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9356                }
9357                let inner_offset;
9358                let mut inner_depth = depth.clone();
9359                if inlined {
9360                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9361                    inner_offset = next_offset;
9362                } else {
9363                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9364                    inner_depth.increment()?;
9365                }
9366                let val_ref = self
9367                    .debug_registration_policy
9368                    .get_or_insert_with(|| fidl::new_empty!(DebugRegistrationPolicyAllowlists, D));
9369                fidl::decode!(
9370                    DebugRegistrationPolicyAllowlists,
9371                    D,
9372                    val_ref,
9373                    decoder,
9374                    inner_offset,
9375                    inner_depth
9376                )?;
9377                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9378                {
9379                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9380                }
9381                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9382                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9383                }
9384            }
9385
9386            next_offset += envelope_size;
9387            _next_ordinal_to_read += 1;
9388            if next_offset >= end_offset {
9389                return Ok(());
9390            }
9391
9392            // Decode unknown envelopes for gaps in ordinals.
9393            while _next_ordinal_to_read < 4 {
9394                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9395                _next_ordinal_to_read += 1;
9396                next_offset += envelope_size;
9397            }
9398
9399            let next_out_of_line = decoder.next_out_of_line();
9400            let handles_before = decoder.remaining_handles();
9401            if let Some((inlined, num_bytes, num_handles)) =
9402                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9403            {
9404                let member_inline_size =
9405                    <ChildPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9406                        decoder.context,
9407                    );
9408                if inlined != (member_inline_size <= 4) {
9409                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9410                }
9411                let inner_offset;
9412                let mut inner_depth = depth.clone();
9413                if inlined {
9414                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9415                    inner_offset = next_offset;
9416                } else {
9417                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9418                    inner_depth.increment()?;
9419                }
9420                let val_ref = self
9421                    .child_policy
9422                    .get_or_insert_with(|| fidl::new_empty!(ChildPolicyAllowlists, D));
9423                fidl::decode!(
9424                    ChildPolicyAllowlists,
9425                    D,
9426                    val_ref,
9427                    decoder,
9428                    inner_offset,
9429                    inner_depth
9430                )?;
9431                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9432                {
9433                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9434                }
9435                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9436                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9437                }
9438            }
9439
9440            next_offset += envelope_size;
9441
9442            // Decode the remaining unknown envelopes.
9443            while next_offset < end_offset {
9444                _next_ordinal_to_read += 1;
9445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9446                next_offset += envelope_size;
9447            }
9448
9449            Ok(())
9450        }
9451    }
9452
9453    impl Sources {
9454        #[inline(always)]
9455        fn max_ordinal_present(&self) -> u64 {
9456            if let Some(_) = self.capability_type {
9457                return 7;
9458            }
9459            if let Some(_) = self.component {
9460                return 6;
9461            }
9462            if let Some(_) = self.namespace {
9463                return 5;
9464            }
9465            if let Some(_) = self.collection {
9466                return 4;
9467            }
9468            if let Some(_) = self.capability {
9469                return 3;
9470            }
9471            if let Some(_) = self.builtin {
9472                return 2;
9473            }
9474            if let Some(_) = self.framework {
9475                return 1;
9476            }
9477            0
9478        }
9479    }
9480
9481    impl fidl::encoding::ValueTypeMarker for Sources {
9482        type Borrowed<'a> = &'a Self;
9483        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9484            value
9485        }
9486    }
9487
9488    unsafe impl fidl::encoding::TypeMarker for Sources {
9489        type Owned = Self;
9490
9491        #[inline(always)]
9492        fn inline_align(_context: fidl::encoding::Context) -> usize {
9493            8
9494        }
9495
9496        #[inline(always)]
9497        fn inline_size(_context: fidl::encoding::Context) -> usize {
9498            16
9499        }
9500    }
9501
9502    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Sources, D> for &Sources {
9503        unsafe fn encode(
9504            self,
9505            encoder: &mut fidl::encoding::Encoder<'_, D>,
9506            offset: usize,
9507            mut depth: fidl::encoding::Depth,
9508        ) -> fidl::Result<()> {
9509            encoder.debug_check_bounds::<Sources>(offset);
9510            // Vector header
9511            let max_ordinal: u64 = self.max_ordinal_present();
9512            encoder.write_num(max_ordinal, offset);
9513            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9514            // Calling encoder.out_of_line_offset(0) is not allowed.
9515            if max_ordinal == 0 {
9516                return Ok(());
9517            }
9518            depth.increment()?;
9519            let envelope_size = 8;
9520            let bytes_len = max_ordinal as usize * envelope_size;
9521            #[allow(unused_variables)]
9522            let offset = encoder.out_of_line_offset(bytes_len);
9523            let mut _prev_end_offset: usize = 0;
9524            if 1 > max_ordinal {
9525                return Ok(());
9526            }
9527
9528            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9529            // are envelope_size bytes.
9530            let cur_offset: usize = (1 - 1) * envelope_size;
9531
9532            // Zero reserved fields.
9533            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9534
9535            // Safety:
9536            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9537            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9538            //   envelope_size bytes, there is always sufficient room.
9539            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9540                self.framework.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9541                encoder,
9542                offset + cur_offset,
9543                depth,
9544            )?;
9545
9546            _prev_end_offset = cur_offset + envelope_size;
9547            if 2 > max_ordinal {
9548                return Ok(());
9549            }
9550
9551            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9552            // are envelope_size bytes.
9553            let cur_offset: usize = (2 - 1) * envelope_size;
9554
9555            // Zero reserved fields.
9556            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9557
9558            // Safety:
9559            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9560            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9561            //   envelope_size bytes, there is always sufficient room.
9562            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9563                self.builtin.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9564                encoder,
9565                offset + cur_offset,
9566                depth,
9567            )?;
9568
9569            _prev_end_offset = cur_offset + envelope_size;
9570            if 3 > max_ordinal {
9571                return Ok(());
9572            }
9573
9574            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9575            // are envelope_size bytes.
9576            let cur_offset: usize = (3 - 1) * envelope_size;
9577
9578            // Zero reserved fields.
9579            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9580
9581            // Safety:
9582            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9583            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9584            //   envelope_size bytes, there is always sufficient room.
9585            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9586                self.capability.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9587                encoder,
9588                offset + cur_offset,
9589                depth,
9590            )?;
9591
9592            _prev_end_offset = cur_offset + envelope_size;
9593            if 4 > max_ordinal {
9594                return Ok(());
9595            }
9596
9597            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9598            // are envelope_size bytes.
9599            let cur_offset: usize = (4 - 1) * envelope_size;
9600
9601            // Zero reserved fields.
9602            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9603
9604            // Safety:
9605            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9606            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9607            //   envelope_size bytes, there is always sufficient room.
9608            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9609                self.collection.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9610                encoder,
9611                offset + cur_offset,
9612                depth,
9613            )?;
9614
9615            _prev_end_offset = cur_offset + envelope_size;
9616            if 5 > max_ordinal {
9617                return Ok(());
9618            }
9619
9620            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9621            // are envelope_size bytes.
9622            let cur_offset: usize = (5 - 1) * envelope_size;
9623
9624            // Zero reserved fields.
9625            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9626
9627            // Safety:
9628            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9629            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9630            //   envelope_size bytes, there is always sufficient room.
9631            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9632                self.namespace.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9633                encoder,
9634                offset + cur_offset,
9635                depth,
9636            )?;
9637
9638            _prev_end_offset = cur_offset + envelope_size;
9639            if 6 > max_ordinal {
9640                return Ok(());
9641            }
9642
9643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9644            // are envelope_size bytes.
9645            let cur_offset: usize = (6 - 1) * envelope_size;
9646
9647            // Zero reserved fields.
9648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9649
9650            // Safety:
9651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9653            //   envelope_size bytes, there is always sufficient room.
9654            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9655                self.component.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9656                encoder,
9657                offset + cur_offset,
9658                depth,
9659            )?;
9660
9661            _prev_end_offset = cur_offset + envelope_size;
9662            if 7 > max_ordinal {
9663                return Ok(());
9664            }
9665
9666            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9667            // are envelope_size bytes.
9668            let cur_offset: usize = (7 - 1) * envelope_size;
9669
9670            // Zero reserved fields.
9671            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9672
9673            // Safety:
9674            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9675            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9676            //   envelope_size bytes, there is always sufficient room.
9677            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
9678                self.capability_type.as_ref().map(
9679                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
9680                ),
9681                encoder,
9682                offset + cur_offset,
9683                depth,
9684            )?;
9685
9686            _prev_end_offset = cur_offset + envelope_size;
9687
9688            Ok(())
9689        }
9690    }
9691
9692    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Sources {
9693        #[inline(always)]
9694        fn new_empty() -> Self {
9695            Self::default()
9696        }
9697
9698        unsafe fn decode(
9699            &mut self,
9700            decoder: &mut fidl::encoding::Decoder<'_, D>,
9701            offset: usize,
9702            mut depth: fidl::encoding::Depth,
9703        ) -> fidl::Result<()> {
9704            decoder.debug_check_bounds::<Self>(offset);
9705            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9706                None => return Err(fidl::Error::NotNullable),
9707                Some(len) => len,
9708            };
9709            // Calling decoder.out_of_line_offset(0) is not allowed.
9710            if len == 0 {
9711                return Ok(());
9712            };
9713            depth.increment()?;
9714            let envelope_size = 8;
9715            let bytes_len = len * envelope_size;
9716            let offset = decoder.out_of_line_offset(bytes_len)?;
9717            // Decode the envelope for each type.
9718            let mut _next_ordinal_to_read = 0;
9719            let mut next_offset = offset;
9720            let end_offset = offset + bytes_len;
9721            _next_ordinal_to_read += 1;
9722            if next_offset >= end_offset {
9723                return Ok(());
9724            }
9725
9726            // Decode unknown envelopes for gaps in ordinals.
9727            while _next_ordinal_to_read < 1 {
9728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9729                _next_ordinal_to_read += 1;
9730                next_offset += envelope_size;
9731            }
9732
9733            let next_out_of_line = decoder.next_out_of_line();
9734            let handles_before = decoder.remaining_handles();
9735            if let Some((inlined, num_bytes, num_handles)) =
9736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9737            {
9738                let member_inline_size =
9739                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9740                if inlined != (member_inline_size <= 4) {
9741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9742                }
9743                let inner_offset;
9744                let mut inner_depth = depth.clone();
9745                if inlined {
9746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9747                    inner_offset = next_offset;
9748                } else {
9749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9750                    inner_depth.increment()?;
9751                }
9752                let val_ref = self.framework.get_or_insert_with(|| fidl::new_empty!(bool, D));
9753                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9754                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9755                {
9756                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9757                }
9758                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9759                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9760                }
9761            }
9762
9763            next_offset += envelope_size;
9764            _next_ordinal_to_read += 1;
9765            if next_offset >= end_offset {
9766                return Ok(());
9767            }
9768
9769            // Decode unknown envelopes for gaps in ordinals.
9770            while _next_ordinal_to_read < 2 {
9771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9772                _next_ordinal_to_read += 1;
9773                next_offset += envelope_size;
9774            }
9775
9776            let next_out_of_line = decoder.next_out_of_line();
9777            let handles_before = decoder.remaining_handles();
9778            if let Some((inlined, num_bytes, num_handles)) =
9779                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9780            {
9781                let member_inline_size =
9782                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9783                if inlined != (member_inline_size <= 4) {
9784                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9785                }
9786                let inner_offset;
9787                let mut inner_depth = depth.clone();
9788                if inlined {
9789                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9790                    inner_offset = next_offset;
9791                } else {
9792                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9793                    inner_depth.increment()?;
9794                }
9795                let val_ref = self.builtin.get_or_insert_with(|| fidl::new_empty!(bool, D));
9796                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9798                {
9799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9800                }
9801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9803                }
9804            }
9805
9806            next_offset += envelope_size;
9807            _next_ordinal_to_read += 1;
9808            if next_offset >= end_offset {
9809                return Ok(());
9810            }
9811
9812            // Decode unknown envelopes for gaps in ordinals.
9813            while _next_ordinal_to_read < 3 {
9814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9815                _next_ordinal_to_read += 1;
9816                next_offset += envelope_size;
9817            }
9818
9819            let next_out_of_line = decoder.next_out_of_line();
9820            let handles_before = decoder.remaining_handles();
9821            if let Some((inlined, num_bytes, num_handles)) =
9822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9823            {
9824                let member_inline_size =
9825                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9826                if inlined != (member_inline_size <= 4) {
9827                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9828                }
9829                let inner_offset;
9830                let mut inner_depth = depth.clone();
9831                if inlined {
9832                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9833                    inner_offset = next_offset;
9834                } else {
9835                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9836                    inner_depth.increment()?;
9837                }
9838                let val_ref = self.capability.get_or_insert_with(|| fidl::new_empty!(bool, D));
9839                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9840                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9841                {
9842                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9843                }
9844                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9845                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9846                }
9847            }
9848
9849            next_offset += envelope_size;
9850            _next_ordinal_to_read += 1;
9851            if next_offset >= end_offset {
9852                return Ok(());
9853            }
9854
9855            // Decode unknown envelopes for gaps in ordinals.
9856            while _next_ordinal_to_read < 4 {
9857                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9858                _next_ordinal_to_read += 1;
9859                next_offset += envelope_size;
9860            }
9861
9862            let next_out_of_line = decoder.next_out_of_line();
9863            let handles_before = decoder.remaining_handles();
9864            if let Some((inlined, num_bytes, num_handles)) =
9865                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9866            {
9867                let member_inline_size =
9868                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9869                if inlined != (member_inline_size <= 4) {
9870                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9871                }
9872                let inner_offset;
9873                let mut inner_depth = depth.clone();
9874                if inlined {
9875                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9876                    inner_offset = next_offset;
9877                } else {
9878                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9879                    inner_depth.increment()?;
9880                }
9881                let val_ref = self.collection.get_or_insert_with(|| fidl::new_empty!(bool, D));
9882                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9883                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9884                {
9885                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9886                }
9887                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9888                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9889                }
9890            }
9891
9892            next_offset += envelope_size;
9893            _next_ordinal_to_read += 1;
9894            if next_offset >= end_offset {
9895                return Ok(());
9896            }
9897
9898            // Decode unknown envelopes for gaps in ordinals.
9899            while _next_ordinal_to_read < 5 {
9900                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9901                _next_ordinal_to_read += 1;
9902                next_offset += envelope_size;
9903            }
9904
9905            let next_out_of_line = decoder.next_out_of_line();
9906            let handles_before = decoder.remaining_handles();
9907            if let Some((inlined, num_bytes, num_handles)) =
9908                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9909            {
9910                let member_inline_size =
9911                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9912                if inlined != (member_inline_size <= 4) {
9913                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9914                }
9915                let inner_offset;
9916                let mut inner_depth = depth.clone();
9917                if inlined {
9918                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9919                    inner_offset = next_offset;
9920                } else {
9921                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9922                    inner_depth.increment()?;
9923                }
9924                let val_ref = self.namespace.get_or_insert_with(|| fidl::new_empty!(bool, D));
9925                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9926                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9927                {
9928                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9929                }
9930                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9931                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9932                }
9933            }
9934
9935            next_offset += envelope_size;
9936            _next_ordinal_to_read += 1;
9937            if next_offset >= end_offset {
9938                return Ok(());
9939            }
9940
9941            // Decode unknown envelopes for gaps in ordinals.
9942            while _next_ordinal_to_read < 6 {
9943                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9944                _next_ordinal_to_read += 1;
9945                next_offset += envelope_size;
9946            }
9947
9948            let next_out_of_line = decoder.next_out_of_line();
9949            let handles_before = decoder.remaining_handles();
9950            if let Some((inlined, num_bytes, num_handles)) =
9951                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9952            {
9953                let member_inline_size =
9954                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9955                if inlined != (member_inline_size <= 4) {
9956                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9957                }
9958                let inner_offset;
9959                let mut inner_depth = depth.clone();
9960                if inlined {
9961                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9962                    inner_offset = next_offset;
9963                } else {
9964                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9965                    inner_depth.increment()?;
9966                }
9967                let val_ref = self.component.get_or_insert_with(|| fidl::new_empty!(bool, D));
9968                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9969                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9970                {
9971                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9972                }
9973                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9974                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9975                }
9976            }
9977
9978            next_offset += envelope_size;
9979            _next_ordinal_to_read += 1;
9980            if next_offset >= end_offset {
9981                return Ok(());
9982            }
9983
9984            // Decode unknown envelopes for gaps in ordinals.
9985            while _next_ordinal_to_read < 7 {
9986                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9987                _next_ordinal_to_read += 1;
9988                next_offset += envelope_size;
9989            }
9990
9991            let next_out_of_line = decoder.next_out_of_line();
9992            let handles_before = decoder.remaining_handles();
9993            if let Some((inlined, num_bytes, num_handles)) =
9994                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9995            {
9996                let member_inline_size =
9997                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
9998                        decoder.context,
9999                    );
10000                if inlined != (member_inline_size <= 4) {
10001                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10002                }
10003                let inner_offset;
10004                let mut inner_depth = depth.clone();
10005                if inlined {
10006                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10007                    inner_offset = next_offset;
10008                } else {
10009                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10010                    inner_depth.increment()?;
10011                }
10012                let val_ref = self
10013                    .capability_type
10014                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10015                fidl::decode!(
10016                    fidl::encoding::BoundedString<100>,
10017                    D,
10018                    val_ref,
10019                    decoder,
10020                    inner_offset,
10021                    inner_depth
10022                )?;
10023                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10024                {
10025                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10026                }
10027                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10028                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10029                }
10030            }
10031
10032            next_offset += envelope_size;
10033
10034            // Decode the remaining unknown envelopes.
10035            while next_offset < end_offset {
10036                _next_ordinal_to_read += 1;
10037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10038                next_offset += envelope_size;
10039            }
10040
10041            Ok(())
10042        }
10043    }
10044
10045    impl Void {
10046        #[inline(always)]
10047        fn max_ordinal_present(&self) -> u64 {
10048            if let Some(_) = self.moniker {
10049                return 2;
10050            }
10051            if let Some(_) = self.capability {
10052                return 1;
10053            }
10054            0
10055        }
10056    }
10057
10058    impl fidl::encoding::ValueTypeMarker for Void {
10059        type Borrowed<'a> = &'a Self;
10060        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10061            value
10062        }
10063    }
10064
10065    unsafe impl fidl::encoding::TypeMarker for Void {
10066        type Owned = Self;
10067
10068        #[inline(always)]
10069        fn inline_align(_context: fidl::encoding::Context) -> usize {
10070            8
10071        }
10072
10073        #[inline(always)]
10074        fn inline_size(_context: fidl::encoding::Context) -> usize {
10075            16
10076        }
10077    }
10078
10079    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Void, D> for &Void {
10080        unsafe fn encode(
10081            self,
10082            encoder: &mut fidl::encoding::Encoder<'_, D>,
10083            offset: usize,
10084            mut depth: fidl::encoding::Depth,
10085        ) -> fidl::Result<()> {
10086            encoder.debug_check_bounds::<Void>(offset);
10087            // Vector header
10088            let max_ordinal: u64 = self.max_ordinal_present();
10089            encoder.write_num(max_ordinal, offset);
10090            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10091            // Calling encoder.out_of_line_offset(0) is not allowed.
10092            if max_ordinal == 0 {
10093                return Ok(());
10094            }
10095            depth.increment()?;
10096            let envelope_size = 8;
10097            let bytes_len = max_ordinal as usize * envelope_size;
10098            #[allow(unused_variables)]
10099            let offset = encoder.out_of_line_offset(bytes_len);
10100            let mut _prev_end_offset: usize = 0;
10101            if 1 > max_ordinal {
10102                return Ok(());
10103            }
10104
10105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10106            // are envelope_size bytes.
10107            let cur_offset: usize = (1 - 1) * envelope_size;
10108
10109            // Zero reserved fields.
10110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10111
10112            // Safety:
10113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10115            //   envelope_size bytes, there is always sufficient room.
10116            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
10117                self.capability
10118                    .as_ref()
10119                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
10120                encoder,
10121                offset + cur_offset,
10122                depth,
10123            )?;
10124
10125            _prev_end_offset = cur_offset + envelope_size;
10126            if 2 > max_ordinal {
10127                return Ok(());
10128            }
10129
10130            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10131            // are envelope_size bytes.
10132            let cur_offset: usize = (2 - 1) * envelope_size;
10133
10134            // Zero reserved fields.
10135            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10136
10137            // Safety:
10138            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10139            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10140            //   envelope_size bytes, there is always sufficient room.
10141            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
10142            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
10143            encoder, offset + cur_offset, depth
10144        )?;
10145
10146            _prev_end_offset = cur_offset + envelope_size;
10147
10148            Ok(())
10149        }
10150    }
10151
10152    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Void {
10153        #[inline(always)]
10154        fn new_empty() -> Self {
10155            Self::default()
10156        }
10157
10158        unsafe fn decode(
10159            &mut self,
10160            decoder: &mut fidl::encoding::Decoder<'_, D>,
10161            offset: usize,
10162            mut depth: fidl::encoding::Depth,
10163        ) -> fidl::Result<()> {
10164            decoder.debug_check_bounds::<Self>(offset);
10165            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10166                None => return Err(fidl::Error::NotNullable),
10167                Some(len) => len,
10168            };
10169            // Calling decoder.out_of_line_offset(0) is not allowed.
10170            if len == 0 {
10171                return Ok(());
10172            };
10173            depth.increment()?;
10174            let envelope_size = 8;
10175            let bytes_len = len * envelope_size;
10176            let offset = decoder.out_of_line_offset(bytes_len)?;
10177            // Decode the envelope for each type.
10178            let mut _next_ordinal_to_read = 0;
10179            let mut next_offset = offset;
10180            let end_offset = offset + bytes_len;
10181            _next_ordinal_to_read += 1;
10182            if next_offset >= end_offset {
10183                return Ok(());
10184            }
10185
10186            // Decode unknown envelopes for gaps in ordinals.
10187            while _next_ordinal_to_read < 1 {
10188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10189                _next_ordinal_to_read += 1;
10190                next_offset += envelope_size;
10191            }
10192
10193            let next_out_of_line = decoder.next_out_of_line();
10194            let handles_before = decoder.remaining_handles();
10195            if let Some((inlined, num_bytes, num_handles)) =
10196                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10197            {
10198                let member_inline_size =
10199                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
10200                        decoder.context,
10201                    );
10202                if inlined != (member_inline_size <= 4) {
10203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10204                }
10205                let inner_offset;
10206                let mut inner_depth = depth.clone();
10207                if inlined {
10208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10209                    inner_offset = next_offset;
10210                } else {
10211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10212                    inner_depth.increment()?;
10213                }
10214                let val_ref =
10215                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
10216                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
10217                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10218                {
10219                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10220                }
10221                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10222                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10223                }
10224            }
10225
10226            next_offset += envelope_size;
10227            _next_ordinal_to_read += 1;
10228            if next_offset >= end_offset {
10229                return Ok(());
10230            }
10231
10232            // Decode unknown envelopes for gaps in ordinals.
10233            while _next_ordinal_to_read < 2 {
10234                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10235                _next_ordinal_to_read += 1;
10236                next_offset += envelope_size;
10237            }
10238
10239            let next_out_of_line = decoder.next_out_of_line();
10240            let handles_before = decoder.remaining_handles();
10241            if let Some((inlined, num_bytes, num_handles)) =
10242                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10243            {
10244                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10245                if inlined != (member_inline_size <= 4) {
10246                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10247                }
10248                let inner_offset;
10249                let mut inner_depth = depth.clone();
10250                if inlined {
10251                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10252                    inner_offset = next_offset;
10253                } else {
10254                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10255                    inner_depth.increment()?;
10256                }
10257                let val_ref = self.moniker.get_or_insert_with(|| {
10258                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
10259                });
10260                fidl::decode!(
10261                    fidl::encoding::BoundedString<4096>,
10262                    D,
10263                    val_ref,
10264                    decoder,
10265                    inner_offset,
10266                    inner_depth
10267                )?;
10268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10269                {
10270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10271                }
10272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10274                }
10275            }
10276
10277            next_offset += envelope_size;
10278
10279            // Decode the remaining unknown envelopes.
10280            while next_offset < end_offset {
10281                _next_ordinal_to_read += 1;
10282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10283                next_offset += envelope_size;
10284            }
10285
10286            Ok(())
10287        }
10288    }
10289
10290    impl fidl::encoding::ValueTypeMarker for AggregateCapability {
10291        type Borrowed<'a> = &'a Self;
10292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10293            value
10294        }
10295    }
10296
10297    unsafe impl fidl::encoding::TypeMarker for AggregateCapability {
10298        type Owned = Self;
10299
10300        #[inline(always)]
10301        fn inline_align(_context: fidl::encoding::Context) -> usize {
10302            8
10303        }
10304
10305        #[inline(always)]
10306        fn inline_size(_context: fidl::encoding::Context) -> usize {
10307            16
10308        }
10309    }
10310
10311    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateCapability, D>
10312        for &AggregateCapability
10313    {
10314        #[inline]
10315        unsafe fn encode(
10316            self,
10317            encoder: &mut fidl::encoding::Encoder<'_, D>,
10318            offset: usize,
10319            _depth: fidl::encoding::Depth,
10320        ) -> fidl::Result<()> {
10321            encoder.debug_check_bounds::<AggregateCapability>(offset);
10322            encoder.write_num::<u64>(self.ordinal(), offset);
10323            match self {
10324                AggregateCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
10325                    fidl::encoding::BoundedString<100>,
10326                    D,
10327                >(
10328                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
10329                        val,
10330                    ),
10331                    encoder,
10332                    offset + 8,
10333                    _depth,
10334                ),
10335            }
10336        }
10337    }
10338
10339    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateCapability {
10340        #[inline(always)]
10341        fn new_empty() -> Self {
10342            Self::Service(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
10343        }
10344
10345        #[inline]
10346        unsafe fn decode(
10347            &mut self,
10348            decoder: &mut fidl::encoding::Decoder<'_, D>,
10349            offset: usize,
10350            mut depth: fidl::encoding::Depth,
10351        ) -> fidl::Result<()> {
10352            decoder.debug_check_bounds::<Self>(offset);
10353            #[allow(unused_variables)]
10354            let next_out_of_line = decoder.next_out_of_line();
10355            let handles_before = decoder.remaining_handles();
10356            let (ordinal, inlined, num_bytes, num_handles) =
10357                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10358
10359            let member_inline_size = match ordinal {
10360                1 => {
10361                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10362                        decoder.context,
10363                    )
10364                }
10365                _ => return Err(fidl::Error::UnknownUnionTag),
10366            };
10367
10368            if inlined != (member_inline_size <= 4) {
10369                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10370            }
10371            let _inner_offset;
10372            if inlined {
10373                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10374                _inner_offset = offset + 8;
10375            } else {
10376                depth.increment()?;
10377                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10378            }
10379            match ordinal {
10380                1 => {
10381                    #[allow(irrefutable_let_patterns)]
10382                    if let AggregateCapability::Service(_) = self {
10383                        // Do nothing, read the value into the object
10384                    } else {
10385                        // Initialize `self` to the right variant
10386                        *self = AggregateCapability::Service(fidl::new_empty!(
10387                            fidl::encoding::BoundedString<100>,
10388                            D
10389                        ));
10390                    }
10391                    #[allow(irrefutable_let_patterns)]
10392                    if let AggregateCapability::Service(ref mut val) = self {
10393                        fidl::decode!(
10394                            fidl::encoding::BoundedString<100>,
10395                            D,
10396                            val,
10397                            decoder,
10398                            _inner_offset,
10399                            depth
10400                        )?;
10401                    } else {
10402                        unreachable!()
10403                    }
10404                }
10405                ordinal => panic!("unexpected ordinal {:?}", ordinal),
10406            }
10407            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10408                return Err(fidl::Error::InvalidNumBytesInEnvelope);
10409            }
10410            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10411                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10412            }
10413            Ok(())
10414        }
10415    }
10416
10417    impl fidl::encoding::ValueTypeMarker for AggregateMember {
10418        type Borrowed<'a> = &'a Self;
10419        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10420            value
10421        }
10422    }
10423
10424    unsafe impl fidl::encoding::TypeMarker for AggregateMember {
10425        type Owned = Self;
10426
10427        #[inline(always)]
10428        fn inline_align(_context: fidl::encoding::Context) -> usize {
10429            8
10430        }
10431
10432        #[inline(always)]
10433        fn inline_size(_context: fidl::encoding::Context) -> usize {
10434            16
10435        }
10436    }
10437
10438    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateMember, D>
10439        for &AggregateMember
10440    {
10441        #[inline]
10442        unsafe fn encode(
10443            self,
10444            encoder: &mut fidl::encoding::Encoder<'_, D>,
10445            offset: usize,
10446            _depth: fidl::encoding::Depth,
10447        ) -> fidl::Result<()> {
10448            encoder.debug_check_bounds::<AggregateMember>(offset);
10449            encoder.write_num::<u64>(self.ordinal(), offset);
10450            match self {
10451            AggregateMember::Child(ref val) => {
10452                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ChildRef, D>(
10453                    <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
10454                    encoder, offset + 8, _depth
10455                )
10456            }
10457            AggregateMember::Collection(ref val) => {
10458                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<100>, D>(
10459                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(val),
10460                    encoder, offset + 8, _depth
10461                )
10462            }
10463            AggregateMember::Parent(ref val) => {
10464                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ParentRef, D>(
10465                    <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
10466                    encoder, offset + 8, _depth
10467                )
10468            }
10469            AggregateMember::Self_(ref val) => {
10470                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::SelfRef, D>(
10471                    <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
10472                    encoder, offset + 8, _depth
10473                )
10474            }
10475        }
10476        }
10477    }
10478
10479    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateMember {
10480        #[inline(always)]
10481        fn new_empty() -> Self {
10482            Self::Child(fidl::new_empty!(fidl_fuchsia_component_decl__common::ChildRef, D))
10483        }
10484
10485        #[inline]
10486        unsafe fn decode(
10487            &mut self,
10488            decoder: &mut fidl::encoding::Decoder<'_, D>,
10489            offset: usize,
10490            mut depth: fidl::encoding::Depth,
10491        ) -> fidl::Result<()> {
10492            decoder.debug_check_bounds::<Self>(offset);
10493            #[allow(unused_variables)]
10494            let next_out_of_line = decoder.next_out_of_line();
10495            let handles_before = decoder.remaining_handles();
10496            let (ordinal, inlined, num_bytes, num_handles) =
10497                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10498
10499            let member_inline_size = match ordinal {
10500            1 => <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10501            2 => <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10502            3 => <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10503            4 => <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10504            _ => return Err(fidl::Error::UnknownUnionTag),
10505        };
10506
10507            if inlined != (member_inline_size <= 4) {
10508                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10509            }
10510            let _inner_offset;
10511            if inlined {
10512                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10513                _inner_offset = offset + 8;
10514            } else {
10515                depth.increment()?;
10516                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10517            }
10518            match ordinal {
10519                1 => {
10520                    #[allow(irrefutable_let_patterns)]
10521                    if let AggregateMember::Child(_) = self {
10522                        // Do nothing, read the value into the object
10523                    } else {
10524                        // Initialize `self` to the right variant
10525                        *self = AggregateMember::Child(fidl::new_empty!(
10526                            fidl_fuchsia_component_decl__common::ChildRef,
10527                            D
10528                        ));
10529                    }
10530                    #[allow(irrefutable_let_patterns)]
10531                    if let AggregateMember::Child(ref mut val) = self {
10532                        fidl::decode!(
10533                            fidl_fuchsia_component_decl__common::ChildRef,
10534                            D,
10535                            val,
10536                            decoder,
10537                            _inner_offset,
10538                            depth
10539                        )?;
10540                    } else {
10541                        unreachable!()
10542                    }
10543                }
10544                2 => {
10545                    #[allow(irrefutable_let_patterns)]
10546                    if let AggregateMember::Collection(_) = self {
10547                        // Do nothing, read the value into the object
10548                    } else {
10549                        // Initialize `self` to the right variant
10550                        *self = AggregateMember::Collection(fidl::new_empty!(
10551                            fidl::encoding::BoundedString<100>,
10552                            D
10553                        ));
10554                    }
10555                    #[allow(irrefutable_let_patterns)]
10556                    if let AggregateMember::Collection(ref mut val) = self {
10557                        fidl::decode!(
10558                            fidl::encoding::BoundedString<100>,
10559                            D,
10560                            val,
10561                            decoder,
10562                            _inner_offset,
10563                            depth
10564                        )?;
10565                    } else {
10566                        unreachable!()
10567                    }
10568                }
10569                3 => {
10570                    #[allow(irrefutable_let_patterns)]
10571                    if let AggregateMember::Parent(_) = self {
10572                        // Do nothing, read the value into the object
10573                    } else {
10574                        // Initialize `self` to the right variant
10575                        *self = AggregateMember::Parent(fidl::new_empty!(
10576                            fidl_fuchsia_component_decl__common::ParentRef,
10577                            D
10578                        ));
10579                    }
10580                    #[allow(irrefutable_let_patterns)]
10581                    if let AggregateMember::Parent(ref mut val) = self {
10582                        fidl::decode!(
10583                            fidl_fuchsia_component_decl__common::ParentRef,
10584                            D,
10585                            val,
10586                            decoder,
10587                            _inner_offset,
10588                            depth
10589                        )?;
10590                    } else {
10591                        unreachable!()
10592                    }
10593                }
10594                4 => {
10595                    #[allow(irrefutable_let_patterns)]
10596                    if let AggregateMember::Self_(_) = self {
10597                        // Do nothing, read the value into the object
10598                    } else {
10599                        // Initialize `self` to the right variant
10600                        *self = AggregateMember::Self_(fidl::new_empty!(
10601                            fidl_fuchsia_component_decl__common::SelfRef,
10602                            D
10603                        ));
10604                    }
10605                    #[allow(irrefutable_let_patterns)]
10606                    if let AggregateMember::Self_(ref mut val) = self {
10607                        fidl::decode!(
10608                            fidl_fuchsia_component_decl__common::SelfRef,
10609                            D,
10610                            val,
10611                            decoder,
10612                            _inner_offset,
10613                            depth
10614                        )?;
10615                    } else {
10616                        unreachable!()
10617                    }
10618                }
10619                ordinal => panic!("unexpected ordinal {:?}", ordinal),
10620            }
10621            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10622                return Err(fidl::Error::InvalidNumBytesInEnvelope);
10623            }
10624            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10625                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10626            }
10627            Ok(())
10628        }
10629    }
10630
10631    impl fidl::encoding::ValueTypeMarker for AllowlistedCapability {
10632        type Borrowed<'a> = &'a Self;
10633        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10634            value
10635        }
10636    }
10637
10638    unsafe impl fidl::encoding::TypeMarker for AllowlistedCapability {
10639        type Owned = Self;
10640
10641        #[inline(always)]
10642        fn inline_align(_context: fidl::encoding::Context) -> usize {
10643            8
10644        }
10645
10646        #[inline(always)]
10647        fn inline_size(_context: fidl::encoding::Context) -> usize {
10648            16
10649        }
10650    }
10651
10652    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedCapability, D>
10653        for &AllowlistedCapability
10654    {
10655        #[inline]
10656        unsafe fn encode(
10657            self,
10658            encoder: &mut fidl::encoding::Encoder<'_, D>,
10659            offset: usize,
10660            _depth: fidl::encoding::Depth,
10661        ) -> fidl::Result<()> {
10662            encoder.debug_check_bounds::<AllowlistedCapability>(offset);
10663            encoder.write_num::<u64>(self.ordinal(), offset);
10664            match self {
10665                AllowlistedCapability::Directory(ref val) => {
10666                    fidl::encoding::encode_in_envelope::<AllowlistedDirectory, D>(
10667                        <AllowlistedDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
10668                        encoder,
10669                        offset + 8,
10670                        _depth,
10671                    )
10672                }
10673                AllowlistedCapability::Protocol(ref val) => {
10674                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
10675                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
10676                        encoder,
10677                        offset + 8,
10678                        _depth,
10679                    )
10680                }
10681                AllowlistedCapability::Service(ref val) => {
10682                    fidl::encoding::encode_in_envelope::<AllowlistedService, D>(
10683                        <AllowlistedService as fidl::encoding::ValueTypeMarker>::borrow(val),
10684                        encoder,
10685                        offset + 8,
10686                        _depth,
10687                    )
10688                }
10689                AllowlistedCapability::Storage(ref val) => {
10690                    fidl::encoding::encode_in_envelope::<AllowlistedStorage, D>(
10691                        <AllowlistedStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
10692                        encoder,
10693                        offset + 8,
10694                        _depth,
10695                    )
10696                }
10697                AllowlistedCapability::Runner(ref val) => {
10698                    fidl::encoding::encode_in_envelope::<AllowlistedRunner, D>(
10699                        <AllowlistedRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
10700                        encoder,
10701                        offset + 8,
10702                        _depth,
10703                    )
10704                }
10705                AllowlistedCapability::Resolver(ref val) => {
10706                    fidl::encoding::encode_in_envelope::<AllowlistedResolver, D>(
10707                        <AllowlistedResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
10708                        encoder,
10709                        offset + 8,
10710                        _depth,
10711                    )
10712                }
10713                AllowlistedCapability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
10714            }
10715        }
10716    }
10717
10718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedCapability {
10719        #[inline(always)]
10720        fn new_empty() -> Self {
10721            Self::__SourceBreaking { unknown_ordinal: 0 }
10722        }
10723
10724        #[inline]
10725        unsafe fn decode(
10726            &mut self,
10727            decoder: &mut fidl::encoding::Decoder<'_, D>,
10728            offset: usize,
10729            mut depth: fidl::encoding::Depth,
10730        ) -> fidl::Result<()> {
10731            decoder.debug_check_bounds::<Self>(offset);
10732            #[allow(unused_variables)]
10733            let next_out_of_line = decoder.next_out_of_line();
10734            let handles_before = decoder.remaining_handles();
10735            let (ordinal, inlined, num_bytes, num_handles) =
10736                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10737
10738            let member_inline_size = match ordinal {
10739                1 => <AllowlistedDirectory as fidl::encoding::TypeMarker>::inline_size(
10740                    decoder.context,
10741                ),
10742                3 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
10743                    decoder.context,
10744                ),
10745                4 => {
10746                    <AllowlistedService as fidl::encoding::TypeMarker>::inline_size(decoder.context)
10747                }
10748                5 => {
10749                    <AllowlistedStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context)
10750                }
10751                6 => {
10752                    <AllowlistedRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context)
10753                }
10754                7 => <AllowlistedResolver as fidl::encoding::TypeMarker>::inline_size(
10755                    decoder.context,
10756                ),
10757                0 => return Err(fidl::Error::UnknownUnionTag),
10758                _ => num_bytes as usize,
10759            };
10760
10761            if inlined != (member_inline_size <= 4) {
10762                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10763            }
10764            let _inner_offset;
10765            if inlined {
10766                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10767                _inner_offset = offset + 8;
10768            } else {
10769                depth.increment()?;
10770                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10771            }
10772            match ordinal {
10773                1 => {
10774                    #[allow(irrefutable_let_patterns)]
10775                    if let AllowlistedCapability::Directory(_) = self {
10776                        // Do nothing, read the value into the object
10777                    } else {
10778                        // Initialize `self` to the right variant
10779                        *self = AllowlistedCapability::Directory(fidl::new_empty!(
10780                            AllowlistedDirectory,
10781                            D
10782                        ));
10783                    }
10784                    #[allow(irrefutable_let_patterns)]
10785                    if let AllowlistedCapability::Directory(ref mut val) = self {
10786                        fidl::decode!(AllowlistedDirectory, D, val, decoder, _inner_offset, depth)?;
10787                    } else {
10788                        unreachable!()
10789                    }
10790                }
10791                3 => {
10792                    #[allow(irrefutable_let_patterns)]
10793                    if let AllowlistedCapability::Protocol(_) = self {
10794                        // Do nothing, read the value into the object
10795                    } else {
10796                        // Initialize `self` to the right variant
10797                        *self = AllowlistedCapability::Protocol(fidl::new_empty!(
10798                            AllowlistedProtocol,
10799                            D
10800                        ));
10801                    }
10802                    #[allow(irrefutable_let_patterns)]
10803                    if let AllowlistedCapability::Protocol(ref mut val) = self {
10804                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
10805                    } else {
10806                        unreachable!()
10807                    }
10808                }
10809                4 => {
10810                    #[allow(irrefutable_let_patterns)]
10811                    if let AllowlistedCapability::Service(_) = self {
10812                        // Do nothing, read the value into the object
10813                    } else {
10814                        // Initialize `self` to the right variant
10815                        *self =
10816                            AllowlistedCapability::Service(fidl::new_empty!(AllowlistedService, D));
10817                    }
10818                    #[allow(irrefutable_let_patterns)]
10819                    if let AllowlistedCapability::Service(ref mut val) = self {
10820                        fidl::decode!(AllowlistedService, D, val, decoder, _inner_offset, depth)?;
10821                    } else {
10822                        unreachable!()
10823                    }
10824                }
10825                5 => {
10826                    #[allow(irrefutable_let_patterns)]
10827                    if let AllowlistedCapability::Storage(_) = self {
10828                        // Do nothing, read the value into the object
10829                    } else {
10830                        // Initialize `self` to the right variant
10831                        *self =
10832                            AllowlistedCapability::Storage(fidl::new_empty!(AllowlistedStorage, D));
10833                    }
10834                    #[allow(irrefutable_let_patterns)]
10835                    if let AllowlistedCapability::Storage(ref mut val) = self {
10836                        fidl::decode!(AllowlistedStorage, D, val, decoder, _inner_offset, depth)?;
10837                    } else {
10838                        unreachable!()
10839                    }
10840                }
10841                6 => {
10842                    #[allow(irrefutable_let_patterns)]
10843                    if let AllowlistedCapability::Runner(_) = self {
10844                        // Do nothing, read the value into the object
10845                    } else {
10846                        // Initialize `self` to the right variant
10847                        *self =
10848                            AllowlistedCapability::Runner(fidl::new_empty!(AllowlistedRunner, D));
10849                    }
10850                    #[allow(irrefutable_let_patterns)]
10851                    if let AllowlistedCapability::Runner(ref mut val) = self {
10852                        fidl::decode!(AllowlistedRunner, D, val, decoder, _inner_offset, depth)?;
10853                    } else {
10854                        unreachable!()
10855                    }
10856                }
10857                7 => {
10858                    #[allow(irrefutable_let_patterns)]
10859                    if let AllowlistedCapability::Resolver(_) = self {
10860                        // Do nothing, read the value into the object
10861                    } else {
10862                        // Initialize `self` to the right variant
10863                        *self = AllowlistedCapability::Resolver(fidl::new_empty!(
10864                            AllowlistedResolver,
10865                            D
10866                        ));
10867                    }
10868                    #[allow(irrefutable_let_patterns)]
10869                    if let AllowlistedCapability::Resolver(ref mut val) = self {
10870                        fidl::decode!(AllowlistedResolver, D, val, decoder, _inner_offset, depth)?;
10871                    } else {
10872                        unreachable!()
10873                    }
10874                }
10875                #[allow(deprecated)]
10876                ordinal => {
10877                    for _ in 0..num_handles {
10878                        decoder.drop_next_handle()?;
10879                    }
10880                    *self = AllowlistedCapability::__SourceBreaking { unknown_ordinal: ordinal };
10881                }
10882            }
10883            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10884                return Err(fidl::Error::InvalidNumBytesInEnvelope);
10885            }
10886            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10887                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10888            }
10889            Ok(())
10890        }
10891    }
10892
10893    impl fidl::encoding::ValueTypeMarker for AllowlistedDebugRegistration {
10894        type Borrowed<'a> = &'a Self;
10895        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10896            value
10897        }
10898    }
10899
10900    unsafe impl fidl::encoding::TypeMarker for AllowlistedDebugRegistration {
10901        type Owned = Self;
10902
10903        #[inline(always)]
10904        fn inline_align(_context: fidl::encoding::Context) -> usize {
10905            8
10906        }
10907
10908        #[inline(always)]
10909        fn inline_size(_context: fidl::encoding::Context) -> usize {
10910            16
10911        }
10912    }
10913
10914    unsafe impl<D: fidl::encoding::ResourceDialect>
10915        fidl::encoding::Encode<AllowlistedDebugRegistration, D> for &AllowlistedDebugRegistration
10916    {
10917        #[inline]
10918        unsafe fn encode(
10919            self,
10920            encoder: &mut fidl::encoding::Encoder<'_, D>,
10921            offset: usize,
10922            _depth: fidl::encoding::Depth,
10923        ) -> fidl::Result<()> {
10924            encoder.debug_check_bounds::<AllowlistedDebugRegistration>(offset);
10925            encoder.write_num::<u64>(self.ordinal(), offset);
10926            match self {
10927                AllowlistedDebugRegistration::Protocol(ref val) => {
10928                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
10929                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
10930                        encoder,
10931                        offset + 8,
10932                        _depth,
10933                    )
10934                }
10935                AllowlistedDebugRegistration::__SourceBreaking { .. } => {
10936                    Err(fidl::Error::UnknownUnionTag)
10937                }
10938            }
10939        }
10940    }
10941
10942    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10943        for AllowlistedDebugRegistration
10944    {
10945        #[inline(always)]
10946        fn new_empty() -> Self {
10947            Self::__SourceBreaking { unknown_ordinal: 0 }
10948        }
10949
10950        #[inline]
10951        unsafe fn decode(
10952            &mut self,
10953            decoder: &mut fidl::encoding::Decoder<'_, D>,
10954            offset: usize,
10955            mut depth: fidl::encoding::Depth,
10956        ) -> fidl::Result<()> {
10957            decoder.debug_check_bounds::<Self>(offset);
10958            #[allow(unused_variables)]
10959            let next_out_of_line = decoder.next_out_of_line();
10960            let handles_before = decoder.remaining_handles();
10961            let (ordinal, inlined, num_bytes, num_handles) =
10962                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10963
10964            let member_inline_size = match ordinal {
10965                1 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
10966                    decoder.context,
10967                ),
10968                0 => return Err(fidl::Error::UnknownUnionTag),
10969                _ => num_bytes as usize,
10970            };
10971
10972            if inlined != (member_inline_size <= 4) {
10973                return Err(fidl::Error::InvalidInlineBitInEnvelope);
10974            }
10975            let _inner_offset;
10976            if inlined {
10977                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10978                _inner_offset = offset + 8;
10979            } else {
10980                depth.increment()?;
10981                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10982            }
10983            match ordinal {
10984                1 => {
10985                    #[allow(irrefutable_let_patterns)]
10986                    if let AllowlistedDebugRegistration::Protocol(_) = self {
10987                        // Do nothing, read the value into the object
10988                    } else {
10989                        // Initialize `self` to the right variant
10990                        *self = AllowlistedDebugRegistration::Protocol(fidl::new_empty!(
10991                            AllowlistedProtocol,
10992                            D
10993                        ));
10994                    }
10995                    #[allow(irrefutable_let_patterns)]
10996                    if let AllowlistedDebugRegistration::Protocol(ref mut val) = self {
10997                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
10998                    } else {
10999                        unreachable!()
11000                    }
11001                }
11002                #[allow(deprecated)]
11003                ordinal => {
11004                    for _ in 0..num_handles {
11005                        decoder.drop_next_handle()?;
11006                    }
11007                    *self =
11008                        AllowlistedDebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
11009                }
11010            }
11011            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11012                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11013            }
11014            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11015                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11016            }
11017            Ok(())
11018        }
11019    }
11020
11021    impl fidl::encoding::ValueTypeMarker for CapabilitySource {
11022        type Borrowed<'a> = &'a Self;
11023        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11024            value
11025        }
11026    }
11027
11028    unsafe impl fidl::encoding::TypeMarker for CapabilitySource {
11029        type Owned = Self;
11030
11031        #[inline(always)]
11032        fn inline_align(_context: fidl::encoding::Context) -> usize {
11033            8
11034        }
11035
11036        #[inline(always)]
11037        fn inline_size(_context: fidl::encoding::Context) -> usize {
11038            16
11039        }
11040    }
11041
11042    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapabilitySource, D>
11043        for &CapabilitySource
11044    {
11045        #[inline]
11046        unsafe fn encode(
11047            self,
11048            encoder: &mut fidl::encoding::Encoder<'_, D>,
11049            offset: usize,
11050            _depth: fidl::encoding::Depth,
11051        ) -> fidl::Result<()> {
11052            encoder.debug_check_bounds::<CapabilitySource>(offset);
11053            encoder.write_num::<u64>(self.ordinal(), offset);
11054            match self {
11055                CapabilitySource::Component(ref val) => {
11056                    fidl::encoding::encode_in_envelope::<Component, D>(
11057                        <Component as fidl::encoding::ValueTypeMarker>::borrow(val),
11058                        encoder,
11059                        offset + 8,
11060                        _depth,
11061                    )
11062                }
11063                CapabilitySource::Framework(ref val) => {
11064                    fidl::encoding::encode_in_envelope::<Framework, D>(
11065                        <Framework as fidl::encoding::ValueTypeMarker>::borrow(val),
11066                        encoder,
11067                        offset + 8,
11068                        _depth,
11069                    )
11070                }
11071                CapabilitySource::Builtin(ref val) => {
11072                    fidl::encoding::encode_in_envelope::<Builtin, D>(
11073                        <Builtin as fidl::encoding::ValueTypeMarker>::borrow(val),
11074                        encoder,
11075                        offset + 8,
11076                        _depth,
11077                    )
11078                }
11079                CapabilitySource::Namespace(ref val) => {
11080                    fidl::encoding::encode_in_envelope::<Namespace, D>(
11081                        <Namespace as fidl::encoding::ValueTypeMarker>::borrow(val),
11082                        encoder,
11083                        offset + 8,
11084                        _depth,
11085                    )
11086                }
11087                CapabilitySource::Capability(ref val) => {
11088                    fidl::encoding::encode_in_envelope::<Capability, D>(
11089                        <Capability as fidl::encoding::ValueTypeMarker>::borrow(val),
11090                        encoder,
11091                        offset + 8,
11092                        _depth,
11093                    )
11094                }
11095                CapabilitySource::AnonymizedAggregate(ref val) => {
11096                    fidl::encoding::encode_in_envelope::<AnonymizedAggregate, D>(
11097                        <AnonymizedAggregate as fidl::encoding::ValueTypeMarker>::borrow(val),
11098                        encoder,
11099                        offset + 8,
11100                        _depth,
11101                    )
11102                }
11103                CapabilitySource::FilteredProvider(ref val) => {
11104                    fidl::encoding::encode_in_envelope::<FilteredProvider, D>(
11105                        <FilteredProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11106                        encoder,
11107                        offset + 8,
11108                        _depth,
11109                    )
11110                }
11111                CapabilitySource::FilteredAggregateProvider(ref val) => {
11112                    fidl::encoding::encode_in_envelope::<FilteredAggregateProvider, D>(
11113                        <FilteredAggregateProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11114                        encoder,
11115                        offset + 8,
11116                        _depth,
11117                    )
11118                }
11119                CapabilitySource::Environment(ref val) => {
11120                    fidl::encoding::encode_in_envelope::<Environment, D>(
11121                        <Environment as fidl::encoding::ValueTypeMarker>::borrow(val),
11122                        encoder,
11123                        offset + 8,
11124                        _depth,
11125                    )
11126                }
11127                CapabilitySource::Void(ref val) => fidl::encoding::encode_in_envelope::<Void, D>(
11128                    <Void as fidl::encoding::ValueTypeMarker>::borrow(val),
11129                    encoder,
11130                    offset + 8,
11131                    _depth,
11132                ),
11133            }
11134        }
11135    }
11136
11137    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapabilitySource {
11138        #[inline(always)]
11139        fn new_empty() -> Self {
11140            Self::Component(fidl::new_empty!(Component, D))
11141        }
11142
11143        #[inline]
11144        unsafe fn decode(
11145            &mut self,
11146            decoder: &mut fidl::encoding::Decoder<'_, D>,
11147            offset: usize,
11148            mut depth: fidl::encoding::Depth,
11149        ) -> fidl::Result<()> {
11150            decoder.debug_check_bounds::<Self>(offset);
11151            #[allow(unused_variables)]
11152            let next_out_of_line = decoder.next_out_of_line();
11153            let handles_before = decoder.remaining_handles();
11154            let (ordinal, inlined, num_bytes, num_handles) =
11155                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11156
11157            let member_inline_size = match ordinal {
11158                1 => <Component as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11159                2 => <Framework as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11160                3 => <Builtin as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11161                4 => <Namespace as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11162                5 => <Capability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11163                6 => <AnonymizedAggregate as fidl::encoding::TypeMarker>::inline_size(
11164                    decoder.context,
11165                ),
11166                7 => <FilteredProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11167                8 => <FilteredAggregateProvider as fidl::encoding::TypeMarker>::inline_size(
11168                    decoder.context,
11169                ),
11170                9 => <Environment as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11171                10 => <Void as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11172                _ => return Err(fidl::Error::UnknownUnionTag),
11173            };
11174
11175            if inlined != (member_inline_size <= 4) {
11176                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11177            }
11178            let _inner_offset;
11179            if inlined {
11180                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11181                _inner_offset = offset + 8;
11182            } else {
11183                depth.increment()?;
11184                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11185            }
11186            match ordinal {
11187                1 => {
11188                    #[allow(irrefutable_let_patterns)]
11189                    if let CapabilitySource::Component(_) = self {
11190                        // Do nothing, read the value into the object
11191                    } else {
11192                        // Initialize `self` to the right variant
11193                        *self = CapabilitySource::Component(fidl::new_empty!(Component, D));
11194                    }
11195                    #[allow(irrefutable_let_patterns)]
11196                    if let CapabilitySource::Component(ref mut val) = self {
11197                        fidl::decode!(Component, D, val, decoder, _inner_offset, depth)?;
11198                    } else {
11199                        unreachable!()
11200                    }
11201                }
11202                2 => {
11203                    #[allow(irrefutable_let_patterns)]
11204                    if let CapabilitySource::Framework(_) = self {
11205                        // Do nothing, read the value into the object
11206                    } else {
11207                        // Initialize `self` to the right variant
11208                        *self = CapabilitySource::Framework(fidl::new_empty!(Framework, D));
11209                    }
11210                    #[allow(irrefutable_let_patterns)]
11211                    if let CapabilitySource::Framework(ref mut val) = self {
11212                        fidl::decode!(Framework, D, val, decoder, _inner_offset, depth)?;
11213                    } else {
11214                        unreachable!()
11215                    }
11216                }
11217                3 => {
11218                    #[allow(irrefutable_let_patterns)]
11219                    if let CapabilitySource::Builtin(_) = self {
11220                        // Do nothing, read the value into the object
11221                    } else {
11222                        // Initialize `self` to the right variant
11223                        *self = CapabilitySource::Builtin(fidl::new_empty!(Builtin, D));
11224                    }
11225                    #[allow(irrefutable_let_patterns)]
11226                    if let CapabilitySource::Builtin(ref mut val) = self {
11227                        fidl::decode!(Builtin, D, val, decoder, _inner_offset, depth)?;
11228                    } else {
11229                        unreachable!()
11230                    }
11231                }
11232                4 => {
11233                    #[allow(irrefutable_let_patterns)]
11234                    if let CapabilitySource::Namespace(_) = self {
11235                        // Do nothing, read the value into the object
11236                    } else {
11237                        // Initialize `self` to the right variant
11238                        *self = CapabilitySource::Namespace(fidl::new_empty!(Namespace, D));
11239                    }
11240                    #[allow(irrefutable_let_patterns)]
11241                    if let CapabilitySource::Namespace(ref mut val) = self {
11242                        fidl::decode!(Namespace, D, val, decoder, _inner_offset, depth)?;
11243                    } else {
11244                        unreachable!()
11245                    }
11246                }
11247                5 => {
11248                    #[allow(irrefutable_let_patterns)]
11249                    if let CapabilitySource::Capability(_) = self {
11250                        // Do nothing, read the value into the object
11251                    } else {
11252                        // Initialize `self` to the right variant
11253                        *self = CapabilitySource::Capability(fidl::new_empty!(Capability, D));
11254                    }
11255                    #[allow(irrefutable_let_patterns)]
11256                    if let CapabilitySource::Capability(ref mut val) = self {
11257                        fidl::decode!(Capability, D, val, decoder, _inner_offset, depth)?;
11258                    } else {
11259                        unreachable!()
11260                    }
11261                }
11262                6 => {
11263                    #[allow(irrefutable_let_patterns)]
11264                    if let CapabilitySource::AnonymizedAggregate(_) = self {
11265                        // Do nothing, read the value into the object
11266                    } else {
11267                        // Initialize `self` to the right variant
11268                        *self = CapabilitySource::AnonymizedAggregate(fidl::new_empty!(
11269                            AnonymizedAggregate,
11270                            D
11271                        ));
11272                    }
11273                    #[allow(irrefutable_let_patterns)]
11274                    if let CapabilitySource::AnonymizedAggregate(ref mut val) = self {
11275                        fidl::decode!(AnonymizedAggregate, D, val, decoder, _inner_offset, depth)?;
11276                    } else {
11277                        unreachable!()
11278                    }
11279                }
11280                7 => {
11281                    #[allow(irrefutable_let_patterns)]
11282                    if let CapabilitySource::FilteredProvider(_) = self {
11283                        // Do nothing, read the value into the object
11284                    } else {
11285                        // Initialize `self` to the right variant
11286                        *self = CapabilitySource::FilteredProvider(fidl::new_empty!(
11287                            FilteredProvider,
11288                            D
11289                        ));
11290                    }
11291                    #[allow(irrefutable_let_patterns)]
11292                    if let CapabilitySource::FilteredProvider(ref mut val) = self {
11293                        fidl::decode!(FilteredProvider, D, val, decoder, _inner_offset, depth)?;
11294                    } else {
11295                        unreachable!()
11296                    }
11297                }
11298                8 => {
11299                    #[allow(irrefutable_let_patterns)]
11300                    if let CapabilitySource::FilteredAggregateProvider(_) = self {
11301                        // Do nothing, read the value into the object
11302                    } else {
11303                        // Initialize `self` to the right variant
11304                        *self = CapabilitySource::FilteredAggregateProvider(fidl::new_empty!(
11305                            FilteredAggregateProvider,
11306                            D
11307                        ));
11308                    }
11309                    #[allow(irrefutable_let_patterns)]
11310                    if let CapabilitySource::FilteredAggregateProvider(ref mut val) = self {
11311                        fidl::decode!(
11312                            FilteredAggregateProvider,
11313                            D,
11314                            val,
11315                            decoder,
11316                            _inner_offset,
11317                            depth
11318                        )?;
11319                    } else {
11320                        unreachable!()
11321                    }
11322                }
11323                9 => {
11324                    #[allow(irrefutable_let_patterns)]
11325                    if let CapabilitySource::Environment(_) = self {
11326                        // Do nothing, read the value into the object
11327                    } else {
11328                        // Initialize `self` to the right variant
11329                        *self = CapabilitySource::Environment(fidl::new_empty!(Environment, D));
11330                    }
11331                    #[allow(irrefutable_let_patterns)]
11332                    if let CapabilitySource::Environment(ref mut val) = self {
11333                        fidl::decode!(Environment, D, val, decoder, _inner_offset, depth)?;
11334                    } else {
11335                        unreachable!()
11336                    }
11337                }
11338                10 => {
11339                    #[allow(irrefutable_let_patterns)]
11340                    if let CapabilitySource::Void(_) = self {
11341                        // Do nothing, read the value into the object
11342                    } else {
11343                        // Initialize `self` to the right variant
11344                        *self = CapabilitySource::Void(fidl::new_empty!(Void, D));
11345                    }
11346                    #[allow(irrefutable_let_patterns)]
11347                    if let CapabilitySource::Void(ref mut val) = self {
11348                        fidl::decode!(Void, D, val, decoder, _inner_offset, depth)?;
11349                    } else {
11350                        unreachable!()
11351                    }
11352                }
11353                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11354            }
11355            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11356                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11357            }
11358            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11359                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11360            }
11361            Ok(())
11362        }
11363    }
11364
11365    impl fidl::encoding::ValueTypeMarker for ComponentCapability {
11366        type Borrowed<'a> = &'a Self;
11367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11368            value
11369        }
11370    }
11371
11372    unsafe impl fidl::encoding::TypeMarker for ComponentCapability {
11373        type Owned = Self;
11374
11375        #[inline(always)]
11376        fn inline_align(_context: fidl::encoding::Context) -> usize {
11377            8
11378        }
11379
11380        #[inline(always)]
11381        fn inline_size(_context: fidl::encoding::Context) -> usize {
11382            16
11383        }
11384    }
11385
11386    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentCapability, D>
11387        for &ComponentCapability
11388    {
11389        #[inline]
11390        unsafe fn encode(
11391            self,
11392            encoder: &mut fidl::encoding::Encoder<'_, D>,
11393            offset: usize,
11394            _depth: fidl::encoding::Depth,
11395        ) -> fidl::Result<()> {
11396            encoder.debug_check_bounds::<ComponentCapability>(offset);
11397            encoder.write_num::<u64>(self.ordinal(), offset);
11398            match self {
11399            ComponentCapability::Use_(ref val) => {
11400                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Use, D>(
11401                    <fidl_fuchsia_component_decl__common::Use as fidl::encoding::ValueTypeMarker>::borrow(val),
11402                    encoder, offset + 8, _depth
11403                )
11404            }
11405            ComponentCapability::Offer(ref val) => {
11406                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
11407                    <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
11408                    encoder, offset + 8, _depth
11409                )
11410            }
11411            ComponentCapability::Expose(ref val) => {
11412                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Expose, D>(
11413                    <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::ValueTypeMarker>::borrow(val),
11414                    encoder, offset + 8, _depth
11415                )
11416            }
11417            ComponentCapability::Config(ref val) => {
11418                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Configuration, D>(
11419                    <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
11420                    encoder, offset + 8, _depth
11421                )
11422            }
11423            ComponentCapability::Dictionary(ref val) => {
11424                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Dictionary, D>(
11425                    <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
11426                    encoder, offset + 8, _depth
11427                )
11428            }
11429            ComponentCapability::Directory(ref val) => {
11430                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Directory, D>(
11431                    <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
11432                    encoder, offset + 8, _depth
11433                )
11434            }
11435            ComponentCapability::Environment(ref val) => {
11436                fidl::encoding::encode_in_envelope::<EnvironmentCapability, D>(
11437                    <EnvironmentCapability as fidl::encoding::ValueTypeMarker>::borrow(val),
11438                    encoder, offset + 8, _depth
11439                )
11440            }
11441            ComponentCapability::EventStream(ref val) => {
11442                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::EventStream, D>(
11443                    <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
11444                    encoder, offset + 8, _depth
11445                )
11446            }
11447            ComponentCapability::Protocol(ref val) => {
11448                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Protocol, D>(
11449                    <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
11450                    encoder, offset + 8, _depth
11451                )
11452            }
11453            ComponentCapability::Resolver(ref val) => {
11454                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Resolver, D>(
11455                    <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
11456                    encoder, offset + 8, _depth
11457                )
11458            }
11459            ComponentCapability::Runner(ref val) => {
11460                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Runner, D>(
11461                    <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
11462                    encoder, offset + 8, _depth
11463                )
11464            }
11465            ComponentCapability::Service(ref val) => {
11466                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Service, D>(
11467                    <fidl_fuchsia_component_decl__common::Service as fidl::encoding::ValueTypeMarker>::borrow(val),
11468                    encoder, offset + 8, _depth
11469                )
11470            }
11471            ComponentCapability::Storage(ref val) => {
11472                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Storage, D>(
11473                    <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
11474                    encoder, offset + 8, _depth
11475                )
11476            }
11477        }
11478        }
11479    }
11480
11481    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentCapability {
11482        #[inline(always)]
11483        fn new_empty() -> Self {
11484            Self::Use_(fidl::new_empty!(fidl_fuchsia_component_decl__common::Use, D))
11485        }
11486
11487        #[inline]
11488        unsafe fn decode(
11489            &mut self,
11490            decoder: &mut fidl::encoding::Decoder<'_, D>,
11491            offset: usize,
11492            mut depth: fidl::encoding::Depth,
11493        ) -> fidl::Result<()> {
11494            decoder.debug_check_bounds::<Self>(offset);
11495            #[allow(unused_variables)]
11496            let next_out_of_line = decoder.next_out_of_line();
11497            let handles_before = decoder.remaining_handles();
11498            let (ordinal, inlined, num_bytes, num_handles) =
11499                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11500
11501            let member_inline_size = match ordinal {
11502            1 => <fidl_fuchsia_component_decl__common::Use as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11503            2 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11504            3 => <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11505            4 => <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11506            5 => <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11507            6 => <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11508            7 => <EnvironmentCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11509            8 => <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11510            9 => <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11511            10 => <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11512            11 => <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11513            12 => <fidl_fuchsia_component_decl__common::Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11514            13 => <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11515            _ => return Err(fidl::Error::UnknownUnionTag),
11516        };
11517
11518            if inlined != (member_inline_size <= 4) {
11519                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11520            }
11521            let _inner_offset;
11522            if inlined {
11523                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11524                _inner_offset = offset + 8;
11525            } else {
11526                depth.increment()?;
11527                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11528            }
11529            match ordinal {
11530                1 => {
11531                    #[allow(irrefutable_let_patterns)]
11532                    if let ComponentCapability::Use_(_) = self {
11533                        // Do nothing, read the value into the object
11534                    } else {
11535                        // Initialize `self` to the right variant
11536                        *self = ComponentCapability::Use_(fidl::new_empty!(
11537                            fidl_fuchsia_component_decl__common::Use,
11538                            D
11539                        ));
11540                    }
11541                    #[allow(irrefutable_let_patterns)]
11542                    if let ComponentCapability::Use_(ref mut val) = self {
11543                        fidl::decode!(
11544                            fidl_fuchsia_component_decl__common::Use,
11545                            D,
11546                            val,
11547                            decoder,
11548                            _inner_offset,
11549                            depth
11550                        )?;
11551                    } else {
11552                        unreachable!()
11553                    }
11554                }
11555                2 => {
11556                    #[allow(irrefutable_let_patterns)]
11557                    if let ComponentCapability::Offer(_) = self {
11558                        // Do nothing, read the value into the object
11559                    } else {
11560                        // Initialize `self` to the right variant
11561                        *self = ComponentCapability::Offer(fidl::new_empty!(
11562                            fidl_fuchsia_component_decl__common::Offer,
11563                            D
11564                        ));
11565                    }
11566                    #[allow(irrefutable_let_patterns)]
11567                    if let ComponentCapability::Offer(ref mut val) = self {
11568                        fidl::decode!(
11569                            fidl_fuchsia_component_decl__common::Offer,
11570                            D,
11571                            val,
11572                            decoder,
11573                            _inner_offset,
11574                            depth
11575                        )?;
11576                    } else {
11577                        unreachable!()
11578                    }
11579                }
11580                3 => {
11581                    #[allow(irrefutable_let_patterns)]
11582                    if let ComponentCapability::Expose(_) = self {
11583                        // Do nothing, read the value into the object
11584                    } else {
11585                        // Initialize `self` to the right variant
11586                        *self = ComponentCapability::Expose(fidl::new_empty!(
11587                            fidl_fuchsia_component_decl__common::Expose,
11588                            D
11589                        ));
11590                    }
11591                    #[allow(irrefutable_let_patterns)]
11592                    if let ComponentCapability::Expose(ref mut val) = self {
11593                        fidl::decode!(
11594                            fidl_fuchsia_component_decl__common::Expose,
11595                            D,
11596                            val,
11597                            decoder,
11598                            _inner_offset,
11599                            depth
11600                        )?;
11601                    } else {
11602                        unreachable!()
11603                    }
11604                }
11605                4 => {
11606                    #[allow(irrefutable_let_patterns)]
11607                    if let ComponentCapability::Config(_) = self {
11608                        // Do nothing, read the value into the object
11609                    } else {
11610                        // Initialize `self` to the right variant
11611                        *self = ComponentCapability::Config(fidl::new_empty!(
11612                            fidl_fuchsia_component_decl__common::Configuration,
11613                            D
11614                        ));
11615                    }
11616                    #[allow(irrefutable_let_patterns)]
11617                    if let ComponentCapability::Config(ref mut val) = self {
11618                        fidl::decode!(
11619                            fidl_fuchsia_component_decl__common::Configuration,
11620                            D,
11621                            val,
11622                            decoder,
11623                            _inner_offset,
11624                            depth
11625                        )?;
11626                    } else {
11627                        unreachable!()
11628                    }
11629                }
11630                5 => {
11631                    #[allow(irrefutable_let_patterns)]
11632                    if let ComponentCapability::Dictionary(_) = self {
11633                        // Do nothing, read the value into the object
11634                    } else {
11635                        // Initialize `self` to the right variant
11636                        *self = ComponentCapability::Dictionary(fidl::new_empty!(
11637                            fidl_fuchsia_component_decl__common::Dictionary,
11638                            D
11639                        ));
11640                    }
11641                    #[allow(irrefutable_let_patterns)]
11642                    if let ComponentCapability::Dictionary(ref mut val) = self {
11643                        fidl::decode!(
11644                            fidl_fuchsia_component_decl__common::Dictionary,
11645                            D,
11646                            val,
11647                            decoder,
11648                            _inner_offset,
11649                            depth
11650                        )?;
11651                    } else {
11652                        unreachable!()
11653                    }
11654                }
11655                6 => {
11656                    #[allow(irrefutable_let_patterns)]
11657                    if let ComponentCapability::Directory(_) = self {
11658                        // Do nothing, read the value into the object
11659                    } else {
11660                        // Initialize `self` to the right variant
11661                        *self = ComponentCapability::Directory(fidl::new_empty!(
11662                            fidl_fuchsia_component_decl__common::Directory,
11663                            D
11664                        ));
11665                    }
11666                    #[allow(irrefutable_let_patterns)]
11667                    if let ComponentCapability::Directory(ref mut val) = self {
11668                        fidl::decode!(
11669                            fidl_fuchsia_component_decl__common::Directory,
11670                            D,
11671                            val,
11672                            decoder,
11673                            _inner_offset,
11674                            depth
11675                        )?;
11676                    } else {
11677                        unreachable!()
11678                    }
11679                }
11680                7 => {
11681                    #[allow(irrefutable_let_patterns)]
11682                    if let ComponentCapability::Environment(_) = self {
11683                        // Do nothing, read the value into the object
11684                    } else {
11685                        // Initialize `self` to the right variant
11686                        *self = ComponentCapability::Environment(fidl::new_empty!(
11687                            EnvironmentCapability,
11688                            D
11689                        ));
11690                    }
11691                    #[allow(irrefutable_let_patterns)]
11692                    if let ComponentCapability::Environment(ref mut val) = self {
11693                        fidl::decode!(
11694                            EnvironmentCapability,
11695                            D,
11696                            val,
11697                            decoder,
11698                            _inner_offset,
11699                            depth
11700                        )?;
11701                    } else {
11702                        unreachable!()
11703                    }
11704                }
11705                8 => {
11706                    #[allow(irrefutable_let_patterns)]
11707                    if let ComponentCapability::EventStream(_) = self {
11708                        // Do nothing, read the value into the object
11709                    } else {
11710                        // Initialize `self` to the right variant
11711                        *self = ComponentCapability::EventStream(fidl::new_empty!(
11712                            fidl_fuchsia_component_decl__common::EventStream,
11713                            D
11714                        ));
11715                    }
11716                    #[allow(irrefutable_let_patterns)]
11717                    if let ComponentCapability::EventStream(ref mut val) = self {
11718                        fidl::decode!(
11719                            fidl_fuchsia_component_decl__common::EventStream,
11720                            D,
11721                            val,
11722                            decoder,
11723                            _inner_offset,
11724                            depth
11725                        )?;
11726                    } else {
11727                        unreachable!()
11728                    }
11729                }
11730                9 => {
11731                    #[allow(irrefutable_let_patterns)]
11732                    if let ComponentCapability::Protocol(_) = self {
11733                        // Do nothing, read the value into the object
11734                    } else {
11735                        // Initialize `self` to the right variant
11736                        *self = ComponentCapability::Protocol(fidl::new_empty!(
11737                            fidl_fuchsia_component_decl__common::Protocol,
11738                            D
11739                        ));
11740                    }
11741                    #[allow(irrefutable_let_patterns)]
11742                    if let ComponentCapability::Protocol(ref mut val) = self {
11743                        fidl::decode!(
11744                            fidl_fuchsia_component_decl__common::Protocol,
11745                            D,
11746                            val,
11747                            decoder,
11748                            _inner_offset,
11749                            depth
11750                        )?;
11751                    } else {
11752                        unreachable!()
11753                    }
11754                }
11755                10 => {
11756                    #[allow(irrefutable_let_patterns)]
11757                    if let ComponentCapability::Resolver(_) = self {
11758                        // Do nothing, read the value into the object
11759                    } else {
11760                        // Initialize `self` to the right variant
11761                        *self = ComponentCapability::Resolver(fidl::new_empty!(
11762                            fidl_fuchsia_component_decl__common::Resolver,
11763                            D
11764                        ));
11765                    }
11766                    #[allow(irrefutable_let_patterns)]
11767                    if let ComponentCapability::Resolver(ref mut val) = self {
11768                        fidl::decode!(
11769                            fidl_fuchsia_component_decl__common::Resolver,
11770                            D,
11771                            val,
11772                            decoder,
11773                            _inner_offset,
11774                            depth
11775                        )?;
11776                    } else {
11777                        unreachable!()
11778                    }
11779                }
11780                11 => {
11781                    #[allow(irrefutable_let_patterns)]
11782                    if let ComponentCapability::Runner(_) = self {
11783                        // Do nothing, read the value into the object
11784                    } else {
11785                        // Initialize `self` to the right variant
11786                        *self = ComponentCapability::Runner(fidl::new_empty!(
11787                            fidl_fuchsia_component_decl__common::Runner,
11788                            D
11789                        ));
11790                    }
11791                    #[allow(irrefutable_let_patterns)]
11792                    if let ComponentCapability::Runner(ref mut val) = self {
11793                        fidl::decode!(
11794                            fidl_fuchsia_component_decl__common::Runner,
11795                            D,
11796                            val,
11797                            decoder,
11798                            _inner_offset,
11799                            depth
11800                        )?;
11801                    } else {
11802                        unreachable!()
11803                    }
11804                }
11805                12 => {
11806                    #[allow(irrefutable_let_patterns)]
11807                    if let ComponentCapability::Service(_) = self {
11808                        // Do nothing, read the value into the object
11809                    } else {
11810                        // Initialize `self` to the right variant
11811                        *self = ComponentCapability::Service(fidl::new_empty!(
11812                            fidl_fuchsia_component_decl__common::Service,
11813                            D
11814                        ));
11815                    }
11816                    #[allow(irrefutable_let_patterns)]
11817                    if let ComponentCapability::Service(ref mut val) = self {
11818                        fidl::decode!(
11819                            fidl_fuchsia_component_decl__common::Service,
11820                            D,
11821                            val,
11822                            decoder,
11823                            _inner_offset,
11824                            depth
11825                        )?;
11826                    } else {
11827                        unreachable!()
11828                    }
11829                }
11830                13 => {
11831                    #[allow(irrefutable_let_patterns)]
11832                    if let ComponentCapability::Storage(_) = self {
11833                        // Do nothing, read the value into the object
11834                    } else {
11835                        // Initialize `self` to the right variant
11836                        *self = ComponentCapability::Storage(fidl::new_empty!(
11837                            fidl_fuchsia_component_decl__common::Storage,
11838                            D
11839                        ));
11840                    }
11841                    #[allow(irrefutable_let_patterns)]
11842                    if let ComponentCapability::Storage(ref mut val) = self {
11843                        fidl::decode!(
11844                            fidl_fuchsia_component_decl__common::Storage,
11845                            D,
11846                            val,
11847                            decoder,
11848                            _inner_offset,
11849                            depth
11850                        )?;
11851                    } else {
11852                        unreachable!()
11853                    }
11854                }
11855                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11856            }
11857            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11858                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11859            }
11860            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11861                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11862            }
11863            Ok(())
11864        }
11865    }
11866
11867    impl fidl::encoding::ValueTypeMarker for EnvironmentCapability {
11868        type Borrowed<'a> = &'a Self;
11869        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11870            value
11871        }
11872    }
11873
11874    unsafe impl fidl::encoding::TypeMarker for EnvironmentCapability {
11875        type Owned = Self;
11876
11877        #[inline(always)]
11878        fn inline_align(_context: fidl::encoding::Context) -> usize {
11879            8
11880        }
11881
11882        #[inline(always)]
11883        fn inline_size(_context: fidl::encoding::Context) -> usize {
11884            16
11885        }
11886    }
11887
11888    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentCapability, D>
11889        for &EnvironmentCapability
11890    {
11891        #[inline]
11892        unsafe fn encode(
11893            self,
11894            encoder: &mut fidl::encoding::Encoder<'_, D>,
11895            offset: usize,
11896            _depth: fidl::encoding::Depth,
11897        ) -> fidl::Result<()> {
11898            encoder.debug_check_bounds::<EnvironmentCapability>(offset);
11899            encoder.write_num::<u64>(self.ordinal(), offset);
11900            match self {
11901                EnvironmentCapability::Runner(ref val) => {
11902                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
11903                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
11904                        encoder,
11905                        offset + 8,
11906                        _depth,
11907                    )
11908                }
11909                EnvironmentCapability::Resolver(ref val) => {
11910                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
11911                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
11912                        encoder,
11913                        offset + 8,
11914                        _depth,
11915                    )
11916                }
11917                EnvironmentCapability::Debug(ref val) => {
11918                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
11919                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
11920                        encoder,
11921                        offset + 8,
11922                        _depth,
11923                    )
11924                }
11925            }
11926        }
11927    }
11928
11929    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentCapability {
11930        #[inline(always)]
11931        fn new_empty() -> Self {
11932            Self::Runner(fidl::new_empty!(EnvironmentSource, D))
11933        }
11934
11935        #[inline]
11936        unsafe fn decode(
11937            &mut self,
11938            decoder: &mut fidl::encoding::Decoder<'_, D>,
11939            offset: usize,
11940            mut depth: fidl::encoding::Depth,
11941        ) -> fidl::Result<()> {
11942            decoder.debug_check_bounds::<Self>(offset);
11943            #[allow(unused_variables)]
11944            let next_out_of_line = decoder.next_out_of_line();
11945            let handles_before = decoder.remaining_handles();
11946            let (ordinal, inlined, num_bytes, num_handles) =
11947                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11948
11949            let member_inline_size = match ordinal {
11950                1 => {
11951                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11952                }
11953                2 => {
11954                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11955                }
11956                3 => {
11957                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11958                }
11959                _ => return Err(fidl::Error::UnknownUnionTag),
11960            };
11961
11962            if inlined != (member_inline_size <= 4) {
11963                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11964            }
11965            let _inner_offset;
11966            if inlined {
11967                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11968                _inner_offset = offset + 8;
11969            } else {
11970                depth.increment()?;
11971                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11972            }
11973            match ordinal {
11974                1 => {
11975                    #[allow(irrefutable_let_patterns)]
11976                    if let EnvironmentCapability::Runner(_) = self {
11977                        // Do nothing, read the value into the object
11978                    } else {
11979                        // Initialize `self` to the right variant
11980                        *self =
11981                            EnvironmentCapability::Runner(fidl::new_empty!(EnvironmentSource, D));
11982                    }
11983                    #[allow(irrefutable_let_patterns)]
11984                    if let EnvironmentCapability::Runner(ref mut val) = self {
11985                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
11986                    } else {
11987                        unreachable!()
11988                    }
11989                }
11990                2 => {
11991                    #[allow(irrefutable_let_patterns)]
11992                    if let EnvironmentCapability::Resolver(_) = self {
11993                        // Do nothing, read the value into the object
11994                    } else {
11995                        // Initialize `self` to the right variant
11996                        *self =
11997                            EnvironmentCapability::Resolver(fidl::new_empty!(EnvironmentSource, D));
11998                    }
11999                    #[allow(irrefutable_let_patterns)]
12000                    if let EnvironmentCapability::Resolver(ref mut val) = self {
12001                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12002                    } else {
12003                        unreachable!()
12004                    }
12005                }
12006                3 => {
12007                    #[allow(irrefutable_let_patterns)]
12008                    if let EnvironmentCapability::Debug(_) = self {
12009                        // Do nothing, read the value into the object
12010                    } else {
12011                        // Initialize `self` to the right variant
12012                        *self =
12013                            EnvironmentCapability::Debug(fidl::new_empty!(EnvironmentSource, D));
12014                    }
12015                    #[allow(irrefutable_let_patterns)]
12016                    if let EnvironmentCapability::Debug(ref mut val) = self {
12017                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12018                    } else {
12019                        unreachable!()
12020                    }
12021                }
12022                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12023            }
12024            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12025                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12026            }
12027            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12028                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12029            }
12030            Ok(())
12031        }
12032    }
12033
12034    impl fidl::encoding::ValueTypeMarker for InternalCapability {
12035        type Borrowed<'a> = &'a Self;
12036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12037            value
12038        }
12039    }
12040
12041    unsafe impl fidl::encoding::TypeMarker for InternalCapability {
12042        type Owned = Self;
12043
12044        #[inline(always)]
12045        fn inline_align(_context: fidl::encoding::Context) -> usize {
12046            8
12047        }
12048
12049        #[inline(always)]
12050        fn inline_size(_context: fidl::encoding::Context) -> usize {
12051            16
12052        }
12053    }
12054
12055    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InternalCapability, D>
12056        for &InternalCapability
12057    {
12058        #[inline]
12059        unsafe fn encode(
12060            self,
12061            encoder: &mut fidl::encoding::Encoder<'_, D>,
12062            offset: usize,
12063            _depth: fidl::encoding::Depth,
12064        ) -> fidl::Result<()> {
12065            encoder.debug_check_bounds::<InternalCapability>(offset);
12066            encoder.write_num::<u64>(self.ordinal(), offset);
12067            match self {
12068                InternalCapability::Config(ref val) => fidl::encoding::encode_in_envelope::<
12069                    fidl::encoding::BoundedString<100>,
12070                    D,
12071                >(
12072                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12073                        val,
12074                    ),
12075                    encoder,
12076                    offset + 8,
12077                    _depth,
12078                ),
12079                InternalCapability::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<
12080                    fidl::encoding::BoundedString<100>,
12081                    D,
12082                >(
12083                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12084                        val,
12085                    ),
12086                    encoder,
12087                    offset + 8,
12088                    _depth,
12089                ),
12090                InternalCapability::Directory(ref val) => fidl::encoding::encode_in_envelope::<
12091                    fidl::encoding::BoundedString<100>,
12092                    D,
12093                >(
12094                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12095                        val,
12096                    ),
12097                    encoder,
12098                    offset + 8,
12099                    _depth,
12100                ),
12101                InternalCapability::EventStream(ref val) => fidl::encoding::encode_in_envelope::<
12102                    fidl::encoding::BoundedString<100>,
12103                    D,
12104                >(
12105                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12106                        val,
12107                    ),
12108                    encoder,
12109                    offset + 8,
12110                    _depth,
12111                ),
12112                InternalCapability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<
12113                    fidl::encoding::BoundedString<100>,
12114                    D,
12115                >(
12116                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12117                        val,
12118                    ),
12119                    encoder,
12120                    offset + 8,
12121                    _depth,
12122                ),
12123                InternalCapability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<
12124                    fidl::encoding::BoundedString<100>,
12125                    D,
12126                >(
12127                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12128                        val,
12129                    ),
12130                    encoder,
12131                    offset + 8,
12132                    _depth,
12133                ),
12134                InternalCapability::Runner(ref val) => fidl::encoding::encode_in_envelope::<
12135                    fidl::encoding::BoundedString<100>,
12136                    D,
12137                >(
12138                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12139                        val,
12140                    ),
12141                    encoder,
12142                    offset + 8,
12143                    _depth,
12144                ),
12145                InternalCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
12146                    fidl::encoding::BoundedString<100>,
12147                    D,
12148                >(
12149                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12150                        val,
12151                    ),
12152                    encoder,
12153                    offset + 8,
12154                    _depth,
12155                ),
12156                InternalCapability::Storage(ref val) => fidl::encoding::encode_in_envelope::<
12157                    fidl::encoding::BoundedString<100>,
12158                    D,
12159                >(
12160                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12161                        val,
12162                    ),
12163                    encoder,
12164                    offset + 8,
12165                    _depth,
12166                ),
12167            }
12168        }
12169    }
12170
12171    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InternalCapability {
12172        #[inline(always)]
12173        fn new_empty() -> Self {
12174            Self::Config(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
12175        }
12176
12177        #[inline]
12178        unsafe fn decode(
12179            &mut self,
12180            decoder: &mut fidl::encoding::Decoder<'_, D>,
12181            offset: usize,
12182            mut depth: fidl::encoding::Depth,
12183        ) -> fidl::Result<()> {
12184            decoder.debug_check_bounds::<Self>(offset);
12185            #[allow(unused_variables)]
12186            let next_out_of_line = decoder.next_out_of_line();
12187            let handles_before = decoder.remaining_handles();
12188            let (ordinal, inlined, num_bytes, num_handles) =
12189                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12190
12191            let member_inline_size = match ordinal {
12192                1 => {
12193                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12194                        decoder.context,
12195                    )
12196                }
12197                2 => {
12198                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12199                        decoder.context,
12200                    )
12201                }
12202                3 => {
12203                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12204                        decoder.context,
12205                    )
12206                }
12207                4 => {
12208                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12209                        decoder.context,
12210                    )
12211                }
12212                5 => {
12213                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12214                        decoder.context,
12215                    )
12216                }
12217                6 => {
12218                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12219                        decoder.context,
12220                    )
12221                }
12222                7 => {
12223                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12224                        decoder.context,
12225                    )
12226                }
12227                8 => {
12228                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12229                        decoder.context,
12230                    )
12231                }
12232                9 => {
12233                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12234                        decoder.context,
12235                    )
12236                }
12237                _ => return Err(fidl::Error::UnknownUnionTag),
12238            };
12239
12240            if inlined != (member_inline_size <= 4) {
12241                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12242            }
12243            let _inner_offset;
12244            if inlined {
12245                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12246                _inner_offset = offset + 8;
12247            } else {
12248                depth.increment()?;
12249                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12250            }
12251            match ordinal {
12252                1 => {
12253                    #[allow(irrefutable_let_patterns)]
12254                    if let InternalCapability::Config(_) = self {
12255                        // Do nothing, read the value into the object
12256                    } else {
12257                        // Initialize `self` to the right variant
12258                        *self = InternalCapability::Config(fidl::new_empty!(
12259                            fidl::encoding::BoundedString<100>,
12260                            D
12261                        ));
12262                    }
12263                    #[allow(irrefutable_let_patterns)]
12264                    if let InternalCapability::Config(ref mut val) = self {
12265                        fidl::decode!(
12266                            fidl::encoding::BoundedString<100>,
12267                            D,
12268                            val,
12269                            decoder,
12270                            _inner_offset,
12271                            depth
12272                        )?;
12273                    } else {
12274                        unreachable!()
12275                    }
12276                }
12277                2 => {
12278                    #[allow(irrefutable_let_patterns)]
12279                    if let InternalCapability::Dictionary(_) = self {
12280                        // Do nothing, read the value into the object
12281                    } else {
12282                        // Initialize `self` to the right variant
12283                        *self = InternalCapability::Dictionary(fidl::new_empty!(
12284                            fidl::encoding::BoundedString<100>,
12285                            D
12286                        ));
12287                    }
12288                    #[allow(irrefutable_let_patterns)]
12289                    if let InternalCapability::Dictionary(ref mut val) = self {
12290                        fidl::decode!(
12291                            fidl::encoding::BoundedString<100>,
12292                            D,
12293                            val,
12294                            decoder,
12295                            _inner_offset,
12296                            depth
12297                        )?;
12298                    } else {
12299                        unreachable!()
12300                    }
12301                }
12302                3 => {
12303                    #[allow(irrefutable_let_patterns)]
12304                    if let InternalCapability::Directory(_) = self {
12305                        // Do nothing, read the value into the object
12306                    } else {
12307                        // Initialize `self` to the right variant
12308                        *self = InternalCapability::Directory(fidl::new_empty!(
12309                            fidl::encoding::BoundedString<100>,
12310                            D
12311                        ));
12312                    }
12313                    #[allow(irrefutable_let_patterns)]
12314                    if let InternalCapability::Directory(ref mut val) = self {
12315                        fidl::decode!(
12316                            fidl::encoding::BoundedString<100>,
12317                            D,
12318                            val,
12319                            decoder,
12320                            _inner_offset,
12321                            depth
12322                        )?;
12323                    } else {
12324                        unreachable!()
12325                    }
12326                }
12327                4 => {
12328                    #[allow(irrefutable_let_patterns)]
12329                    if let InternalCapability::EventStream(_) = self {
12330                        // Do nothing, read the value into the object
12331                    } else {
12332                        // Initialize `self` to the right variant
12333                        *self = InternalCapability::EventStream(fidl::new_empty!(
12334                            fidl::encoding::BoundedString<100>,
12335                            D
12336                        ));
12337                    }
12338                    #[allow(irrefutable_let_patterns)]
12339                    if let InternalCapability::EventStream(ref mut val) = self {
12340                        fidl::decode!(
12341                            fidl::encoding::BoundedString<100>,
12342                            D,
12343                            val,
12344                            decoder,
12345                            _inner_offset,
12346                            depth
12347                        )?;
12348                    } else {
12349                        unreachable!()
12350                    }
12351                }
12352                5 => {
12353                    #[allow(irrefutable_let_patterns)]
12354                    if let InternalCapability::Protocol(_) = self {
12355                        // Do nothing, read the value into the object
12356                    } else {
12357                        // Initialize `self` to the right variant
12358                        *self = InternalCapability::Protocol(fidl::new_empty!(
12359                            fidl::encoding::BoundedString<100>,
12360                            D
12361                        ));
12362                    }
12363                    #[allow(irrefutable_let_patterns)]
12364                    if let InternalCapability::Protocol(ref mut val) = self {
12365                        fidl::decode!(
12366                            fidl::encoding::BoundedString<100>,
12367                            D,
12368                            val,
12369                            decoder,
12370                            _inner_offset,
12371                            depth
12372                        )?;
12373                    } else {
12374                        unreachable!()
12375                    }
12376                }
12377                6 => {
12378                    #[allow(irrefutable_let_patterns)]
12379                    if let InternalCapability::Resolver(_) = self {
12380                        // Do nothing, read the value into the object
12381                    } else {
12382                        // Initialize `self` to the right variant
12383                        *self = InternalCapability::Resolver(fidl::new_empty!(
12384                            fidl::encoding::BoundedString<100>,
12385                            D
12386                        ));
12387                    }
12388                    #[allow(irrefutable_let_patterns)]
12389                    if let InternalCapability::Resolver(ref mut val) = self {
12390                        fidl::decode!(
12391                            fidl::encoding::BoundedString<100>,
12392                            D,
12393                            val,
12394                            decoder,
12395                            _inner_offset,
12396                            depth
12397                        )?;
12398                    } else {
12399                        unreachable!()
12400                    }
12401                }
12402                7 => {
12403                    #[allow(irrefutable_let_patterns)]
12404                    if let InternalCapability::Runner(_) = self {
12405                        // Do nothing, read the value into the object
12406                    } else {
12407                        // Initialize `self` to the right variant
12408                        *self = InternalCapability::Runner(fidl::new_empty!(
12409                            fidl::encoding::BoundedString<100>,
12410                            D
12411                        ));
12412                    }
12413                    #[allow(irrefutable_let_patterns)]
12414                    if let InternalCapability::Runner(ref mut val) = self {
12415                        fidl::decode!(
12416                            fidl::encoding::BoundedString<100>,
12417                            D,
12418                            val,
12419                            decoder,
12420                            _inner_offset,
12421                            depth
12422                        )?;
12423                    } else {
12424                        unreachable!()
12425                    }
12426                }
12427                8 => {
12428                    #[allow(irrefutable_let_patterns)]
12429                    if let InternalCapability::Service(_) = self {
12430                        // Do nothing, read the value into the object
12431                    } else {
12432                        // Initialize `self` to the right variant
12433                        *self = InternalCapability::Service(fidl::new_empty!(
12434                            fidl::encoding::BoundedString<100>,
12435                            D
12436                        ));
12437                    }
12438                    #[allow(irrefutable_let_patterns)]
12439                    if let InternalCapability::Service(ref mut val) = self {
12440                        fidl::decode!(
12441                            fidl::encoding::BoundedString<100>,
12442                            D,
12443                            val,
12444                            decoder,
12445                            _inner_offset,
12446                            depth
12447                        )?;
12448                    } else {
12449                        unreachable!()
12450                    }
12451                }
12452                9 => {
12453                    #[allow(irrefutable_let_patterns)]
12454                    if let InternalCapability::Storage(_) = self {
12455                        // Do nothing, read the value into the object
12456                    } else {
12457                        // Initialize `self` to the right variant
12458                        *self = InternalCapability::Storage(fidl::new_empty!(
12459                            fidl::encoding::BoundedString<100>,
12460                            D
12461                        ));
12462                    }
12463                    #[allow(irrefutable_let_patterns)]
12464                    if let InternalCapability::Storage(ref mut val) = self {
12465                        fidl::decode!(
12466                            fidl::encoding::BoundedString<100>,
12467                            D,
12468                            val,
12469                            decoder,
12470                            _inner_offset,
12471                            depth
12472                        )?;
12473                    } else {
12474                        unreachable!()
12475                    }
12476                }
12477                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12478            }
12479            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12480                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12481            }
12482            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12483                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12484            }
12485            Ok(())
12486        }
12487    }
12488}