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    /// Bundles to inject into components at runtime.
399    pub inject: Option<Vec<InjectedBundle>>,
400    #[doc(hidden)]
401    pub __source_breaking: fidl::marker::SourceBreaking,
402}
403
404impl fidl::Persistable for Config {}
405
406/// Defines a capability policy entry in the set of debug capability policy
407/// allowlists.
408#[derive(Clone, Debug, Default, PartialEq)]
409pub struct DebugRegistrationAllowlistEntry {
410    /// The name of the capability as it's registered in the environment.
411    pub name: Option<String>,
412    /// Represents the type of capability that is being restricted along
413    /// with any other properties required by a particular capability type.
414    pub debug: Option<AllowlistedDebugRegistration>,
415    /// The moniker of the component which is allowed to register
416    /// this capability in its environment's debug sction.
417    pub moniker: Option<String>,
418    /// Name of the environment where this capability can be registered.
419    pub environment_name: Option<String>,
420    #[doc(hidden)]
421    pub __source_breaking: fidl::marker::SourceBreaking,
422}
423
424impl fidl::Persistable for DebugRegistrationAllowlistEntry {}
425
426/// Defines the total set of debug capability allowlists.
427#[derive(Clone, Debug, Default, PartialEq)]
428pub struct DebugRegistrationPolicyAllowlists {
429    pub allowlist: Option<Vec<DebugRegistrationAllowlistEntry>>,
430    #[doc(hidden)]
431    pub __source_breaking: fidl::marker::SourceBreaking,
432}
433
434impl fidl::Persistable for DebugRegistrationPolicyAllowlists {}
435
436#[derive(Clone, Debug, Default, PartialEq)]
437pub struct Environment {
438    pub capability: Option<ComponentCapability>,
439    pub moniker: Option<String>,
440    #[doc(hidden)]
441    pub __source_breaking: fidl::marker::SourceBreaking,
442}
443
444impl fidl::Persistable for Environment {}
445
446#[derive(Clone, Debug, Default, PartialEq)]
447pub struct EnvironmentSource {
448    pub source_name: Option<String>,
449    pub source: Option<fidl_fuchsia_component_decl__common::Ref>,
450    #[doc(hidden)]
451    pub __source_breaking: fidl::marker::SourceBreaking,
452}
453
454impl fidl::Persistable for EnvironmentSource {}
455
456/// This value is used internally by event stream routers, to carry information
457/// pertinent to the route.
458#[derive(Clone, Debug, Default, PartialEq)]
459pub struct EventStreamRouteMetadata {
460    /// The moniker of the component that has set a scope on this event stream.
461    /// Unset if there is no scope on the event stream.
462    pub scope_moniker: Option<String>,
463    /// The scope(s) from which the consumer of this event stream will be able
464    /// to observe events. Relative to the `scope_moniker`. Unset if there is no
465    /// scope on the event stream.
466    pub scope: Option<Vec<fidl_fuchsia_component_decl__common::Ref>>,
467    #[doc(hidden)]
468    pub __source_breaking: fidl::marker::SourceBreaking,
469}
470
471impl fidl::Persistable for EventStreamRouteMetadata {}
472
473#[derive(Clone, Debug, Default, PartialEq)]
474pub struct FilteredAggregateProvider {
475    pub capability: Option<AggregateCapability>,
476    pub moniker: Option<String>,
477    pub offer_service_decls: Option<Vec<fidl_fuchsia_component_decl__common::OfferService>>,
478    pub sources: Option<Sources>,
479    #[doc(hidden)]
480    pub __source_breaking: fidl::marker::SourceBreaking,
481}
482
483impl fidl::Persistable for FilteredAggregateProvider {}
484
485#[derive(Clone, Debug, Default, PartialEq)]
486pub struct FilteredProvider {
487    pub capability: Option<AggregateCapability>,
488    pub moniker: Option<String>,
489    pub service_capability: Option<ComponentCapability>,
490    pub offer_service_decl: Option<fidl_fuchsia_component_decl__common::OfferService>,
491    #[doc(hidden)]
492    pub __source_breaking: fidl::marker::SourceBreaking,
493}
494
495impl fidl::Persistable for FilteredProvider {}
496
497#[derive(Clone, Debug, Default, PartialEq)]
498pub struct Framework {
499    pub capability: Option<InternalCapability>,
500    pub moniker: Option<String>,
501    #[doc(hidden)]
502    pub __source_breaking: fidl::marker::SourceBreaking,
503}
504
505impl fidl::Persistable for Framework {}
506
507/// Information about the health checks during the update process.
508#[derive(Clone, Debug, Default, PartialEq)]
509pub struct HealthCheck {
510    /// Component monikers that must be healthy in order to complete an OTA update.
511    pub monikers: Option<Vec<String>>,
512    #[doc(hidden)]
513    pub __source_breaking: fidl::marker::SourceBreaking,
514}
515
516impl fidl::Persistable for HealthCheck {}
517
518/// Declares a group of extra elements that are layered at runtime on top of
519/// those coming from the resolved component.
520#[derive(Clone, Debug, Default, PartialEq)]
521pub struct InjectedBundle {
522    /// (Required) Components that will have this bundle injected into.
523    pub components: Option<Vec<String>>,
524    /// (Optional) Capabilities to be injected.
525    pub use_: Option<Vec<InjectedUse>>,
526    #[doc(hidden)]
527    pub __source_breaking: fidl::marker::SourceBreaking,
528}
529
530impl fidl::Persistable for InjectedBundle {}
531
532/// Declares a protocol to be injected into a component.
533#[derive(Clone, Debug, Default, PartialEq)]
534pub struct InjectedUseProtocol {
535    /// (Required) Name identifying the protocol within the root component.
536    pub source_name: Option<String>,
537    /// (Required) The path where the capability should be injected in the new
538    /// component's namespace.
539    ///
540    /// Must be an absolute path starting with /.
541    pub target_path: Option<String>,
542    #[doc(hidden)]
543    pub __source_breaking: fidl::marker::SourceBreaking,
544}
545
546impl fidl::Persistable for InjectedUseProtocol {}
547
548#[derive(Clone, Debug, Default, PartialEq)]
549pub struct InstanceIdEntry {
550    /// A 256-bit identifier encoded in base64 which is unique across all other
551    /// instance IDs in the index.
552    pub instance_id: Option<String>,
553    /// The moniker identifying the component instance.
554    pub moniker: Option<String>,
555    #[doc(hidden)]
556    pub __source_breaking: fidl::marker::SourceBreaking,
557}
558
559impl fidl::Persistable for InstanceIdEntry {}
560
561/// Allowlists for Zircon job policy.
562#[derive(Clone, Debug, Default, PartialEq)]
563pub struct JobPolicyAllowlists {
564    /// Allowlist entry monikers for components allowed to be given the
565    /// ZX_POL_AMBIENT_MARK_VMO_EXEC job policy.
566    ///
567    /// Components must request this policy by including "job_policy_ambient_mark_vmo_exec: true" in
568    /// their CML's `program` section and must be using the ELF runner.
569    /// This is equivalent to the v1 'deprecated-ambient-replace-as-executable' feature.
570    pub ambient_mark_vmo_exec: Option<Vec<String>>,
571    /// Allowlist entry monikers for components allowed to have their original process
572    /// marked as critical to component_manager's job.
573    ///
574    /// Components must request this critical marking by including "main_process_critical: true" in
575    /// their CML's `program` section and must be using the ELF runner.
576    pub main_process_critical: Option<Vec<String>>,
577    /// Allowlist entry monikers for components allowed to call zx_process_create directly
578    /// (e.g., do not have ZX_POL_NEW_PROCESS set to ZX_POL_ACTION_DENY).
579    ///
580    /// Components must request this policy by including "job_policy_create_raw_processes: true" in
581    /// their manifest's program object and must be using the ELF runner.
582    pub create_raw_processes: Option<Vec<String>>,
583    #[doc(hidden)]
584    pub __source_breaking: fidl::marker::SourceBreaking,
585}
586
587impl fidl::Persistable for JobPolicyAllowlists {}
588
589#[derive(Clone, Debug, Default, PartialEq)]
590pub struct Namespace {
591    pub capability: Option<ComponentCapability>,
592    #[doc(hidden)]
593    pub __source_breaking: fidl::marker::SourceBreaking,
594}
595
596impl fidl::Persistable for Namespace {}
597
598/// Runtime security policy.
599#[derive(Clone, Debug, Default, PartialEq)]
600pub struct SecurityPolicy {
601    /// Allowlists for Zircon job policy.
602    pub job_policy: Option<JobPolicyAllowlists>,
603    /// Capability access policy.
604    pub capability_policy: Option<CapabilityPolicyAllowlists>,
605    /// Debug capability registration policy.
606    pub debug_registration_policy: Option<DebugRegistrationPolicyAllowlists>,
607    /// Component child options policy.
608    pub child_policy: Option<ChildPolicyAllowlists>,
609    #[doc(hidden)]
610    pub __source_breaking: fidl::marker::SourceBreaking,
611}
612
613impl fidl::Persistable for SecurityPolicy {}
614
615#[derive(Clone, Debug, Default, PartialEq)]
616pub struct Sources {
617    pub framework: Option<bool>,
618    pub builtin: Option<bool>,
619    pub capability: Option<bool>,
620    pub collection: Option<bool>,
621    pub namespace: Option<bool>,
622    pub component: Option<bool>,
623    pub capability_type: Option<String>,
624    #[doc(hidden)]
625    pub __source_breaking: fidl::marker::SourceBreaking,
626}
627
628impl fidl::Persistable for Sources {}
629
630#[derive(Clone, Debug, Default, PartialEq)]
631pub struct Void {
632    pub capability: Option<InternalCapability>,
633    pub moniker: Option<String>,
634    #[doc(hidden)]
635    pub __source_breaking: fidl::marker::SourceBreaking,
636}
637
638impl fidl::Persistable for Void {}
639
640#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
641pub enum AggregateCapability {
642    Service(String),
643}
644
645impl AggregateCapability {
646    #[inline]
647    pub fn ordinal(&self) -> u64 {
648        match *self {
649            Self::Service(_) => 1,
650        }
651    }
652}
653
654impl fidl::Persistable for AggregateCapability {}
655
656#[derive(Clone, Debug, PartialEq)]
657pub enum AggregateMember {
658    Child(fidl_fuchsia_component_decl__common::ChildRef),
659    Collection(String),
660    Parent(fidl_fuchsia_component_decl__common::ParentRef),
661    Self_(fidl_fuchsia_component_decl__common::SelfRef),
662}
663
664impl AggregateMember {
665    #[inline]
666    pub fn ordinal(&self) -> u64 {
667        match *self {
668            Self::Child(_) => 1,
669            Self::Collection(_) => 2,
670            Self::Parent(_) => 3,
671            Self::Self_(_) => 4,
672        }
673    }
674}
675
676impl fidl::Persistable for AggregateMember {}
677
678/// Represents the class of capabilities supported to be allowlisted.
679#[derive(Clone, Debug)]
680pub enum AllowlistedCapability {
681    Directory(AllowlistedDirectory),
682    Protocol(AllowlistedProtocol),
683    Service(AllowlistedService),
684    Storage(AllowlistedStorage),
685    Runner(AllowlistedRunner),
686    Resolver(AllowlistedResolver),
687    #[doc(hidden)]
688    __SourceBreaking {
689        unknown_ordinal: u64,
690    },
691}
692
693/// Pattern that matches an unknown `AllowlistedCapability` member.
694#[macro_export]
695macro_rules! AllowlistedCapabilityUnknown {
696    () => {
697        _
698    };
699}
700
701// Custom PartialEq so that unknown variants are not equal to themselves.
702impl PartialEq for AllowlistedCapability {
703    fn eq(&self, other: &Self) -> bool {
704        match (self, other) {
705            (Self::Directory(x), Self::Directory(y)) => *x == *y,
706            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
707            (Self::Service(x), Self::Service(y)) => *x == *y,
708            (Self::Storage(x), Self::Storage(y)) => *x == *y,
709            (Self::Runner(x), Self::Runner(y)) => *x == *y,
710            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
711            _ => false,
712        }
713    }
714}
715
716impl AllowlistedCapability {
717    #[inline]
718    pub fn ordinal(&self) -> u64 {
719        match *self {
720            Self::Directory(_) => 1,
721            Self::Protocol(_) => 3,
722            Self::Service(_) => 4,
723            Self::Storage(_) => 5,
724            Self::Runner(_) => 6,
725            Self::Resolver(_) => 7,
726            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
727        }
728    }
729
730    #[inline]
731    pub fn unknown_variant_for_testing() -> Self {
732        Self::__SourceBreaking { unknown_ordinal: 0 }
733    }
734
735    #[inline]
736    pub fn is_unknown(&self) -> bool {
737        match self {
738            Self::__SourceBreaking { .. } => true,
739            _ => false,
740        }
741    }
742}
743
744impl fidl::Persistable for AllowlistedCapability {}
745
746/// Represents the class of capabilities supported to be allowlisted.
747#[derive(Clone, Debug)]
748pub enum AllowlistedDebugRegistration {
749    Protocol(AllowlistedProtocol),
750    #[doc(hidden)]
751    __SourceBreaking {
752        unknown_ordinal: u64,
753    },
754}
755
756/// Pattern that matches an unknown `AllowlistedDebugRegistration` member.
757#[macro_export]
758macro_rules! AllowlistedDebugRegistrationUnknown {
759    () => {
760        _
761    };
762}
763
764// Custom PartialEq so that unknown variants are not equal to themselves.
765impl PartialEq for AllowlistedDebugRegistration {
766    fn eq(&self, other: &Self) -> bool {
767        match (self, other) {
768            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
769            _ => false,
770        }
771    }
772}
773
774impl AllowlistedDebugRegistration {
775    #[inline]
776    pub fn ordinal(&self) -> u64 {
777        match *self {
778            Self::Protocol(_) => 1,
779            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
780        }
781    }
782
783    #[inline]
784    pub fn unknown_variant_for_testing() -> Self {
785        Self::__SourceBreaking { unknown_ordinal: 0 }
786    }
787
788    #[inline]
789    pub fn is_unknown(&self) -> bool {
790        match self {
791            Self::__SourceBreaking { .. } => true,
792            _ => false,
793        }
794    }
795}
796
797impl fidl::Persistable for AllowlistedDebugRegistration {}
798
799#[derive(Clone, Debug, PartialEq)]
800pub enum CapabilitySource {
801    Component(Component),
802    Framework(Framework),
803    Builtin(Builtin),
804    Namespace(Namespace),
805    Capability(Capability),
806    AnonymizedAggregate(AnonymizedAggregate),
807    FilteredProvider(FilteredProvider),
808    FilteredAggregateProvider(FilteredAggregateProvider),
809    Environment(Environment),
810    Void(Void),
811}
812
813impl CapabilitySource {
814    #[inline]
815    pub fn ordinal(&self) -> u64 {
816        match *self {
817            Self::Component(_) => 1,
818            Self::Framework(_) => 2,
819            Self::Builtin(_) => 3,
820            Self::Namespace(_) => 4,
821            Self::Capability(_) => 5,
822            Self::AnonymizedAggregate(_) => 6,
823            Self::FilteredProvider(_) => 7,
824            Self::FilteredAggregateProvider(_) => 8,
825            Self::Environment(_) => 9,
826            Self::Void(_) => 10,
827        }
828    }
829}
830
831impl fidl::Persistable for CapabilitySource {}
832
833#[derive(Clone, Debug, PartialEq)]
834pub enum ComponentCapability {
835    Use_(fidl_fuchsia_component_decl__common::Use),
836    Offer(fidl_fuchsia_component_decl__common::Offer),
837    Expose(fidl_fuchsia_component_decl__common::Expose),
838    Config(fidl_fuchsia_component_decl__common::Configuration),
839    Dictionary(fidl_fuchsia_component_decl__common::Dictionary),
840    Directory(fidl_fuchsia_component_decl__common::Directory),
841    Environment(EnvironmentCapability),
842    EventStream(fidl_fuchsia_component_decl__common::EventStream),
843    Protocol(fidl_fuchsia_component_decl__common::Protocol),
844    Resolver(fidl_fuchsia_component_decl__common::Resolver),
845    Runner(fidl_fuchsia_component_decl__common::Runner),
846    Service(fidl_fuchsia_component_decl__common::Service),
847    Storage(fidl_fuchsia_component_decl__common::Storage),
848}
849
850impl ComponentCapability {
851    #[inline]
852    pub fn ordinal(&self) -> u64 {
853        match *self {
854            Self::Use_(_) => 1,
855            Self::Offer(_) => 2,
856            Self::Expose(_) => 3,
857            Self::Config(_) => 4,
858            Self::Dictionary(_) => 5,
859            Self::Directory(_) => 6,
860            Self::Environment(_) => 7,
861            Self::EventStream(_) => 8,
862            Self::Protocol(_) => 9,
863            Self::Resolver(_) => 10,
864            Self::Runner(_) => 11,
865            Self::Service(_) => 12,
866            Self::Storage(_) => 13,
867        }
868    }
869}
870
871impl fidl::Persistable for ComponentCapability {}
872
873#[derive(Clone, Debug, PartialEq)]
874pub enum EnvironmentCapability {
875    Runner(EnvironmentSource),
876    Resolver(EnvironmentSource),
877    Debug(EnvironmentSource),
878}
879
880impl EnvironmentCapability {
881    #[inline]
882    pub fn ordinal(&self) -> u64 {
883        match *self {
884            Self::Runner(_) => 1,
885            Self::Resolver(_) => 2,
886            Self::Debug(_) => 3,
887        }
888    }
889}
890
891impl fidl::Persistable for EnvironmentCapability {}
892
893/// Declares a capability to be injected into a component.
894#[derive(Clone, Debug)]
895pub enum InjectedUse {
896    Protocol(InjectedUseProtocol),
897    #[doc(hidden)]
898    __SourceBreaking {
899        unknown_ordinal: u64,
900    },
901}
902
903/// Pattern that matches an unknown `InjectedUse` member.
904#[macro_export]
905macro_rules! InjectedUseUnknown {
906    () => {
907        _
908    };
909}
910
911// Custom PartialEq so that unknown variants are not equal to themselves.
912impl PartialEq for InjectedUse {
913    fn eq(&self, other: &Self) -> bool {
914        match (self, other) {
915            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
916            _ => false,
917        }
918    }
919}
920
921impl InjectedUse {
922    #[inline]
923    pub fn ordinal(&self) -> u64 {
924        match *self {
925            Self::Protocol(_) => 1,
926            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
927        }
928    }
929
930    #[inline]
931    pub fn unknown_variant_for_testing() -> Self {
932        Self::__SourceBreaking { unknown_ordinal: 0 }
933    }
934
935    #[inline]
936    pub fn is_unknown(&self) -> bool {
937        match self {
938            Self::__SourceBreaking { .. } => true,
939            _ => false,
940        }
941    }
942}
943
944impl fidl::Persistable for InjectedUse {}
945
946#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
947pub enum InternalCapability {
948    Config(String),
949    Dictionary(String),
950    Directory(String),
951    EventStream(String),
952    Protocol(String),
953    Resolver(String),
954    Runner(String),
955    Service(String),
956    Storage(String),
957}
958
959impl InternalCapability {
960    #[inline]
961    pub fn ordinal(&self) -> u64 {
962        match *self {
963            Self::Config(_) => 1,
964            Self::Dictionary(_) => 2,
965            Self::Directory(_) => 3,
966            Self::EventStream(_) => 4,
967            Self::Protocol(_) => 5,
968            Self::Resolver(_) => 6,
969            Self::Runner(_) => 7,
970            Self::Service(_) => 8,
971            Self::Storage(_) => 9,
972        }
973    }
974}
975
976impl fidl::Persistable for InternalCapability {}
977
978pub mod component_sandbox_retriever_ordinals {
979    pub const GET_MY_SANDBOX: u64 = 0x61ca075fb9860e84;
980}
981
982mod internal {
983    use super::*;
984    unsafe impl fidl::encoding::TypeMarker for BuiltinBootResolver {
985        type Owned = Self;
986
987        #[inline(always)]
988        fn inline_align(_context: fidl::encoding::Context) -> usize {
989            std::mem::align_of::<u8>()
990        }
991
992        #[inline(always)]
993        fn inline_size(_context: fidl::encoding::Context) -> usize {
994            std::mem::size_of::<u8>()
995        }
996
997        #[inline(always)]
998        fn encode_is_copy() -> bool {
999            true
1000        }
1001
1002        #[inline(always)]
1003        fn decode_is_copy() -> bool {
1004            false
1005        }
1006    }
1007
1008    impl fidl::encoding::ValueTypeMarker for BuiltinBootResolver {
1009        type Borrowed<'a> = Self;
1010        #[inline(always)]
1011        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1012            *value
1013        }
1014    }
1015
1016    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1017        for BuiltinBootResolver
1018    {
1019        #[inline]
1020        unsafe fn encode(
1021            self,
1022            encoder: &mut fidl::encoding::Encoder<'_, D>,
1023            offset: usize,
1024            _depth: fidl::encoding::Depth,
1025        ) -> fidl::Result<()> {
1026            encoder.debug_check_bounds::<Self>(offset);
1027            encoder.write_num(self.into_primitive(), offset);
1028            Ok(())
1029        }
1030    }
1031
1032    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuiltinBootResolver {
1033        #[inline(always)]
1034        fn new_empty() -> Self {
1035            Self::None
1036        }
1037
1038        #[inline]
1039        unsafe fn decode(
1040            &mut self,
1041            decoder: &mut fidl::encoding::Decoder<'_, D>,
1042            offset: usize,
1043            _depth: fidl::encoding::Depth,
1044        ) -> fidl::Result<()> {
1045            decoder.debug_check_bounds::<Self>(offset);
1046            let prim = decoder.read_num::<u8>(offset);
1047
1048            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1049            Ok(())
1050        }
1051    }
1052    unsafe impl fidl::encoding::TypeMarker for LogDestination {
1053        type Owned = Self;
1054
1055        #[inline(always)]
1056        fn inline_align(_context: fidl::encoding::Context) -> usize {
1057            std::mem::align_of::<u8>()
1058        }
1059
1060        #[inline(always)]
1061        fn inline_size(_context: fidl::encoding::Context) -> usize {
1062            std::mem::size_of::<u8>()
1063        }
1064
1065        #[inline(always)]
1066        fn encode_is_copy() -> bool {
1067            true
1068        }
1069
1070        #[inline(always)]
1071        fn decode_is_copy() -> bool {
1072            false
1073        }
1074    }
1075
1076    impl fidl::encoding::ValueTypeMarker for LogDestination {
1077        type Borrowed<'a> = Self;
1078        #[inline(always)]
1079        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1080            *value
1081        }
1082    }
1083
1084    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogDestination {
1085        #[inline]
1086        unsafe fn encode(
1087            self,
1088            encoder: &mut fidl::encoding::Encoder<'_, D>,
1089            offset: usize,
1090            _depth: fidl::encoding::Depth,
1091        ) -> fidl::Result<()> {
1092            encoder.debug_check_bounds::<Self>(offset);
1093            encoder.write_num(self.into_primitive(), offset);
1094            Ok(())
1095        }
1096    }
1097
1098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogDestination {
1099        #[inline(always)]
1100        fn new_empty() -> Self {
1101            Self::Syslog
1102        }
1103
1104        #[inline]
1105        unsafe fn decode(
1106            &mut self,
1107            decoder: &mut fidl::encoding::Decoder<'_, D>,
1108            offset: usize,
1109            _depth: fidl::encoding::Depth,
1110        ) -> fidl::Result<()> {
1111            decoder.debug_check_bounds::<Self>(offset);
1112            let prim = decoder.read_num::<u8>(offset);
1113
1114            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1115            Ok(())
1116        }
1117    }
1118    unsafe impl fidl::encoding::TypeMarker for RealmBuilderResolverAndRunner {
1119        type Owned = Self;
1120
1121        #[inline(always)]
1122        fn inline_align(_context: fidl::encoding::Context) -> usize {
1123            std::mem::align_of::<u8>()
1124        }
1125
1126        #[inline(always)]
1127        fn inline_size(_context: fidl::encoding::Context) -> usize {
1128            std::mem::size_of::<u8>()
1129        }
1130
1131        #[inline(always)]
1132        fn encode_is_copy() -> bool {
1133            true
1134        }
1135
1136        #[inline(always)]
1137        fn decode_is_copy() -> bool {
1138            false
1139        }
1140    }
1141
1142    impl fidl::encoding::ValueTypeMarker for RealmBuilderResolverAndRunner {
1143        type Borrowed<'a> = Self;
1144        #[inline(always)]
1145        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1146            *value
1147        }
1148    }
1149
1150    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1151        for RealmBuilderResolverAndRunner
1152    {
1153        #[inline]
1154        unsafe fn encode(
1155            self,
1156            encoder: &mut fidl::encoding::Encoder<'_, D>,
1157            offset: usize,
1158            _depth: fidl::encoding::Depth,
1159        ) -> fidl::Result<()> {
1160            encoder.debug_check_bounds::<Self>(offset);
1161            encoder.write_num(self.into_primitive(), offset);
1162            Ok(())
1163        }
1164    }
1165
1166    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1167        for RealmBuilderResolverAndRunner
1168    {
1169        #[inline(always)]
1170        fn new_empty() -> Self {
1171            Self::None
1172        }
1173
1174        #[inline]
1175        unsafe fn decode(
1176            &mut self,
1177            decoder: &mut fidl::encoding::Decoder<'_, D>,
1178            offset: usize,
1179            _depth: fidl::encoding::Depth,
1180        ) -> fidl::Result<()> {
1181            decoder.debug_check_bounds::<Self>(offset);
1182            let prim = decoder.read_num::<u8>(offset);
1183
1184            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1185            Ok(())
1186        }
1187    }
1188    unsafe impl fidl::encoding::TypeMarker for TraceProvider {
1189        type Owned = Self;
1190
1191        #[inline(always)]
1192        fn inline_align(_context: fidl::encoding::Context) -> usize {
1193            std::mem::align_of::<u8>()
1194        }
1195
1196        #[inline(always)]
1197        fn inline_size(_context: fidl::encoding::Context) -> usize {
1198            std::mem::size_of::<u8>()
1199        }
1200
1201        #[inline(always)]
1202        fn encode_is_copy() -> bool {
1203            true
1204        }
1205
1206        #[inline(always)]
1207        fn decode_is_copy() -> bool {
1208            false
1209        }
1210    }
1211
1212    impl fidl::encoding::ValueTypeMarker for TraceProvider {
1213        type Borrowed<'a> = Self;
1214        #[inline(always)]
1215        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1216            *value
1217        }
1218    }
1219
1220    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TraceProvider {
1221        #[inline]
1222        unsafe fn encode(
1223            self,
1224            encoder: &mut fidl::encoding::Encoder<'_, D>,
1225            offset: usize,
1226            _depth: fidl::encoding::Depth,
1227        ) -> fidl::Result<()> {
1228            encoder.debug_check_bounds::<Self>(offset);
1229            encoder.write_num(self.into_primitive(), offset);
1230            Ok(())
1231        }
1232    }
1233
1234    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceProvider {
1235        #[inline(always)]
1236        fn new_empty() -> Self {
1237            Self::Namespace
1238        }
1239
1240        #[inline]
1241        unsafe fn decode(
1242            &mut self,
1243            decoder: &mut fidl::encoding::Decoder<'_, D>,
1244            offset: usize,
1245            _depth: fidl::encoding::Depth,
1246        ) -> fidl::Result<()> {
1247            decoder.debug_check_bounds::<Self>(offset);
1248            let prim = decoder.read_num::<u8>(offset);
1249
1250            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1251            Ok(())
1252        }
1253    }
1254    unsafe impl fidl::encoding::TypeMarker for VmexSource {
1255        type Owned = Self;
1256
1257        #[inline(always)]
1258        fn inline_align(_context: fidl::encoding::Context) -> usize {
1259            std::mem::align_of::<u8>()
1260        }
1261
1262        #[inline(always)]
1263        fn inline_size(_context: fidl::encoding::Context) -> usize {
1264            std::mem::size_of::<u8>()
1265        }
1266
1267        #[inline(always)]
1268        fn encode_is_copy() -> bool {
1269            true
1270        }
1271
1272        #[inline(always)]
1273        fn decode_is_copy() -> bool {
1274            false
1275        }
1276    }
1277
1278    impl fidl::encoding::ValueTypeMarker for VmexSource {
1279        type Borrowed<'a> = Self;
1280        #[inline(always)]
1281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1282            *value
1283        }
1284    }
1285
1286    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for VmexSource {
1287        #[inline]
1288        unsafe fn encode(
1289            self,
1290            encoder: &mut fidl::encoding::Encoder<'_, D>,
1291            offset: usize,
1292            _depth: fidl::encoding::Depth,
1293        ) -> fidl::Result<()> {
1294            encoder.debug_check_bounds::<Self>(offset);
1295            encoder.write_num(self.into_primitive(), offset);
1296            Ok(())
1297        }
1298    }
1299
1300    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmexSource {
1301        #[inline(always)]
1302        fn new_empty() -> Self {
1303            Self::SystemResource
1304        }
1305
1306        #[inline]
1307        unsafe fn decode(
1308            &mut self,
1309            decoder: &mut fidl::encoding::Decoder<'_, D>,
1310            offset: usize,
1311            _depth: fidl::encoding::Depth,
1312        ) -> fidl::Result<()> {
1313            decoder.debug_check_bounds::<Self>(offset);
1314            let prim = decoder.read_num::<u8>(offset);
1315
1316            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1317            Ok(())
1318        }
1319    }
1320
1321    impl AbiRevisionPolicy {
1322        #[inline(always)]
1323        fn max_ordinal_present(&self) -> u64 {
1324            if let Some(_) = self.allowlist {
1325                return 1;
1326            }
1327            0
1328        }
1329    }
1330
1331    impl fidl::encoding::ValueTypeMarker for AbiRevisionPolicy {
1332        type Borrowed<'a> = &'a Self;
1333        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1334            value
1335        }
1336    }
1337
1338    unsafe impl fidl::encoding::TypeMarker for AbiRevisionPolicy {
1339        type Owned = Self;
1340
1341        #[inline(always)]
1342        fn inline_align(_context: fidl::encoding::Context) -> usize {
1343            8
1344        }
1345
1346        #[inline(always)]
1347        fn inline_size(_context: fidl::encoding::Context) -> usize {
1348            16
1349        }
1350    }
1351
1352    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AbiRevisionPolicy, D>
1353        for &AbiRevisionPolicy
1354    {
1355        unsafe fn encode(
1356            self,
1357            encoder: &mut fidl::encoding::Encoder<'_, D>,
1358            offset: usize,
1359            mut depth: fidl::encoding::Depth,
1360        ) -> fidl::Result<()> {
1361            encoder.debug_check_bounds::<AbiRevisionPolicy>(offset);
1362            // Vector header
1363            let max_ordinal: u64 = self.max_ordinal_present();
1364            encoder.write_num(max_ordinal, offset);
1365            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1366            // Calling encoder.out_of_line_offset(0) is not allowed.
1367            if max_ordinal == 0 {
1368                return Ok(());
1369            }
1370            depth.increment()?;
1371            let envelope_size = 8;
1372            let bytes_len = max_ordinal as usize * envelope_size;
1373            #[allow(unused_variables)]
1374            let offset = encoder.out_of_line_offset(bytes_len);
1375            let mut _prev_end_offset: usize = 0;
1376            if 1 > max_ordinal {
1377                return Ok(());
1378            }
1379
1380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1381            // are envelope_size bytes.
1382            let cur_offset: usize = (1 - 1) * envelope_size;
1383
1384            // Zero reserved fields.
1385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1386
1387            // Safety:
1388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1390            //   envelope_size bytes, there is always sufficient room.
1391            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1392            self.allowlist.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1393            encoder, offset + cur_offset, depth
1394        )?;
1395
1396            _prev_end_offset = cur_offset + envelope_size;
1397
1398            Ok(())
1399        }
1400    }
1401
1402    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AbiRevisionPolicy {
1403        #[inline(always)]
1404        fn new_empty() -> Self {
1405            Self::default()
1406        }
1407
1408        unsafe fn decode(
1409            &mut self,
1410            decoder: &mut fidl::encoding::Decoder<'_, D>,
1411            offset: usize,
1412            mut depth: fidl::encoding::Depth,
1413        ) -> fidl::Result<()> {
1414            decoder.debug_check_bounds::<Self>(offset);
1415            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1416                None => return Err(fidl::Error::NotNullable),
1417                Some(len) => len,
1418            };
1419            // Calling decoder.out_of_line_offset(0) is not allowed.
1420            if len == 0 {
1421                return Ok(());
1422            };
1423            depth.increment()?;
1424            let envelope_size = 8;
1425            let bytes_len = len * envelope_size;
1426            let offset = decoder.out_of_line_offset(bytes_len)?;
1427            // Decode the envelope for each type.
1428            let mut _next_ordinal_to_read = 0;
1429            let mut next_offset = offset;
1430            let end_offset = offset + bytes_len;
1431            _next_ordinal_to_read += 1;
1432            if next_offset >= end_offset {
1433                return Ok(());
1434            }
1435
1436            // Decode unknown envelopes for gaps in ordinals.
1437            while _next_ordinal_to_read < 1 {
1438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1439                _next_ordinal_to_read += 1;
1440                next_offset += envelope_size;
1441            }
1442
1443            let next_out_of_line = decoder.next_out_of_line();
1444            let handles_before = decoder.remaining_handles();
1445            if let Some((inlined, num_bytes, num_handles)) =
1446                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1447            {
1448                let member_inline_size = <fidl::encoding::Vector<
1449                    fidl::encoding::BoundedString<4096>,
1450                    128,
1451                > as fidl::encoding::TypeMarker>::inline_size(
1452                    decoder.context
1453                );
1454                if inlined != (member_inline_size <= 4) {
1455                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1456                }
1457                let inner_offset;
1458                let mut inner_depth = depth.clone();
1459                if inlined {
1460                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1461                    inner_offset = next_offset;
1462                } else {
1463                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1464                    inner_depth.increment()?;
1465                }
1466                let val_ref = self.allowlist.get_or_insert_with(|| {
1467                    fidl::new_empty!(
1468                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1469                        D
1470                    )
1471                });
1472                fidl::decode!(
1473                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1474                    D,
1475                    val_ref,
1476                    decoder,
1477                    inner_offset,
1478                    inner_depth
1479                )?;
1480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1481                {
1482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1483                }
1484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1486                }
1487            }
1488
1489            next_offset += envelope_size;
1490
1491            // Decode the remaining unknown envelopes.
1492            while next_offset < end_offset {
1493                _next_ordinal_to_read += 1;
1494                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1495                next_offset += envelope_size;
1496            }
1497
1498            Ok(())
1499        }
1500    }
1501
1502    impl AllowlistedDirectory {
1503        #[inline(always)]
1504        fn max_ordinal_present(&self) -> u64 {
1505            0
1506        }
1507    }
1508
1509    impl fidl::encoding::ValueTypeMarker for AllowlistedDirectory {
1510        type Borrowed<'a> = &'a Self;
1511        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1512            value
1513        }
1514    }
1515
1516    unsafe impl fidl::encoding::TypeMarker for AllowlistedDirectory {
1517        type Owned = Self;
1518
1519        #[inline(always)]
1520        fn inline_align(_context: fidl::encoding::Context) -> usize {
1521            8
1522        }
1523
1524        #[inline(always)]
1525        fn inline_size(_context: fidl::encoding::Context) -> usize {
1526            16
1527        }
1528    }
1529
1530    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedDirectory, D>
1531        for &AllowlistedDirectory
1532    {
1533        unsafe fn encode(
1534            self,
1535            encoder: &mut fidl::encoding::Encoder<'_, D>,
1536            offset: usize,
1537            mut depth: fidl::encoding::Depth,
1538        ) -> fidl::Result<()> {
1539            encoder.debug_check_bounds::<AllowlistedDirectory>(offset);
1540            // Vector header
1541            let max_ordinal: u64 = self.max_ordinal_present();
1542            encoder.write_num(max_ordinal, offset);
1543            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1544            // Calling encoder.out_of_line_offset(0) is not allowed.
1545            if max_ordinal == 0 {
1546                return Ok(());
1547            }
1548            depth.increment()?;
1549            let envelope_size = 8;
1550            let bytes_len = max_ordinal as usize * envelope_size;
1551            #[allow(unused_variables)]
1552            let offset = encoder.out_of_line_offset(bytes_len);
1553            let mut _prev_end_offset: usize = 0;
1554
1555            Ok(())
1556        }
1557    }
1558
1559    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedDirectory {
1560        #[inline(always)]
1561        fn new_empty() -> Self {
1562            Self::default()
1563        }
1564
1565        unsafe fn decode(
1566            &mut self,
1567            decoder: &mut fidl::encoding::Decoder<'_, D>,
1568            offset: usize,
1569            mut depth: fidl::encoding::Depth,
1570        ) -> fidl::Result<()> {
1571            decoder.debug_check_bounds::<Self>(offset);
1572            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1573                None => return Err(fidl::Error::NotNullable),
1574                Some(len) => len,
1575            };
1576            // Calling decoder.out_of_line_offset(0) is not allowed.
1577            if len == 0 {
1578                return Ok(());
1579            };
1580            depth.increment()?;
1581            let envelope_size = 8;
1582            let bytes_len = len * envelope_size;
1583            let offset = decoder.out_of_line_offset(bytes_len)?;
1584            // Decode the envelope for each type.
1585            let mut _next_ordinal_to_read = 0;
1586            let mut next_offset = offset;
1587            let end_offset = offset + bytes_len;
1588
1589            // Decode the remaining unknown envelopes.
1590            while next_offset < end_offset {
1591                _next_ordinal_to_read += 1;
1592                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1593                next_offset += envelope_size;
1594            }
1595
1596            Ok(())
1597        }
1598    }
1599
1600    impl AllowlistedProtocol {
1601        #[inline(always)]
1602        fn max_ordinal_present(&self) -> u64 {
1603            0
1604        }
1605    }
1606
1607    impl fidl::encoding::ValueTypeMarker for AllowlistedProtocol {
1608        type Borrowed<'a> = &'a Self;
1609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1610            value
1611        }
1612    }
1613
1614    unsafe impl fidl::encoding::TypeMarker for AllowlistedProtocol {
1615        type Owned = Self;
1616
1617        #[inline(always)]
1618        fn inline_align(_context: fidl::encoding::Context) -> usize {
1619            8
1620        }
1621
1622        #[inline(always)]
1623        fn inline_size(_context: fidl::encoding::Context) -> usize {
1624            16
1625        }
1626    }
1627
1628    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedProtocol, D>
1629        for &AllowlistedProtocol
1630    {
1631        unsafe fn encode(
1632            self,
1633            encoder: &mut fidl::encoding::Encoder<'_, D>,
1634            offset: usize,
1635            mut depth: fidl::encoding::Depth,
1636        ) -> fidl::Result<()> {
1637            encoder.debug_check_bounds::<AllowlistedProtocol>(offset);
1638            // Vector header
1639            let max_ordinal: u64 = self.max_ordinal_present();
1640            encoder.write_num(max_ordinal, offset);
1641            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1642            // Calling encoder.out_of_line_offset(0) is not allowed.
1643            if max_ordinal == 0 {
1644                return Ok(());
1645            }
1646            depth.increment()?;
1647            let envelope_size = 8;
1648            let bytes_len = max_ordinal as usize * envelope_size;
1649            #[allow(unused_variables)]
1650            let offset = encoder.out_of_line_offset(bytes_len);
1651            let mut _prev_end_offset: usize = 0;
1652
1653            Ok(())
1654        }
1655    }
1656
1657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedProtocol {
1658        #[inline(always)]
1659        fn new_empty() -> Self {
1660            Self::default()
1661        }
1662
1663        unsafe fn decode(
1664            &mut self,
1665            decoder: &mut fidl::encoding::Decoder<'_, D>,
1666            offset: usize,
1667            mut depth: fidl::encoding::Depth,
1668        ) -> fidl::Result<()> {
1669            decoder.debug_check_bounds::<Self>(offset);
1670            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1671                None => return Err(fidl::Error::NotNullable),
1672                Some(len) => len,
1673            };
1674            // Calling decoder.out_of_line_offset(0) is not allowed.
1675            if len == 0 {
1676                return Ok(());
1677            };
1678            depth.increment()?;
1679            let envelope_size = 8;
1680            let bytes_len = len * envelope_size;
1681            let offset = decoder.out_of_line_offset(bytes_len)?;
1682            // Decode the envelope for each type.
1683            let mut _next_ordinal_to_read = 0;
1684            let mut next_offset = offset;
1685            let end_offset = offset + bytes_len;
1686
1687            // Decode the remaining unknown envelopes.
1688            while next_offset < end_offset {
1689                _next_ordinal_to_read += 1;
1690                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1691                next_offset += envelope_size;
1692            }
1693
1694            Ok(())
1695        }
1696    }
1697
1698    impl AllowlistedResolver {
1699        #[inline(always)]
1700        fn max_ordinal_present(&self) -> u64 {
1701            0
1702        }
1703    }
1704
1705    impl fidl::encoding::ValueTypeMarker for AllowlistedResolver {
1706        type Borrowed<'a> = &'a Self;
1707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1708            value
1709        }
1710    }
1711
1712    unsafe impl fidl::encoding::TypeMarker for AllowlistedResolver {
1713        type Owned = Self;
1714
1715        #[inline(always)]
1716        fn inline_align(_context: fidl::encoding::Context) -> usize {
1717            8
1718        }
1719
1720        #[inline(always)]
1721        fn inline_size(_context: fidl::encoding::Context) -> usize {
1722            16
1723        }
1724    }
1725
1726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedResolver, D>
1727        for &AllowlistedResolver
1728    {
1729        unsafe fn encode(
1730            self,
1731            encoder: &mut fidl::encoding::Encoder<'_, D>,
1732            offset: usize,
1733            mut depth: fidl::encoding::Depth,
1734        ) -> fidl::Result<()> {
1735            encoder.debug_check_bounds::<AllowlistedResolver>(offset);
1736            // Vector header
1737            let max_ordinal: u64 = self.max_ordinal_present();
1738            encoder.write_num(max_ordinal, offset);
1739            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1740            // Calling encoder.out_of_line_offset(0) is not allowed.
1741            if max_ordinal == 0 {
1742                return Ok(());
1743            }
1744            depth.increment()?;
1745            let envelope_size = 8;
1746            let bytes_len = max_ordinal as usize * envelope_size;
1747            #[allow(unused_variables)]
1748            let offset = encoder.out_of_line_offset(bytes_len);
1749            let mut _prev_end_offset: usize = 0;
1750
1751            Ok(())
1752        }
1753    }
1754
1755    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedResolver {
1756        #[inline(always)]
1757        fn new_empty() -> Self {
1758            Self::default()
1759        }
1760
1761        unsafe fn decode(
1762            &mut self,
1763            decoder: &mut fidl::encoding::Decoder<'_, D>,
1764            offset: usize,
1765            mut depth: fidl::encoding::Depth,
1766        ) -> fidl::Result<()> {
1767            decoder.debug_check_bounds::<Self>(offset);
1768            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1769                None => return Err(fidl::Error::NotNullable),
1770                Some(len) => len,
1771            };
1772            // Calling decoder.out_of_line_offset(0) is not allowed.
1773            if len == 0 {
1774                return Ok(());
1775            };
1776            depth.increment()?;
1777            let envelope_size = 8;
1778            let bytes_len = len * envelope_size;
1779            let offset = decoder.out_of_line_offset(bytes_len)?;
1780            // Decode the envelope for each type.
1781            let mut _next_ordinal_to_read = 0;
1782            let mut next_offset = offset;
1783            let end_offset = offset + bytes_len;
1784
1785            // Decode the remaining unknown envelopes.
1786            while next_offset < end_offset {
1787                _next_ordinal_to_read += 1;
1788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1789                next_offset += envelope_size;
1790            }
1791
1792            Ok(())
1793        }
1794    }
1795
1796    impl AllowlistedRunner {
1797        #[inline(always)]
1798        fn max_ordinal_present(&self) -> u64 {
1799            0
1800        }
1801    }
1802
1803    impl fidl::encoding::ValueTypeMarker for AllowlistedRunner {
1804        type Borrowed<'a> = &'a Self;
1805        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1806            value
1807        }
1808    }
1809
1810    unsafe impl fidl::encoding::TypeMarker for AllowlistedRunner {
1811        type Owned = Self;
1812
1813        #[inline(always)]
1814        fn inline_align(_context: fidl::encoding::Context) -> usize {
1815            8
1816        }
1817
1818        #[inline(always)]
1819        fn inline_size(_context: fidl::encoding::Context) -> usize {
1820            16
1821        }
1822    }
1823
1824    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedRunner, D>
1825        for &AllowlistedRunner
1826    {
1827        unsafe fn encode(
1828            self,
1829            encoder: &mut fidl::encoding::Encoder<'_, D>,
1830            offset: usize,
1831            mut depth: fidl::encoding::Depth,
1832        ) -> fidl::Result<()> {
1833            encoder.debug_check_bounds::<AllowlistedRunner>(offset);
1834            // Vector header
1835            let max_ordinal: u64 = self.max_ordinal_present();
1836            encoder.write_num(max_ordinal, offset);
1837            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1838            // Calling encoder.out_of_line_offset(0) is not allowed.
1839            if max_ordinal == 0 {
1840                return Ok(());
1841            }
1842            depth.increment()?;
1843            let envelope_size = 8;
1844            let bytes_len = max_ordinal as usize * envelope_size;
1845            #[allow(unused_variables)]
1846            let offset = encoder.out_of_line_offset(bytes_len);
1847            let mut _prev_end_offset: usize = 0;
1848
1849            Ok(())
1850        }
1851    }
1852
1853    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedRunner {
1854        #[inline(always)]
1855        fn new_empty() -> Self {
1856            Self::default()
1857        }
1858
1859        unsafe fn decode(
1860            &mut self,
1861            decoder: &mut fidl::encoding::Decoder<'_, D>,
1862            offset: usize,
1863            mut depth: fidl::encoding::Depth,
1864        ) -> fidl::Result<()> {
1865            decoder.debug_check_bounds::<Self>(offset);
1866            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1867                None => return Err(fidl::Error::NotNullable),
1868                Some(len) => len,
1869            };
1870            // Calling decoder.out_of_line_offset(0) is not allowed.
1871            if len == 0 {
1872                return Ok(());
1873            };
1874            depth.increment()?;
1875            let envelope_size = 8;
1876            let bytes_len = len * envelope_size;
1877            let offset = decoder.out_of_line_offset(bytes_len)?;
1878            // Decode the envelope for each type.
1879            let mut _next_ordinal_to_read = 0;
1880            let mut next_offset = offset;
1881            let end_offset = offset + bytes_len;
1882
1883            // Decode the remaining unknown envelopes.
1884            while next_offset < end_offset {
1885                _next_ordinal_to_read += 1;
1886                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1887                next_offset += envelope_size;
1888            }
1889
1890            Ok(())
1891        }
1892    }
1893
1894    impl AllowlistedService {
1895        #[inline(always)]
1896        fn max_ordinal_present(&self) -> u64 {
1897            0
1898        }
1899    }
1900
1901    impl fidl::encoding::ValueTypeMarker for AllowlistedService {
1902        type Borrowed<'a> = &'a Self;
1903        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1904            value
1905        }
1906    }
1907
1908    unsafe impl fidl::encoding::TypeMarker for AllowlistedService {
1909        type Owned = Self;
1910
1911        #[inline(always)]
1912        fn inline_align(_context: fidl::encoding::Context) -> usize {
1913            8
1914        }
1915
1916        #[inline(always)]
1917        fn inline_size(_context: fidl::encoding::Context) -> usize {
1918            16
1919        }
1920    }
1921
1922    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedService, D>
1923        for &AllowlistedService
1924    {
1925        unsafe fn encode(
1926            self,
1927            encoder: &mut fidl::encoding::Encoder<'_, D>,
1928            offset: usize,
1929            mut depth: fidl::encoding::Depth,
1930        ) -> fidl::Result<()> {
1931            encoder.debug_check_bounds::<AllowlistedService>(offset);
1932            // Vector header
1933            let max_ordinal: u64 = self.max_ordinal_present();
1934            encoder.write_num(max_ordinal, offset);
1935            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1936            // Calling encoder.out_of_line_offset(0) is not allowed.
1937            if max_ordinal == 0 {
1938                return Ok(());
1939            }
1940            depth.increment()?;
1941            let envelope_size = 8;
1942            let bytes_len = max_ordinal as usize * envelope_size;
1943            #[allow(unused_variables)]
1944            let offset = encoder.out_of_line_offset(bytes_len);
1945            let mut _prev_end_offset: usize = 0;
1946
1947            Ok(())
1948        }
1949    }
1950
1951    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedService {
1952        #[inline(always)]
1953        fn new_empty() -> Self {
1954            Self::default()
1955        }
1956
1957        unsafe fn decode(
1958            &mut self,
1959            decoder: &mut fidl::encoding::Decoder<'_, D>,
1960            offset: usize,
1961            mut depth: fidl::encoding::Depth,
1962        ) -> fidl::Result<()> {
1963            decoder.debug_check_bounds::<Self>(offset);
1964            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1965                None => return Err(fidl::Error::NotNullable),
1966                Some(len) => len,
1967            };
1968            // Calling decoder.out_of_line_offset(0) is not allowed.
1969            if len == 0 {
1970                return Ok(());
1971            };
1972            depth.increment()?;
1973            let envelope_size = 8;
1974            let bytes_len = len * envelope_size;
1975            let offset = decoder.out_of_line_offset(bytes_len)?;
1976            // Decode the envelope for each type.
1977            let mut _next_ordinal_to_read = 0;
1978            let mut next_offset = offset;
1979            let end_offset = offset + bytes_len;
1980
1981            // Decode the remaining unknown envelopes.
1982            while next_offset < end_offset {
1983                _next_ordinal_to_read += 1;
1984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1985                next_offset += envelope_size;
1986            }
1987
1988            Ok(())
1989        }
1990    }
1991
1992    impl AllowlistedStorage {
1993        #[inline(always)]
1994        fn max_ordinal_present(&self) -> u64 {
1995            0
1996        }
1997    }
1998
1999    impl fidl::encoding::ValueTypeMarker for AllowlistedStorage {
2000        type Borrowed<'a> = &'a Self;
2001        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2002            value
2003        }
2004    }
2005
2006    unsafe impl fidl::encoding::TypeMarker for AllowlistedStorage {
2007        type Owned = Self;
2008
2009        #[inline(always)]
2010        fn inline_align(_context: fidl::encoding::Context) -> usize {
2011            8
2012        }
2013
2014        #[inline(always)]
2015        fn inline_size(_context: fidl::encoding::Context) -> usize {
2016            16
2017        }
2018    }
2019
2020    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedStorage, D>
2021        for &AllowlistedStorage
2022    {
2023        unsafe fn encode(
2024            self,
2025            encoder: &mut fidl::encoding::Encoder<'_, D>,
2026            offset: usize,
2027            mut depth: fidl::encoding::Depth,
2028        ) -> fidl::Result<()> {
2029            encoder.debug_check_bounds::<AllowlistedStorage>(offset);
2030            // Vector header
2031            let max_ordinal: u64 = self.max_ordinal_present();
2032            encoder.write_num(max_ordinal, offset);
2033            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2034            // Calling encoder.out_of_line_offset(0) is not allowed.
2035            if max_ordinal == 0 {
2036                return Ok(());
2037            }
2038            depth.increment()?;
2039            let envelope_size = 8;
2040            let bytes_len = max_ordinal as usize * envelope_size;
2041            #[allow(unused_variables)]
2042            let offset = encoder.out_of_line_offset(bytes_len);
2043            let mut _prev_end_offset: usize = 0;
2044
2045            Ok(())
2046        }
2047    }
2048
2049    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedStorage {
2050        #[inline(always)]
2051        fn new_empty() -> Self {
2052            Self::default()
2053        }
2054
2055        unsafe fn decode(
2056            &mut self,
2057            decoder: &mut fidl::encoding::Decoder<'_, D>,
2058            offset: usize,
2059            mut depth: fidl::encoding::Depth,
2060        ) -> fidl::Result<()> {
2061            decoder.debug_check_bounds::<Self>(offset);
2062            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2063                None => return Err(fidl::Error::NotNullable),
2064                Some(len) => len,
2065            };
2066            // Calling decoder.out_of_line_offset(0) is not allowed.
2067            if len == 0 {
2068                return Ok(());
2069            };
2070            depth.increment()?;
2071            let envelope_size = 8;
2072            let bytes_len = len * envelope_size;
2073            let offset = decoder.out_of_line_offset(bytes_len)?;
2074            // Decode the envelope for each type.
2075            let mut _next_ordinal_to_read = 0;
2076            let mut next_offset = offset;
2077            let end_offset = offset + bytes_len;
2078
2079            // Decode the remaining unknown envelopes.
2080            while next_offset < end_offset {
2081                _next_ordinal_to_read += 1;
2082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2083                next_offset += envelope_size;
2084            }
2085
2086            Ok(())
2087        }
2088    }
2089
2090    impl AnonymizedAggregate {
2091        #[inline(always)]
2092        fn max_ordinal_present(&self) -> u64 {
2093            if let Some(_) = self.instances {
2094                return 5;
2095            }
2096            if let Some(_) = self.sources {
2097                return 4;
2098            }
2099            if let Some(_) = self.members {
2100                return 3;
2101            }
2102            if let Some(_) = self.moniker {
2103                return 2;
2104            }
2105            if let Some(_) = self.capability {
2106                return 1;
2107            }
2108            0
2109        }
2110    }
2111
2112    impl fidl::encoding::ValueTypeMarker for AnonymizedAggregate {
2113        type Borrowed<'a> = &'a Self;
2114        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2115            value
2116        }
2117    }
2118
2119    unsafe impl fidl::encoding::TypeMarker for AnonymizedAggregate {
2120        type Owned = Self;
2121
2122        #[inline(always)]
2123        fn inline_align(_context: fidl::encoding::Context) -> usize {
2124            8
2125        }
2126
2127        #[inline(always)]
2128        fn inline_size(_context: fidl::encoding::Context) -> usize {
2129            16
2130        }
2131    }
2132
2133    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AnonymizedAggregate, D>
2134        for &AnonymizedAggregate
2135    {
2136        unsafe fn encode(
2137            self,
2138            encoder: &mut fidl::encoding::Encoder<'_, D>,
2139            offset: usize,
2140            mut depth: fidl::encoding::Depth,
2141        ) -> fidl::Result<()> {
2142            encoder.debug_check_bounds::<AnonymizedAggregate>(offset);
2143            // Vector header
2144            let max_ordinal: u64 = self.max_ordinal_present();
2145            encoder.write_num(max_ordinal, offset);
2146            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2147            // Calling encoder.out_of_line_offset(0) is not allowed.
2148            if max_ordinal == 0 {
2149                return Ok(());
2150            }
2151            depth.increment()?;
2152            let envelope_size = 8;
2153            let bytes_len = max_ordinal as usize * envelope_size;
2154            #[allow(unused_variables)]
2155            let offset = encoder.out_of_line_offset(bytes_len);
2156            let mut _prev_end_offset: usize = 0;
2157            if 1 > max_ordinal {
2158                return Ok(());
2159            }
2160
2161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2162            // are envelope_size bytes.
2163            let cur_offset: usize = (1 - 1) * envelope_size;
2164
2165            // Zero reserved fields.
2166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2167
2168            // Safety:
2169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2171            //   envelope_size bytes, there is always sufficient room.
2172            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
2173                self.capability
2174                    .as_ref()
2175                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
2176                encoder,
2177                offset + cur_offset,
2178                depth,
2179            )?;
2180
2181            _prev_end_offset = cur_offset + envelope_size;
2182            if 2 > max_ordinal {
2183                return Ok(());
2184            }
2185
2186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2187            // are envelope_size bytes.
2188            let cur_offset: usize = (2 - 1) * envelope_size;
2189
2190            // Zero reserved fields.
2191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2192
2193            // Safety:
2194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2196            //   envelope_size bytes, there is always sufficient room.
2197            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2198            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2199            encoder, offset + cur_offset, depth
2200        )?;
2201
2202            _prev_end_offset = cur_offset + envelope_size;
2203            if 3 > max_ordinal {
2204                return Ok(());
2205            }
2206
2207            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2208            // are envelope_size bytes.
2209            let cur_offset: usize = (3 - 1) * envelope_size;
2210
2211            // Zero reserved fields.
2212            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2213
2214            // Safety:
2215            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2216            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2217            //   envelope_size bytes, there is always sufficient room.
2218            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AggregateMember>, D>(
2219            self.members.as_ref().map(<fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::ValueTypeMarker>::borrow),
2220            encoder, offset + cur_offset, depth
2221        )?;
2222
2223            _prev_end_offset = cur_offset + envelope_size;
2224            if 4 > max_ordinal {
2225                return Ok(());
2226            }
2227
2228            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2229            // are envelope_size bytes.
2230            let cur_offset: usize = (4 - 1) * envelope_size;
2231
2232            // Zero reserved fields.
2233            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2234
2235            // Safety:
2236            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2237            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2238            //   envelope_size bytes, there is always sufficient room.
2239            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
2240                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
2241                encoder,
2242                offset + cur_offset,
2243                depth,
2244            )?;
2245
2246            _prev_end_offset = cur_offset + envelope_size;
2247            if 5 > max_ordinal {
2248                return Ok(());
2249            }
2250
2251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2252            // are envelope_size bytes.
2253            let cur_offset: usize = (5 - 1) * envelope_size;
2254
2255            // Zero reserved fields.
2256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2257
2258            // Safety:
2259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2261            //   envelope_size bytes, there is always sufficient room.
2262            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>, D>(
2263            self.instances.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance> as fidl::encoding::ValueTypeMarker>::borrow),
2264            encoder, offset + cur_offset, depth
2265        )?;
2266
2267            _prev_end_offset = cur_offset + envelope_size;
2268
2269            Ok(())
2270        }
2271    }
2272
2273    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AnonymizedAggregate {
2274        #[inline(always)]
2275        fn new_empty() -> Self {
2276            Self::default()
2277        }
2278
2279        unsafe fn decode(
2280            &mut self,
2281            decoder: &mut fidl::encoding::Decoder<'_, D>,
2282            offset: usize,
2283            mut depth: fidl::encoding::Depth,
2284        ) -> fidl::Result<()> {
2285            decoder.debug_check_bounds::<Self>(offset);
2286            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2287                None => return Err(fidl::Error::NotNullable),
2288                Some(len) => len,
2289            };
2290            // Calling decoder.out_of_line_offset(0) is not allowed.
2291            if len == 0 {
2292                return Ok(());
2293            };
2294            depth.increment()?;
2295            let envelope_size = 8;
2296            let bytes_len = len * envelope_size;
2297            let offset = decoder.out_of_line_offset(bytes_len)?;
2298            // Decode the envelope for each type.
2299            let mut _next_ordinal_to_read = 0;
2300            let mut next_offset = offset;
2301            let end_offset = offset + bytes_len;
2302            _next_ordinal_to_read += 1;
2303            if next_offset >= end_offset {
2304                return Ok(());
2305            }
2306
2307            // Decode unknown envelopes for gaps in ordinals.
2308            while _next_ordinal_to_read < 1 {
2309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2310                _next_ordinal_to_read += 1;
2311                next_offset += envelope_size;
2312            }
2313
2314            let next_out_of_line = decoder.next_out_of_line();
2315            let handles_before = decoder.remaining_handles();
2316            if let Some((inlined, num_bytes, num_handles)) =
2317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2318            {
2319                let member_inline_size =
2320                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
2321                        decoder.context,
2322                    );
2323                if inlined != (member_inline_size <= 4) {
2324                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2325                }
2326                let inner_offset;
2327                let mut inner_depth = depth.clone();
2328                if inlined {
2329                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2330                    inner_offset = next_offset;
2331                } else {
2332                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2333                    inner_depth.increment()?;
2334                }
2335                let val_ref =
2336                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
2337                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2339                {
2340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2341                }
2342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2344                }
2345            }
2346
2347            next_offset += envelope_size;
2348            _next_ordinal_to_read += 1;
2349            if next_offset >= end_offset {
2350                return Ok(());
2351            }
2352
2353            // Decode unknown envelopes for gaps in ordinals.
2354            while _next_ordinal_to_read < 2 {
2355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2356                _next_ordinal_to_read += 1;
2357                next_offset += envelope_size;
2358            }
2359
2360            let next_out_of_line = decoder.next_out_of_line();
2361            let handles_before = decoder.remaining_handles();
2362            if let Some((inlined, num_bytes, num_handles)) =
2363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2364            {
2365                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2366                if inlined != (member_inline_size <= 4) {
2367                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2368                }
2369                let inner_offset;
2370                let mut inner_depth = depth.clone();
2371                if inlined {
2372                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2373                    inner_offset = next_offset;
2374                } else {
2375                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2376                    inner_depth.increment()?;
2377                }
2378                let val_ref = self.moniker.get_or_insert_with(|| {
2379                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2380                });
2381                fidl::decode!(
2382                    fidl::encoding::BoundedString<4096>,
2383                    D,
2384                    val_ref,
2385                    decoder,
2386                    inner_offset,
2387                    inner_depth
2388                )?;
2389                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2390                {
2391                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2392                }
2393                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2394                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2395                }
2396            }
2397
2398            next_offset += envelope_size;
2399            _next_ordinal_to_read += 1;
2400            if next_offset >= end_offset {
2401                return Ok(());
2402            }
2403
2404            // Decode unknown envelopes for gaps in ordinals.
2405            while _next_ordinal_to_read < 3 {
2406                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2407                _next_ordinal_to_read += 1;
2408                next_offset += envelope_size;
2409            }
2410
2411            let next_out_of_line = decoder.next_out_of_line();
2412            let handles_before = decoder.remaining_handles();
2413            if let Some((inlined, num_bytes, num_handles)) =
2414                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2415            {
2416                let member_inline_size = <fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2417                if inlined != (member_inline_size <= 4) {
2418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2419                }
2420                let inner_offset;
2421                let mut inner_depth = depth.clone();
2422                if inlined {
2423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2424                    inner_offset = next_offset;
2425                } else {
2426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2427                    inner_depth.increment()?;
2428                }
2429                let val_ref = self.members.get_or_insert_with(|| {
2430                    fidl::new_empty!(fidl::encoding::UnboundedVector<AggregateMember>, D)
2431                });
2432                fidl::decode!(
2433                    fidl::encoding::UnboundedVector<AggregateMember>,
2434                    D,
2435                    val_ref,
2436                    decoder,
2437                    inner_offset,
2438                    inner_depth
2439                )?;
2440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2441                {
2442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2443                }
2444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2446                }
2447            }
2448
2449            next_offset += envelope_size;
2450            _next_ordinal_to_read += 1;
2451            if next_offset >= end_offset {
2452                return Ok(());
2453            }
2454
2455            // Decode unknown envelopes for gaps in ordinals.
2456            while _next_ordinal_to_read < 4 {
2457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2458                _next_ordinal_to_read += 1;
2459                next_offset += envelope_size;
2460            }
2461
2462            let next_out_of_line = decoder.next_out_of_line();
2463            let handles_before = decoder.remaining_handles();
2464            if let Some((inlined, num_bytes, num_handles)) =
2465                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2466            {
2467                let member_inline_size =
2468                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2469                if inlined != (member_inline_size <= 4) {
2470                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2471                }
2472                let inner_offset;
2473                let mut inner_depth = depth.clone();
2474                if inlined {
2475                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2476                    inner_offset = next_offset;
2477                } else {
2478                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2479                    inner_depth.increment()?;
2480                }
2481                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
2482                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
2483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2484                {
2485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2486                }
2487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2489                }
2490            }
2491
2492            next_offset += envelope_size;
2493            _next_ordinal_to_read += 1;
2494            if next_offset >= end_offset {
2495                return Ok(());
2496            }
2497
2498            // Decode unknown envelopes for gaps in ordinals.
2499            while _next_ordinal_to_read < 5 {
2500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2501                _next_ordinal_to_read += 1;
2502                next_offset += envelope_size;
2503            }
2504
2505            let next_out_of_line = decoder.next_out_of_line();
2506            let handles_before = decoder.remaining_handles();
2507            if let Some((inlined, num_bytes, num_handles)) =
2508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2509            {
2510                let member_inline_size = <fidl::encoding::UnboundedVector<
2511                    fidl_fuchsia_sys2__common::ServiceInstance,
2512                > as fidl::encoding::TypeMarker>::inline_size(
2513                    decoder.context
2514                );
2515                if inlined != (member_inline_size <= 4) {
2516                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2517                }
2518                let inner_offset;
2519                let mut inner_depth = depth.clone();
2520                if inlined {
2521                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2522                    inner_offset = next_offset;
2523                } else {
2524                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2525                    inner_depth.increment()?;
2526                }
2527                let val_ref = self.instances.get_or_insert_with(|| {
2528                    fidl::new_empty!(
2529                        fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2530                        D
2531                    )
2532                });
2533                fidl::decode!(
2534                    fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2535                    D,
2536                    val_ref,
2537                    decoder,
2538                    inner_offset,
2539                    inner_depth
2540                )?;
2541                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2542                {
2543                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2544                }
2545                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2546                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2547                }
2548            }
2549
2550            next_offset += envelope_size;
2551
2552            // Decode the remaining unknown envelopes.
2553            while next_offset < end_offset {
2554                _next_ordinal_to_read += 1;
2555                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2556                next_offset += envelope_size;
2557            }
2558
2559            Ok(())
2560        }
2561    }
2562
2563    impl Builtin {
2564        #[inline(always)]
2565        fn max_ordinal_present(&self) -> u64 {
2566            if let Some(_) = self.capability {
2567                return 1;
2568            }
2569            0
2570        }
2571    }
2572
2573    impl fidl::encoding::ValueTypeMarker for Builtin {
2574        type Borrowed<'a> = &'a Self;
2575        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2576            value
2577        }
2578    }
2579
2580    unsafe impl fidl::encoding::TypeMarker for Builtin {
2581        type Owned = Self;
2582
2583        #[inline(always)]
2584        fn inline_align(_context: fidl::encoding::Context) -> usize {
2585            8
2586        }
2587
2588        #[inline(always)]
2589        fn inline_size(_context: fidl::encoding::Context) -> usize {
2590            16
2591        }
2592    }
2593
2594    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Builtin, D> for &Builtin {
2595        unsafe fn encode(
2596            self,
2597            encoder: &mut fidl::encoding::Encoder<'_, D>,
2598            offset: usize,
2599            mut depth: fidl::encoding::Depth,
2600        ) -> fidl::Result<()> {
2601            encoder.debug_check_bounds::<Builtin>(offset);
2602            // Vector header
2603            let max_ordinal: u64 = self.max_ordinal_present();
2604            encoder.write_num(max_ordinal, offset);
2605            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2606            // Calling encoder.out_of_line_offset(0) is not allowed.
2607            if max_ordinal == 0 {
2608                return Ok(());
2609            }
2610            depth.increment()?;
2611            let envelope_size = 8;
2612            let bytes_len = max_ordinal as usize * envelope_size;
2613            #[allow(unused_variables)]
2614            let offset = encoder.out_of_line_offset(bytes_len);
2615            let mut _prev_end_offset: usize = 0;
2616            if 1 > max_ordinal {
2617                return Ok(());
2618            }
2619
2620            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2621            // are envelope_size bytes.
2622            let cur_offset: usize = (1 - 1) * envelope_size;
2623
2624            // Zero reserved fields.
2625            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2626
2627            // Safety:
2628            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2629            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2630            //   envelope_size bytes, there is always sufficient room.
2631            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
2632                self.capability
2633                    .as_ref()
2634                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
2635                encoder,
2636                offset + cur_offset,
2637                depth,
2638            )?;
2639
2640            _prev_end_offset = cur_offset + envelope_size;
2641
2642            Ok(())
2643        }
2644    }
2645
2646    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Builtin {
2647        #[inline(always)]
2648        fn new_empty() -> Self {
2649            Self::default()
2650        }
2651
2652        unsafe fn decode(
2653            &mut self,
2654            decoder: &mut fidl::encoding::Decoder<'_, D>,
2655            offset: usize,
2656            mut depth: fidl::encoding::Depth,
2657        ) -> fidl::Result<()> {
2658            decoder.debug_check_bounds::<Self>(offset);
2659            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2660                None => return Err(fidl::Error::NotNullable),
2661                Some(len) => len,
2662            };
2663            // Calling decoder.out_of_line_offset(0) is not allowed.
2664            if len == 0 {
2665                return Ok(());
2666            };
2667            depth.increment()?;
2668            let envelope_size = 8;
2669            let bytes_len = len * envelope_size;
2670            let offset = decoder.out_of_line_offset(bytes_len)?;
2671            // Decode the envelope for each type.
2672            let mut _next_ordinal_to_read = 0;
2673            let mut next_offset = offset;
2674            let end_offset = offset + bytes_len;
2675            _next_ordinal_to_read += 1;
2676            if next_offset >= end_offset {
2677                return Ok(());
2678            }
2679
2680            // Decode unknown envelopes for gaps in ordinals.
2681            while _next_ordinal_to_read < 1 {
2682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2683                _next_ordinal_to_read += 1;
2684                next_offset += envelope_size;
2685            }
2686
2687            let next_out_of_line = decoder.next_out_of_line();
2688            let handles_before = decoder.remaining_handles();
2689            if let Some((inlined, num_bytes, num_handles)) =
2690                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2691            {
2692                let member_inline_size =
2693                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
2694                        decoder.context,
2695                    );
2696                if inlined != (member_inline_size <= 4) {
2697                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2698                }
2699                let inner_offset;
2700                let mut inner_depth = depth.clone();
2701                if inlined {
2702                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2703                    inner_offset = next_offset;
2704                } else {
2705                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2706                    inner_depth.increment()?;
2707                }
2708                let val_ref =
2709                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
2710                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2711                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2712                {
2713                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2714                }
2715                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2716                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2717                }
2718            }
2719
2720            next_offset += envelope_size;
2721
2722            // Decode the remaining unknown envelopes.
2723            while next_offset < end_offset {
2724                _next_ordinal_to_read += 1;
2725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2726                next_offset += envelope_size;
2727            }
2728
2729            Ok(())
2730        }
2731    }
2732
2733    impl Capability {
2734        #[inline(always)]
2735        fn max_ordinal_present(&self) -> u64 {
2736            if let Some(_) = self.moniker {
2737                return 2;
2738            }
2739            if let Some(_) = self.source_capability {
2740                return 1;
2741            }
2742            0
2743        }
2744    }
2745
2746    impl fidl::encoding::ValueTypeMarker for Capability {
2747        type Borrowed<'a> = &'a Self;
2748        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2749            value
2750        }
2751    }
2752
2753    unsafe impl fidl::encoding::TypeMarker for Capability {
2754        type Owned = Self;
2755
2756        #[inline(always)]
2757        fn inline_align(_context: fidl::encoding::Context) -> usize {
2758            8
2759        }
2760
2761        #[inline(always)]
2762        fn inline_size(_context: fidl::encoding::Context) -> usize {
2763            16
2764        }
2765    }
2766
2767    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
2768        for &Capability
2769    {
2770        unsafe fn encode(
2771            self,
2772            encoder: &mut fidl::encoding::Encoder<'_, D>,
2773            offset: usize,
2774            mut depth: fidl::encoding::Depth,
2775        ) -> fidl::Result<()> {
2776            encoder.debug_check_bounds::<Capability>(offset);
2777            // Vector header
2778            let max_ordinal: u64 = self.max_ordinal_present();
2779            encoder.write_num(max_ordinal, offset);
2780            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2781            // Calling encoder.out_of_line_offset(0) is not allowed.
2782            if max_ordinal == 0 {
2783                return Ok(());
2784            }
2785            depth.increment()?;
2786            let envelope_size = 8;
2787            let bytes_len = max_ordinal as usize * envelope_size;
2788            #[allow(unused_variables)]
2789            let offset = encoder.out_of_line_offset(bytes_len);
2790            let mut _prev_end_offset: usize = 0;
2791            if 1 > max_ordinal {
2792                return Ok(());
2793            }
2794
2795            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2796            // are envelope_size bytes.
2797            let cur_offset: usize = (1 - 1) * envelope_size;
2798
2799            // Zero reserved fields.
2800            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2801
2802            // Safety:
2803            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2804            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2805            //   envelope_size bytes, there is always sufficient room.
2806            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
2807                self.source_capability
2808                    .as_ref()
2809                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
2810                encoder,
2811                offset + cur_offset,
2812                depth,
2813            )?;
2814
2815            _prev_end_offset = cur_offset + envelope_size;
2816            if 2 > max_ordinal {
2817                return Ok(());
2818            }
2819
2820            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2821            // are envelope_size bytes.
2822            let cur_offset: usize = (2 - 1) * envelope_size;
2823
2824            // Zero reserved fields.
2825            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2826
2827            // Safety:
2828            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2829            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2830            //   envelope_size bytes, there is always sufficient room.
2831            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2832            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2833            encoder, offset + cur_offset, depth
2834        )?;
2835
2836            _prev_end_offset = cur_offset + envelope_size;
2837
2838            Ok(())
2839        }
2840    }
2841
2842    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
2843        #[inline(always)]
2844        fn new_empty() -> Self {
2845            Self::default()
2846        }
2847
2848        unsafe fn decode(
2849            &mut self,
2850            decoder: &mut fidl::encoding::Decoder<'_, D>,
2851            offset: usize,
2852            mut depth: fidl::encoding::Depth,
2853        ) -> fidl::Result<()> {
2854            decoder.debug_check_bounds::<Self>(offset);
2855            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2856                None => return Err(fidl::Error::NotNullable),
2857                Some(len) => len,
2858            };
2859            // Calling decoder.out_of_line_offset(0) is not allowed.
2860            if len == 0 {
2861                return Ok(());
2862            };
2863            depth.increment()?;
2864            let envelope_size = 8;
2865            let bytes_len = len * envelope_size;
2866            let offset = decoder.out_of_line_offset(bytes_len)?;
2867            // Decode the envelope for each type.
2868            let mut _next_ordinal_to_read = 0;
2869            let mut next_offset = offset;
2870            let end_offset = offset + bytes_len;
2871            _next_ordinal_to_read += 1;
2872            if next_offset >= end_offset {
2873                return Ok(());
2874            }
2875
2876            // Decode unknown envelopes for gaps in ordinals.
2877            while _next_ordinal_to_read < 1 {
2878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2879                _next_ordinal_to_read += 1;
2880                next_offset += envelope_size;
2881            }
2882
2883            let next_out_of_line = decoder.next_out_of_line();
2884            let handles_before = decoder.remaining_handles();
2885            if let Some((inlined, num_bytes, num_handles)) =
2886                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2887            {
2888                let member_inline_size =
2889                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
2890                        decoder.context,
2891                    );
2892                if inlined != (member_inline_size <= 4) {
2893                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2894                }
2895                let inner_offset;
2896                let mut inner_depth = depth.clone();
2897                if inlined {
2898                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2899                    inner_offset = next_offset;
2900                } else {
2901                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2902                    inner_depth.increment()?;
2903                }
2904                let val_ref = self
2905                    .source_capability
2906                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
2907                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2908                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2909                {
2910                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2911                }
2912                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2913                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2914                }
2915            }
2916
2917            next_offset += envelope_size;
2918            _next_ordinal_to_read += 1;
2919            if next_offset >= end_offset {
2920                return Ok(());
2921            }
2922
2923            // Decode unknown envelopes for gaps in ordinals.
2924            while _next_ordinal_to_read < 2 {
2925                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2926                _next_ordinal_to_read += 1;
2927                next_offset += envelope_size;
2928            }
2929
2930            let next_out_of_line = decoder.next_out_of_line();
2931            let handles_before = decoder.remaining_handles();
2932            if let Some((inlined, num_bytes, num_handles)) =
2933                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2934            {
2935                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2936                if inlined != (member_inline_size <= 4) {
2937                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2938                }
2939                let inner_offset;
2940                let mut inner_depth = depth.clone();
2941                if inlined {
2942                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2943                    inner_offset = next_offset;
2944                } else {
2945                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2946                    inner_depth.increment()?;
2947                }
2948                let val_ref = self.moniker.get_or_insert_with(|| {
2949                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2950                });
2951                fidl::decode!(
2952                    fidl::encoding::BoundedString<4096>,
2953                    D,
2954                    val_ref,
2955                    decoder,
2956                    inner_offset,
2957                    inner_depth
2958                )?;
2959                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2960                {
2961                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2962                }
2963                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2964                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2965                }
2966            }
2967
2968            next_offset += envelope_size;
2969
2970            // Decode the remaining unknown envelopes.
2971            while next_offset < end_offset {
2972                _next_ordinal_to_read += 1;
2973                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2974                next_offset += envelope_size;
2975            }
2976
2977            Ok(())
2978        }
2979    }
2980
2981    impl CapabilityAllowlistEntry {
2982        #[inline(always)]
2983        fn max_ordinal_present(&self) -> u64 {
2984            if let Some(_) = self.source {
2985                return 5;
2986            }
2987            if let Some(_) = self.target_monikers {
2988                return 4;
2989            }
2990            if let Some(_) = self.capability {
2991                return 3;
2992            }
2993            if let Some(_) = self.source_name {
2994                return 2;
2995            }
2996            if let Some(_) = self.source_moniker {
2997                return 1;
2998            }
2999            0
3000        }
3001    }
3002
3003    impl fidl::encoding::ValueTypeMarker for CapabilityAllowlistEntry {
3004        type Borrowed<'a> = &'a Self;
3005        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3006            value
3007        }
3008    }
3009
3010    unsafe impl fidl::encoding::TypeMarker for CapabilityAllowlistEntry {
3011        type Owned = Self;
3012
3013        #[inline(always)]
3014        fn inline_align(_context: fidl::encoding::Context) -> usize {
3015            8
3016        }
3017
3018        #[inline(always)]
3019        fn inline_size(_context: fidl::encoding::Context) -> usize {
3020            16
3021        }
3022    }
3023
3024    unsafe impl<D: fidl::encoding::ResourceDialect>
3025        fidl::encoding::Encode<CapabilityAllowlistEntry, D> for &CapabilityAllowlistEntry
3026    {
3027        unsafe fn encode(
3028            self,
3029            encoder: &mut fidl::encoding::Encoder<'_, D>,
3030            offset: usize,
3031            mut depth: fidl::encoding::Depth,
3032        ) -> fidl::Result<()> {
3033            encoder.debug_check_bounds::<CapabilityAllowlistEntry>(offset);
3034            // Vector header
3035            let max_ordinal: u64 = self.max_ordinal_present();
3036            encoder.write_num(max_ordinal, offset);
3037            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3038            // Calling encoder.out_of_line_offset(0) is not allowed.
3039            if max_ordinal == 0 {
3040                return Ok(());
3041            }
3042            depth.increment()?;
3043            let envelope_size = 8;
3044            let bytes_len = max_ordinal as usize * envelope_size;
3045            #[allow(unused_variables)]
3046            let offset = encoder.out_of_line_offset(bytes_len);
3047            let mut _prev_end_offset: usize = 0;
3048            if 1 > max_ordinal {
3049                return Ok(());
3050            }
3051
3052            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3053            // are envelope_size bytes.
3054            let cur_offset: usize = (1 - 1) * envelope_size;
3055
3056            // Zero reserved fields.
3057            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3058
3059            // Safety:
3060            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3061            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3062            //   envelope_size bytes, there is always sufficient room.
3063            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3064            self.source_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3065            encoder, offset + cur_offset, depth
3066        )?;
3067
3068            _prev_end_offset = cur_offset + envelope_size;
3069            if 2 > max_ordinal {
3070                return Ok(());
3071            }
3072
3073            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3074            // are envelope_size bytes.
3075            let cur_offset: usize = (2 - 1) * envelope_size;
3076
3077            // Zero reserved fields.
3078            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3079
3080            // Safety:
3081            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3082            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3083            //   envelope_size bytes, there is always sufficient room.
3084            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3085                self.source_name.as_ref().map(
3086                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3087                ),
3088                encoder,
3089                offset + cur_offset,
3090                depth,
3091            )?;
3092
3093            _prev_end_offset = cur_offset + envelope_size;
3094            if 3 > max_ordinal {
3095                return Ok(());
3096            }
3097
3098            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3099            // are envelope_size bytes.
3100            let cur_offset: usize = (3 - 1) * envelope_size;
3101
3102            // Zero reserved fields.
3103            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3104
3105            // Safety:
3106            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3107            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3108            //   envelope_size bytes, there is always sufficient room.
3109            fidl::encoding::encode_in_envelope_optional::<AllowlistedCapability, D>(
3110                self.capability
3111                    .as_ref()
3112                    .map(<AllowlistedCapability as fidl::encoding::ValueTypeMarker>::borrow),
3113                encoder,
3114                offset + cur_offset,
3115                depth,
3116            )?;
3117
3118            _prev_end_offset = cur_offset + envelope_size;
3119            if 4 > max_ordinal {
3120                return Ok(());
3121            }
3122
3123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3124            // are envelope_size bytes.
3125            let cur_offset: usize = (4 - 1) * envelope_size;
3126
3127            // Zero reserved fields.
3128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3129
3130            // Safety:
3131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3133            //   envelope_size bytes, there is always sufficient room.
3134            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3135            self.target_monikers.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3136            encoder, offset + cur_offset, depth
3137        )?;
3138
3139            _prev_end_offset = cur_offset + envelope_size;
3140            if 5 > max_ordinal {
3141                return Ok(());
3142            }
3143
3144            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3145            // are envelope_size bytes.
3146            let cur_offset: usize = (5 - 1) * envelope_size;
3147
3148            // Zero reserved fields.
3149            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3150
3151            // Safety:
3152            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3153            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3154            //   envelope_size bytes, there is always sufficient room.
3155            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
3156            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
3157            encoder, offset + cur_offset, depth
3158        )?;
3159
3160            _prev_end_offset = cur_offset + envelope_size;
3161
3162            Ok(())
3163        }
3164    }
3165
3166    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3167        for CapabilityAllowlistEntry
3168    {
3169        #[inline(always)]
3170        fn new_empty() -> Self {
3171            Self::default()
3172        }
3173
3174        unsafe fn decode(
3175            &mut self,
3176            decoder: &mut fidl::encoding::Decoder<'_, D>,
3177            offset: usize,
3178            mut depth: fidl::encoding::Depth,
3179        ) -> fidl::Result<()> {
3180            decoder.debug_check_bounds::<Self>(offset);
3181            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3182                None => return Err(fidl::Error::NotNullable),
3183                Some(len) => len,
3184            };
3185            // Calling decoder.out_of_line_offset(0) is not allowed.
3186            if len == 0 {
3187                return Ok(());
3188            };
3189            depth.increment()?;
3190            let envelope_size = 8;
3191            let bytes_len = len * envelope_size;
3192            let offset = decoder.out_of_line_offset(bytes_len)?;
3193            // Decode the envelope for each type.
3194            let mut _next_ordinal_to_read = 0;
3195            let mut next_offset = offset;
3196            let end_offset = offset + bytes_len;
3197            _next_ordinal_to_read += 1;
3198            if next_offset >= end_offset {
3199                return Ok(());
3200            }
3201
3202            // Decode unknown envelopes for gaps in ordinals.
3203            while _next_ordinal_to_read < 1 {
3204                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3205                _next_ordinal_to_read += 1;
3206                next_offset += envelope_size;
3207            }
3208
3209            let next_out_of_line = decoder.next_out_of_line();
3210            let handles_before = decoder.remaining_handles();
3211            if let Some((inlined, num_bytes, num_handles)) =
3212                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3213            {
3214                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3215                if inlined != (member_inline_size <= 4) {
3216                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3217                }
3218                let inner_offset;
3219                let mut inner_depth = depth.clone();
3220                if inlined {
3221                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3222                    inner_offset = next_offset;
3223                } else {
3224                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3225                    inner_depth.increment()?;
3226                }
3227                let val_ref = self.source_moniker.get_or_insert_with(|| {
3228                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3229                });
3230                fidl::decode!(
3231                    fidl::encoding::BoundedString<4096>,
3232                    D,
3233                    val_ref,
3234                    decoder,
3235                    inner_offset,
3236                    inner_depth
3237                )?;
3238                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3239                {
3240                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3241                }
3242                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3243                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3244                }
3245            }
3246
3247            next_offset += envelope_size;
3248            _next_ordinal_to_read += 1;
3249            if next_offset >= end_offset {
3250                return Ok(());
3251            }
3252
3253            // Decode unknown envelopes for gaps in ordinals.
3254            while _next_ordinal_to_read < 2 {
3255                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3256                _next_ordinal_to_read += 1;
3257                next_offset += envelope_size;
3258            }
3259
3260            let next_out_of_line = decoder.next_out_of_line();
3261            let handles_before = decoder.remaining_handles();
3262            if let Some((inlined, num_bytes, num_handles)) =
3263                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3264            {
3265                let member_inline_size =
3266                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3267                        decoder.context,
3268                    );
3269                if inlined != (member_inline_size <= 4) {
3270                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3271                }
3272                let inner_offset;
3273                let mut inner_depth = depth.clone();
3274                if inlined {
3275                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3276                    inner_offset = next_offset;
3277                } else {
3278                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3279                    inner_depth.increment()?;
3280                }
3281                let val_ref = self
3282                    .source_name
3283                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3284                fidl::decode!(
3285                    fidl::encoding::BoundedString<255>,
3286                    D,
3287                    val_ref,
3288                    decoder,
3289                    inner_offset,
3290                    inner_depth
3291                )?;
3292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3293                {
3294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3295                }
3296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3298                }
3299            }
3300
3301            next_offset += envelope_size;
3302            _next_ordinal_to_read += 1;
3303            if next_offset >= end_offset {
3304                return Ok(());
3305            }
3306
3307            // Decode unknown envelopes for gaps in ordinals.
3308            while _next_ordinal_to_read < 3 {
3309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3310                _next_ordinal_to_read += 1;
3311                next_offset += envelope_size;
3312            }
3313
3314            let next_out_of_line = decoder.next_out_of_line();
3315            let handles_before = decoder.remaining_handles();
3316            if let Some((inlined, num_bytes, num_handles)) =
3317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3318            {
3319                let member_inline_size =
3320                    <AllowlistedCapability as fidl::encoding::TypeMarker>::inline_size(
3321                        decoder.context,
3322                    );
3323                if inlined != (member_inline_size <= 4) {
3324                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3325                }
3326                let inner_offset;
3327                let mut inner_depth = depth.clone();
3328                if inlined {
3329                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3330                    inner_offset = next_offset;
3331                } else {
3332                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3333                    inner_depth.increment()?;
3334                }
3335                let val_ref = self
3336                    .capability
3337                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedCapability, D));
3338                fidl::decode!(
3339                    AllowlistedCapability,
3340                    D,
3341                    val_ref,
3342                    decoder,
3343                    inner_offset,
3344                    inner_depth
3345                )?;
3346                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3347                {
3348                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3349                }
3350                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3351                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3352                }
3353            }
3354
3355            next_offset += envelope_size;
3356            _next_ordinal_to_read += 1;
3357            if next_offset >= end_offset {
3358                return Ok(());
3359            }
3360
3361            // Decode unknown envelopes for gaps in ordinals.
3362            while _next_ordinal_to_read < 4 {
3363                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3364                _next_ordinal_to_read += 1;
3365                next_offset += envelope_size;
3366            }
3367
3368            let next_out_of_line = decoder.next_out_of_line();
3369            let handles_before = decoder.remaining_handles();
3370            if let Some((inlined, num_bytes, num_handles)) =
3371                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3372            {
3373                let member_inline_size = <fidl::encoding::Vector<
3374                    fidl::encoding::BoundedString<4096>,
3375                    128,
3376                > as fidl::encoding::TypeMarker>::inline_size(
3377                    decoder.context
3378                );
3379                if inlined != (member_inline_size <= 4) {
3380                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3381                }
3382                let inner_offset;
3383                let mut inner_depth = depth.clone();
3384                if inlined {
3385                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3386                    inner_offset = next_offset;
3387                } else {
3388                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3389                    inner_depth.increment()?;
3390                }
3391                let val_ref = self.target_monikers.get_or_insert_with(|| {
3392                    fidl::new_empty!(
3393                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3394                        D
3395                    )
3396                });
3397                fidl::decode!(
3398                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3399                    D,
3400                    val_ref,
3401                    decoder,
3402                    inner_offset,
3403                    inner_depth
3404                )?;
3405                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3406                {
3407                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3408                }
3409                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3410                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3411                }
3412            }
3413
3414            next_offset += envelope_size;
3415            _next_ordinal_to_read += 1;
3416            if next_offset >= end_offset {
3417                return Ok(());
3418            }
3419
3420            // Decode unknown envelopes for gaps in ordinals.
3421            while _next_ordinal_to_read < 5 {
3422                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3423                _next_ordinal_to_read += 1;
3424                next_offset += envelope_size;
3425            }
3426
3427            let next_out_of_line = decoder.next_out_of_line();
3428            let handles_before = decoder.remaining_handles();
3429            if let Some((inlined, num_bytes, num_handles)) =
3430                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3431            {
3432                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3433                if inlined != (member_inline_size <= 4) {
3434                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3435                }
3436                let inner_offset;
3437                let mut inner_depth = depth.clone();
3438                if inlined {
3439                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3440                    inner_offset = next_offset;
3441                } else {
3442                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3443                    inner_depth.increment()?;
3444                }
3445                let val_ref = self.source.get_or_insert_with(|| {
3446                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
3447                });
3448                fidl::decode!(
3449                    fidl_fuchsia_component_decl__common::Ref,
3450                    D,
3451                    val_ref,
3452                    decoder,
3453                    inner_offset,
3454                    inner_depth
3455                )?;
3456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3457                {
3458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3459                }
3460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3462                }
3463            }
3464
3465            next_offset += envelope_size;
3466
3467            // Decode the remaining unknown envelopes.
3468            while next_offset < end_offset {
3469                _next_ordinal_to_read += 1;
3470                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3471                next_offset += envelope_size;
3472            }
3473
3474            Ok(())
3475        }
3476    }
3477
3478    impl CapabilityPolicyAllowlists {
3479        #[inline(always)]
3480        fn max_ordinal_present(&self) -> u64 {
3481            if let Some(_) = self.allowlist {
3482                return 1;
3483            }
3484            0
3485        }
3486    }
3487
3488    impl fidl::encoding::ValueTypeMarker for CapabilityPolicyAllowlists {
3489        type Borrowed<'a> = &'a Self;
3490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3491            value
3492        }
3493    }
3494
3495    unsafe impl fidl::encoding::TypeMarker for CapabilityPolicyAllowlists {
3496        type Owned = Self;
3497
3498        #[inline(always)]
3499        fn inline_align(_context: fidl::encoding::Context) -> usize {
3500            8
3501        }
3502
3503        #[inline(always)]
3504        fn inline_size(_context: fidl::encoding::Context) -> usize {
3505            16
3506        }
3507    }
3508
3509    unsafe impl<D: fidl::encoding::ResourceDialect>
3510        fidl::encoding::Encode<CapabilityPolicyAllowlists, D> for &CapabilityPolicyAllowlists
3511    {
3512        unsafe fn encode(
3513            self,
3514            encoder: &mut fidl::encoding::Encoder<'_, D>,
3515            offset: usize,
3516            mut depth: fidl::encoding::Depth,
3517        ) -> fidl::Result<()> {
3518            encoder.debug_check_bounds::<CapabilityPolicyAllowlists>(offset);
3519            // Vector header
3520            let max_ordinal: u64 = self.max_ordinal_present();
3521            encoder.write_num(max_ordinal, offset);
3522            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3523            // Calling encoder.out_of_line_offset(0) is not allowed.
3524            if max_ordinal == 0 {
3525                return Ok(());
3526            }
3527            depth.increment()?;
3528            let envelope_size = 8;
3529            let bytes_len = max_ordinal as usize * envelope_size;
3530            #[allow(unused_variables)]
3531            let offset = encoder.out_of_line_offset(bytes_len);
3532            let mut _prev_end_offset: usize = 0;
3533            if 1 > max_ordinal {
3534                return Ok(());
3535            }
3536
3537            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3538            // are envelope_size bytes.
3539            let cur_offset: usize = (1 - 1) * envelope_size;
3540
3541            // Zero reserved fields.
3542            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3543
3544            // Safety:
3545            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3546            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3547            //   envelope_size bytes, there is always sufficient room.
3548            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D>(
3549            self.allowlist.as_ref().map(<fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3550            encoder, offset + cur_offset, depth
3551        )?;
3552
3553            _prev_end_offset = cur_offset + envelope_size;
3554
3555            Ok(())
3556        }
3557    }
3558
3559    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3560        for CapabilityPolicyAllowlists
3561    {
3562        #[inline(always)]
3563        fn new_empty() -> Self {
3564            Self::default()
3565        }
3566
3567        unsafe fn decode(
3568            &mut self,
3569            decoder: &mut fidl::encoding::Decoder<'_, D>,
3570            offset: usize,
3571            mut depth: fidl::encoding::Depth,
3572        ) -> fidl::Result<()> {
3573            decoder.debug_check_bounds::<Self>(offset);
3574            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3575                None => return Err(fidl::Error::NotNullable),
3576                Some(len) => len,
3577            };
3578            // Calling decoder.out_of_line_offset(0) is not allowed.
3579            if len == 0 {
3580                return Ok(());
3581            };
3582            depth.increment()?;
3583            let envelope_size = 8;
3584            let bytes_len = len * envelope_size;
3585            let offset = decoder.out_of_line_offset(bytes_len)?;
3586            // Decode the envelope for each type.
3587            let mut _next_ordinal_to_read = 0;
3588            let mut next_offset = offset;
3589            let end_offset = offset + bytes_len;
3590            _next_ordinal_to_read += 1;
3591            if next_offset >= end_offset {
3592                return Ok(());
3593            }
3594
3595            // Decode unknown envelopes for gaps in ordinals.
3596            while _next_ordinal_to_read < 1 {
3597                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3598                _next_ordinal_to_read += 1;
3599                next_offset += envelope_size;
3600            }
3601
3602            let next_out_of_line = decoder.next_out_of_line();
3603            let handles_before = decoder.remaining_handles();
3604            if let Some((inlined, num_bytes, num_handles)) =
3605                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3606            {
3607                let member_inline_size = <fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3608                if inlined != (member_inline_size <= 4) {
3609                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3610                }
3611                let inner_offset;
3612                let mut inner_depth = depth.clone();
3613                if inlined {
3614                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3615                    inner_offset = next_offset;
3616                } else {
3617                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3618                    inner_depth.increment()?;
3619                }
3620                let val_ref = self.allowlist.get_or_insert_with(
3621                    || fidl::new_empty!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D),
3622                );
3623                fidl::decode!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
3624                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3625                {
3626                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3627                }
3628                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3629                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3630                }
3631            }
3632
3633            next_offset += envelope_size;
3634
3635            // Decode the remaining unknown envelopes.
3636            while next_offset < end_offset {
3637                _next_ordinal_to_read += 1;
3638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3639                next_offset += envelope_size;
3640            }
3641
3642            Ok(())
3643        }
3644    }
3645
3646    impl ChildPolicyAllowlists {
3647        #[inline(always)]
3648        fn max_ordinal_present(&self) -> u64 {
3649            if let Some(_) = self.reboot_on_terminate {
3650                return 1;
3651            }
3652            0
3653        }
3654    }
3655
3656    impl fidl::encoding::ValueTypeMarker for ChildPolicyAllowlists {
3657        type Borrowed<'a> = &'a Self;
3658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3659            value
3660        }
3661    }
3662
3663    unsafe impl fidl::encoding::TypeMarker for ChildPolicyAllowlists {
3664        type Owned = Self;
3665
3666        #[inline(always)]
3667        fn inline_align(_context: fidl::encoding::Context) -> usize {
3668            8
3669        }
3670
3671        #[inline(always)]
3672        fn inline_size(_context: fidl::encoding::Context) -> usize {
3673            16
3674        }
3675    }
3676
3677    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildPolicyAllowlists, D>
3678        for &ChildPolicyAllowlists
3679    {
3680        unsafe fn encode(
3681            self,
3682            encoder: &mut fidl::encoding::Encoder<'_, D>,
3683            offset: usize,
3684            mut depth: fidl::encoding::Depth,
3685        ) -> fidl::Result<()> {
3686            encoder.debug_check_bounds::<ChildPolicyAllowlists>(offset);
3687            // Vector header
3688            let max_ordinal: u64 = self.max_ordinal_present();
3689            encoder.write_num(max_ordinal, offset);
3690            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3691            // Calling encoder.out_of_line_offset(0) is not allowed.
3692            if max_ordinal == 0 {
3693                return Ok(());
3694            }
3695            depth.increment()?;
3696            let envelope_size = 8;
3697            let bytes_len = max_ordinal as usize * envelope_size;
3698            #[allow(unused_variables)]
3699            let offset = encoder.out_of_line_offset(bytes_len);
3700            let mut _prev_end_offset: usize = 0;
3701            if 1 > max_ordinal {
3702                return Ok(());
3703            }
3704
3705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3706            // are envelope_size bytes.
3707            let cur_offset: usize = (1 - 1) * envelope_size;
3708
3709            // Zero reserved fields.
3710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3711
3712            // Safety:
3713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3715            //   envelope_size bytes, there is always sufficient room.
3716            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3717            self.reboot_on_terminate.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3718            encoder, offset + cur_offset, depth
3719        )?;
3720
3721            _prev_end_offset = cur_offset + envelope_size;
3722
3723            Ok(())
3724        }
3725    }
3726
3727    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildPolicyAllowlists {
3728        #[inline(always)]
3729        fn new_empty() -> Self {
3730            Self::default()
3731        }
3732
3733        unsafe fn decode(
3734            &mut self,
3735            decoder: &mut fidl::encoding::Decoder<'_, D>,
3736            offset: usize,
3737            mut depth: fidl::encoding::Depth,
3738        ) -> fidl::Result<()> {
3739            decoder.debug_check_bounds::<Self>(offset);
3740            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3741                None => return Err(fidl::Error::NotNullable),
3742                Some(len) => len,
3743            };
3744            // Calling decoder.out_of_line_offset(0) is not allowed.
3745            if len == 0 {
3746                return Ok(());
3747            };
3748            depth.increment()?;
3749            let envelope_size = 8;
3750            let bytes_len = len * envelope_size;
3751            let offset = decoder.out_of_line_offset(bytes_len)?;
3752            // Decode the envelope for each type.
3753            let mut _next_ordinal_to_read = 0;
3754            let mut next_offset = offset;
3755            let end_offset = offset + bytes_len;
3756            _next_ordinal_to_read += 1;
3757            if next_offset >= end_offset {
3758                return Ok(());
3759            }
3760
3761            // Decode unknown envelopes for gaps in ordinals.
3762            while _next_ordinal_to_read < 1 {
3763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3764                _next_ordinal_to_read += 1;
3765                next_offset += envelope_size;
3766            }
3767
3768            let next_out_of_line = decoder.next_out_of_line();
3769            let handles_before = decoder.remaining_handles();
3770            if let Some((inlined, num_bytes, num_handles)) =
3771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3772            {
3773                let member_inline_size = <fidl::encoding::Vector<
3774                    fidl::encoding::BoundedString<4096>,
3775                    128,
3776                > as fidl::encoding::TypeMarker>::inline_size(
3777                    decoder.context
3778                );
3779                if inlined != (member_inline_size <= 4) {
3780                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3781                }
3782                let inner_offset;
3783                let mut inner_depth = depth.clone();
3784                if inlined {
3785                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3786                    inner_offset = next_offset;
3787                } else {
3788                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3789                    inner_depth.increment()?;
3790                }
3791                let val_ref = self.reboot_on_terminate.get_or_insert_with(|| {
3792                    fidl::new_empty!(
3793                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3794                        D
3795                    )
3796                });
3797                fidl::decode!(
3798                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3799                    D,
3800                    val_ref,
3801                    decoder,
3802                    inner_offset,
3803                    inner_depth
3804                )?;
3805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3806                {
3807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3808                }
3809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3811                }
3812            }
3813
3814            next_offset += envelope_size;
3815
3816            // Decode the remaining unknown envelopes.
3817            while next_offset < end_offset {
3818                _next_ordinal_to_read += 1;
3819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3820                next_offset += envelope_size;
3821            }
3822
3823            Ok(())
3824        }
3825    }
3826
3827    impl Component {
3828        #[inline(always)]
3829        fn max_ordinal_present(&self) -> u64 {
3830            if let Some(_) = self.moniker {
3831                return 2;
3832            }
3833            if let Some(_) = self.capability {
3834                return 1;
3835            }
3836            0
3837        }
3838    }
3839
3840    impl fidl::encoding::ValueTypeMarker for Component {
3841        type Borrowed<'a> = &'a Self;
3842        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3843            value
3844        }
3845    }
3846
3847    unsafe impl fidl::encoding::TypeMarker for Component {
3848        type Owned = Self;
3849
3850        #[inline(always)]
3851        fn inline_align(_context: fidl::encoding::Context) -> usize {
3852            8
3853        }
3854
3855        #[inline(always)]
3856        fn inline_size(_context: fidl::encoding::Context) -> usize {
3857            16
3858        }
3859    }
3860
3861    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Component, D>
3862        for &Component
3863    {
3864        unsafe fn encode(
3865            self,
3866            encoder: &mut fidl::encoding::Encoder<'_, D>,
3867            offset: usize,
3868            mut depth: fidl::encoding::Depth,
3869        ) -> fidl::Result<()> {
3870            encoder.debug_check_bounds::<Component>(offset);
3871            // Vector header
3872            let max_ordinal: u64 = self.max_ordinal_present();
3873            encoder.write_num(max_ordinal, offset);
3874            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3875            // Calling encoder.out_of_line_offset(0) is not allowed.
3876            if max_ordinal == 0 {
3877                return Ok(());
3878            }
3879            depth.increment()?;
3880            let envelope_size = 8;
3881            let bytes_len = max_ordinal as usize * envelope_size;
3882            #[allow(unused_variables)]
3883            let offset = encoder.out_of_line_offset(bytes_len);
3884            let mut _prev_end_offset: usize = 0;
3885            if 1 > max_ordinal {
3886                return Ok(());
3887            }
3888
3889            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3890            // are envelope_size bytes.
3891            let cur_offset: usize = (1 - 1) * envelope_size;
3892
3893            // Zero reserved fields.
3894            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3895
3896            // Safety:
3897            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3898            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3899            //   envelope_size bytes, there is always sufficient room.
3900            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
3901                self.capability
3902                    .as_ref()
3903                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
3904                encoder,
3905                offset + cur_offset,
3906                depth,
3907            )?;
3908
3909            _prev_end_offset = cur_offset + envelope_size;
3910            if 2 > max_ordinal {
3911                return Ok(());
3912            }
3913
3914            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3915            // are envelope_size bytes.
3916            let cur_offset: usize = (2 - 1) * envelope_size;
3917
3918            // Zero reserved fields.
3919            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3920
3921            // Safety:
3922            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3923            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3924            //   envelope_size bytes, there is always sufficient room.
3925            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3926            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3927            encoder, offset + cur_offset, depth
3928        )?;
3929
3930            _prev_end_offset = cur_offset + envelope_size;
3931
3932            Ok(())
3933        }
3934    }
3935
3936    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Component {
3937        #[inline(always)]
3938        fn new_empty() -> Self {
3939            Self::default()
3940        }
3941
3942        unsafe fn decode(
3943            &mut self,
3944            decoder: &mut fidl::encoding::Decoder<'_, D>,
3945            offset: usize,
3946            mut depth: fidl::encoding::Depth,
3947        ) -> fidl::Result<()> {
3948            decoder.debug_check_bounds::<Self>(offset);
3949            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3950                None => return Err(fidl::Error::NotNullable),
3951                Some(len) => len,
3952            };
3953            // Calling decoder.out_of_line_offset(0) is not allowed.
3954            if len == 0 {
3955                return Ok(());
3956            };
3957            depth.increment()?;
3958            let envelope_size = 8;
3959            let bytes_len = len * envelope_size;
3960            let offset = decoder.out_of_line_offset(bytes_len)?;
3961            // Decode the envelope for each type.
3962            let mut _next_ordinal_to_read = 0;
3963            let mut next_offset = offset;
3964            let end_offset = offset + bytes_len;
3965            _next_ordinal_to_read += 1;
3966            if next_offset >= end_offset {
3967                return Ok(());
3968            }
3969
3970            // Decode unknown envelopes for gaps in ordinals.
3971            while _next_ordinal_to_read < 1 {
3972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3973                _next_ordinal_to_read += 1;
3974                next_offset += envelope_size;
3975            }
3976
3977            let next_out_of_line = decoder.next_out_of_line();
3978            let handles_before = decoder.remaining_handles();
3979            if let Some((inlined, num_bytes, num_handles)) =
3980                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3981            {
3982                let member_inline_size =
3983                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
3984                        decoder.context,
3985                    );
3986                if inlined != (member_inline_size <= 4) {
3987                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3988                }
3989                let inner_offset;
3990                let mut inner_depth = depth.clone();
3991                if inlined {
3992                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3993                    inner_offset = next_offset;
3994                } else {
3995                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3996                    inner_depth.increment()?;
3997                }
3998                let val_ref =
3999                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
4000                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
4001                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4002                {
4003                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4004                }
4005                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4006                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4007                }
4008            }
4009
4010            next_offset += envelope_size;
4011            _next_ordinal_to_read += 1;
4012            if next_offset >= end_offset {
4013                return Ok(());
4014            }
4015
4016            // Decode unknown envelopes for gaps in ordinals.
4017            while _next_ordinal_to_read < 2 {
4018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4019                _next_ordinal_to_read += 1;
4020                next_offset += envelope_size;
4021            }
4022
4023            let next_out_of_line = decoder.next_out_of_line();
4024            let handles_before = decoder.remaining_handles();
4025            if let Some((inlined, num_bytes, num_handles)) =
4026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4027            {
4028                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4029                if inlined != (member_inline_size <= 4) {
4030                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4031                }
4032                let inner_offset;
4033                let mut inner_depth = depth.clone();
4034                if inlined {
4035                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4036                    inner_offset = next_offset;
4037                } else {
4038                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4039                    inner_depth.increment()?;
4040                }
4041                let val_ref = self.moniker.get_or_insert_with(|| {
4042                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4043                });
4044                fidl::decode!(
4045                    fidl::encoding::BoundedString<4096>,
4046                    D,
4047                    val_ref,
4048                    decoder,
4049                    inner_offset,
4050                    inner_depth
4051                )?;
4052                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4053                {
4054                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4055                }
4056                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4057                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4058                }
4059            }
4060
4061            next_offset += envelope_size;
4062
4063            // Decode the remaining unknown envelopes.
4064            while next_offset < end_offset {
4065                _next_ordinal_to_read += 1;
4066                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4067                next_offset += envelope_size;
4068            }
4069
4070            Ok(())
4071        }
4072    }
4073
4074    impl ComponentIdIndex {
4075        #[inline(always)]
4076        fn max_ordinal_present(&self) -> u64 {
4077            if let Some(_) = self.instances {
4078                return 2;
4079            }
4080            0
4081        }
4082    }
4083
4084    impl fidl::encoding::ValueTypeMarker for ComponentIdIndex {
4085        type Borrowed<'a> = &'a Self;
4086        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4087            value
4088        }
4089    }
4090
4091    unsafe impl fidl::encoding::TypeMarker for ComponentIdIndex {
4092        type Owned = Self;
4093
4094        #[inline(always)]
4095        fn inline_align(_context: fidl::encoding::Context) -> usize {
4096            8
4097        }
4098
4099        #[inline(always)]
4100        fn inline_size(_context: fidl::encoding::Context) -> usize {
4101            16
4102        }
4103    }
4104
4105    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentIdIndex, D>
4106        for &ComponentIdIndex
4107    {
4108        unsafe fn encode(
4109            self,
4110            encoder: &mut fidl::encoding::Encoder<'_, D>,
4111            offset: usize,
4112            mut depth: fidl::encoding::Depth,
4113        ) -> fidl::Result<()> {
4114            encoder.debug_check_bounds::<ComponentIdIndex>(offset);
4115            // Vector header
4116            let max_ordinal: u64 = self.max_ordinal_present();
4117            encoder.write_num(max_ordinal, offset);
4118            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4119            // Calling encoder.out_of_line_offset(0) is not allowed.
4120            if max_ordinal == 0 {
4121                return Ok(());
4122            }
4123            depth.increment()?;
4124            let envelope_size = 8;
4125            let bytes_len = max_ordinal as usize * envelope_size;
4126            #[allow(unused_variables)]
4127            let offset = encoder.out_of_line_offset(bytes_len);
4128            let mut _prev_end_offset: usize = 0;
4129            if 2 > max_ordinal {
4130                return Ok(());
4131            }
4132
4133            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4134            // are envelope_size bytes.
4135            let cur_offset: usize = (2 - 1) * envelope_size;
4136
4137            // Zero reserved fields.
4138            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4139
4140            // Safety:
4141            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4142            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4143            //   envelope_size bytes, there is always sufficient room.
4144            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InstanceIdEntry, 1024>, D>(
4145            self.instances.as_ref().map(<fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
4146            encoder, offset + cur_offset, depth
4147        )?;
4148
4149            _prev_end_offset = cur_offset + envelope_size;
4150
4151            Ok(())
4152        }
4153    }
4154
4155    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentIdIndex {
4156        #[inline(always)]
4157        fn new_empty() -> Self {
4158            Self::default()
4159        }
4160
4161        unsafe fn decode(
4162            &mut self,
4163            decoder: &mut fidl::encoding::Decoder<'_, D>,
4164            offset: usize,
4165            mut depth: fidl::encoding::Depth,
4166        ) -> fidl::Result<()> {
4167            decoder.debug_check_bounds::<Self>(offset);
4168            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4169                None => return Err(fidl::Error::NotNullable),
4170                Some(len) => len,
4171            };
4172            // Calling decoder.out_of_line_offset(0) is not allowed.
4173            if len == 0 {
4174                return Ok(());
4175            };
4176            depth.increment()?;
4177            let envelope_size = 8;
4178            let bytes_len = len * envelope_size;
4179            let offset = decoder.out_of_line_offset(bytes_len)?;
4180            // Decode the envelope for each type.
4181            let mut _next_ordinal_to_read = 0;
4182            let mut next_offset = offset;
4183            let end_offset = offset + bytes_len;
4184            _next_ordinal_to_read += 1;
4185            if next_offset >= end_offset {
4186                return Ok(());
4187            }
4188
4189            // Decode unknown envelopes for gaps in ordinals.
4190            while _next_ordinal_to_read < 2 {
4191                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4192                _next_ordinal_to_read += 1;
4193                next_offset += envelope_size;
4194            }
4195
4196            let next_out_of_line = decoder.next_out_of_line();
4197            let handles_before = decoder.remaining_handles();
4198            if let Some((inlined, num_bytes, num_handles)) =
4199                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4200            {
4201                let member_inline_size = <fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4202                if inlined != (member_inline_size <= 4) {
4203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4204                }
4205                let inner_offset;
4206                let mut inner_depth = depth.clone();
4207                if inlined {
4208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4209                    inner_offset = next_offset;
4210                } else {
4211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4212                    inner_depth.increment()?;
4213                }
4214                let val_ref = self.instances.get_or_insert_with(
4215                    || fidl::new_empty!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D),
4216                );
4217                fidl::decode!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
4218                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4219                {
4220                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4221                }
4222                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4223                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4224                }
4225            }
4226
4227            next_offset += envelope_size;
4228
4229            // Decode the remaining unknown envelopes.
4230            while next_offset < end_offset {
4231                _next_ordinal_to_read += 1;
4232                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4233                next_offset += envelope_size;
4234            }
4235
4236            Ok(())
4237        }
4238    }
4239
4240    impl Config {
4241        #[inline(always)]
4242        fn max_ordinal_present(&self) -> u64 {
4243            if let Some(_) = self.inject {
4244                return 23;
4245            }
4246            if let Some(_) = self.trace_provider {
4247                return 22;
4248            }
4249            if let Some(_) = self.health_check {
4250                return 21;
4251            }
4252            if let Some(_) = self.vmex_source {
4253                return 20;
4254            }
4255            if let Some(_) = self.abi_revision_policy {
4256                return 19;
4257            }
4258            if let Some(_) = self.enable_introspection {
4259                return 18;
4260            }
4261            if let Some(_) = self.builtin_capabilities {
4262                return 17;
4263            }
4264            if let Some(_) = self.realm_builder_resolver_and_runner {
4265                return 16;
4266            }
4267            if let Some(_) = self.builtin_boot_resolver {
4268                return 14;
4269            }
4270            if let Some(_) = self.log_all_events {
4271                return 13;
4272            }
4273            if let Some(_) = self.log_destination {
4274                return 12;
4275            }
4276            if let Some(_) = self.component_id_index_path {
4277                return 11;
4278            }
4279            if let Some(_) = self.root_component_url {
4280                return 10;
4281            }
4282            if let Some(_) = self.num_threads {
4283                return 7;
4284            }
4285            if let Some(_) = self.maintain_utc_clock {
4286                return 6;
4287            }
4288            if let Some(_) = self.use_builtin_process_launcher {
4289                return 5;
4290            }
4291            if let Some(_) = self.namespace_capabilities {
4292                return 4;
4293            }
4294            if let Some(_) = self.security_policy {
4295                return 3;
4296            }
4297            if let Some(_) = self.list_children_batch_size {
4298                return 2;
4299            }
4300            if let Some(_) = self.debug {
4301                return 1;
4302            }
4303            0
4304        }
4305    }
4306
4307    impl fidl::encoding::ValueTypeMarker for Config {
4308        type Borrowed<'a> = &'a Self;
4309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4310            value
4311        }
4312    }
4313
4314    unsafe impl fidl::encoding::TypeMarker for Config {
4315        type Owned = Self;
4316
4317        #[inline(always)]
4318        fn inline_align(_context: fidl::encoding::Context) -> usize {
4319            8
4320        }
4321
4322        #[inline(always)]
4323        fn inline_size(_context: fidl::encoding::Context) -> usize {
4324            16
4325        }
4326    }
4327
4328    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
4329        unsafe fn encode(
4330            self,
4331            encoder: &mut fidl::encoding::Encoder<'_, D>,
4332            offset: usize,
4333            mut depth: fidl::encoding::Depth,
4334        ) -> fidl::Result<()> {
4335            encoder.debug_check_bounds::<Config>(offset);
4336            // Vector header
4337            let max_ordinal: u64 = self.max_ordinal_present();
4338            encoder.write_num(max_ordinal, offset);
4339            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4340            // Calling encoder.out_of_line_offset(0) is not allowed.
4341            if max_ordinal == 0 {
4342                return Ok(());
4343            }
4344            depth.increment()?;
4345            let envelope_size = 8;
4346            let bytes_len = max_ordinal as usize * envelope_size;
4347            #[allow(unused_variables)]
4348            let offset = encoder.out_of_line_offset(bytes_len);
4349            let mut _prev_end_offset: usize = 0;
4350            if 1 > max_ordinal {
4351                return Ok(());
4352            }
4353
4354            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4355            // are envelope_size bytes.
4356            let cur_offset: usize = (1 - 1) * envelope_size;
4357
4358            // Zero reserved fields.
4359            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4360
4361            // Safety:
4362            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4363            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4364            //   envelope_size bytes, there is always sufficient room.
4365            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4366                self.debug.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4367                encoder,
4368                offset + cur_offset,
4369                depth,
4370            )?;
4371
4372            _prev_end_offset = cur_offset + envelope_size;
4373            if 2 > max_ordinal {
4374                return Ok(());
4375            }
4376
4377            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4378            // are envelope_size bytes.
4379            let cur_offset: usize = (2 - 1) * envelope_size;
4380
4381            // Zero reserved fields.
4382            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4383
4384            // Safety:
4385            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4386            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4387            //   envelope_size bytes, there is always sufficient room.
4388            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4389                self.list_children_batch_size
4390                    .as_ref()
4391                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4392                encoder,
4393                offset + cur_offset,
4394                depth,
4395            )?;
4396
4397            _prev_end_offset = cur_offset + envelope_size;
4398            if 3 > max_ordinal {
4399                return Ok(());
4400            }
4401
4402            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4403            // are envelope_size bytes.
4404            let cur_offset: usize = (3 - 1) * envelope_size;
4405
4406            // Zero reserved fields.
4407            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4408
4409            // Safety:
4410            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4411            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4412            //   envelope_size bytes, there is always sufficient room.
4413            fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
4414                self.security_policy
4415                    .as_ref()
4416                    .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4417                encoder,
4418                offset + cur_offset,
4419                depth,
4420            )?;
4421
4422            _prev_end_offset = cur_offset + envelope_size;
4423            if 4 > max_ordinal {
4424                return Ok(());
4425            }
4426
4427            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4428            // are envelope_size bytes.
4429            let cur_offset: usize = (4 - 1) * envelope_size;
4430
4431            // Zero reserved fields.
4432            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4433
4434            // Safety:
4435            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4436            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4437            //   envelope_size bytes, there is always sufficient room.
4438            fidl::encoding::encode_in_envelope_optional::<
4439                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4440                D,
4441            >(
4442                self.namespace_capabilities.as_ref().map(
4443                    <fidl::encoding::UnboundedVector<
4444                        fidl_fuchsia_component_decl__common::Capability,
4445                    > as fidl::encoding::ValueTypeMarker>::borrow,
4446                ),
4447                encoder,
4448                offset + cur_offset,
4449                depth,
4450            )?;
4451
4452            _prev_end_offset = cur_offset + envelope_size;
4453            if 5 > max_ordinal {
4454                return Ok(());
4455            }
4456
4457            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4458            // are envelope_size bytes.
4459            let cur_offset: usize = (5 - 1) * envelope_size;
4460
4461            // Zero reserved fields.
4462            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4463
4464            // Safety:
4465            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4466            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4467            //   envelope_size bytes, there is always sufficient room.
4468            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4469                self.use_builtin_process_launcher
4470                    .as_ref()
4471                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4472                encoder,
4473                offset + cur_offset,
4474                depth,
4475            )?;
4476
4477            _prev_end_offset = cur_offset + envelope_size;
4478            if 6 > max_ordinal {
4479                return Ok(());
4480            }
4481
4482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4483            // are envelope_size bytes.
4484            let cur_offset: usize = (6 - 1) * envelope_size;
4485
4486            // Zero reserved fields.
4487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4488
4489            // Safety:
4490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4492            //   envelope_size bytes, there is always sufficient room.
4493            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4494                self.maintain_utc_clock
4495                    .as_ref()
4496                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4497                encoder,
4498                offset + cur_offset,
4499                depth,
4500            )?;
4501
4502            _prev_end_offset = cur_offset + envelope_size;
4503            if 7 > max_ordinal {
4504                return Ok(());
4505            }
4506
4507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4508            // are envelope_size bytes.
4509            let cur_offset: usize = (7 - 1) * envelope_size;
4510
4511            // Zero reserved fields.
4512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4513
4514            // Safety:
4515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4517            //   envelope_size bytes, there is always sufficient room.
4518            fidl::encoding::encode_in_envelope_optional::<u8, D>(
4519                self.num_threads.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4520                encoder,
4521                offset + cur_offset,
4522                depth,
4523            )?;
4524
4525            _prev_end_offset = cur_offset + envelope_size;
4526            if 10 > max_ordinal {
4527                return Ok(());
4528            }
4529
4530            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4531            // are envelope_size bytes.
4532            let cur_offset: usize = (10 - 1) * envelope_size;
4533
4534            // Zero reserved fields.
4535            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4536
4537            // Safety:
4538            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4539            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4540            //   envelope_size bytes, there is always sufficient room.
4541            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4542            self.root_component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4543            encoder, offset + cur_offset, depth
4544        )?;
4545
4546            _prev_end_offset = cur_offset + envelope_size;
4547            if 11 > max_ordinal {
4548                return Ok(());
4549            }
4550
4551            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4552            // are envelope_size bytes.
4553            let cur_offset: usize = (11 - 1) * envelope_size;
4554
4555            // Zero reserved fields.
4556            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4557
4558            // Safety:
4559            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4560            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4561            //   envelope_size bytes, there is always sufficient room.
4562            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
4563            self.component_id_index_path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
4564            encoder, offset + cur_offset, depth
4565        )?;
4566
4567            _prev_end_offset = cur_offset + envelope_size;
4568            if 12 > max_ordinal {
4569                return Ok(());
4570            }
4571
4572            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4573            // are envelope_size bytes.
4574            let cur_offset: usize = (12 - 1) * envelope_size;
4575
4576            // Zero reserved fields.
4577            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4578
4579            // Safety:
4580            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4581            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4582            //   envelope_size bytes, there is always sufficient room.
4583            fidl::encoding::encode_in_envelope_optional::<LogDestination, D>(
4584                self.log_destination
4585                    .as_ref()
4586                    .map(<LogDestination as fidl::encoding::ValueTypeMarker>::borrow),
4587                encoder,
4588                offset + cur_offset,
4589                depth,
4590            )?;
4591
4592            _prev_end_offset = cur_offset + envelope_size;
4593            if 13 > max_ordinal {
4594                return Ok(());
4595            }
4596
4597            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4598            // are envelope_size bytes.
4599            let cur_offset: usize = (13 - 1) * envelope_size;
4600
4601            // Zero reserved fields.
4602            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4603
4604            // Safety:
4605            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4606            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4607            //   envelope_size bytes, there is always sufficient room.
4608            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4609                self.log_all_events.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4610                encoder,
4611                offset + cur_offset,
4612                depth,
4613            )?;
4614
4615            _prev_end_offset = cur_offset + envelope_size;
4616            if 14 > max_ordinal {
4617                return Ok(());
4618            }
4619
4620            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4621            // are envelope_size bytes.
4622            let cur_offset: usize = (14 - 1) * envelope_size;
4623
4624            // Zero reserved fields.
4625            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4626
4627            // Safety:
4628            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4629            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4630            //   envelope_size bytes, there is always sufficient room.
4631            fidl::encoding::encode_in_envelope_optional::<BuiltinBootResolver, D>(
4632                self.builtin_boot_resolver
4633                    .as_ref()
4634                    .map(<BuiltinBootResolver as fidl::encoding::ValueTypeMarker>::borrow),
4635                encoder,
4636                offset + cur_offset,
4637                depth,
4638            )?;
4639
4640            _prev_end_offset = cur_offset + envelope_size;
4641            if 16 > max_ordinal {
4642                return Ok(());
4643            }
4644
4645            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4646            // are envelope_size bytes.
4647            let cur_offset: usize = (16 - 1) * envelope_size;
4648
4649            // Zero reserved fields.
4650            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4651
4652            // Safety:
4653            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4654            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4655            //   envelope_size bytes, there is always sufficient room.
4656            fidl::encoding::encode_in_envelope_optional::<RealmBuilderResolverAndRunner, D>(
4657                self.realm_builder_resolver_and_runner.as_ref().map(
4658                    <RealmBuilderResolverAndRunner as fidl::encoding::ValueTypeMarker>::borrow,
4659                ),
4660                encoder,
4661                offset + cur_offset,
4662                depth,
4663            )?;
4664
4665            _prev_end_offset = cur_offset + envelope_size;
4666            if 17 > max_ordinal {
4667                return Ok(());
4668            }
4669
4670            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4671            // are envelope_size bytes.
4672            let cur_offset: usize = (17 - 1) * envelope_size;
4673
4674            // Zero reserved fields.
4675            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4676
4677            // Safety:
4678            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4679            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4680            //   envelope_size bytes, there is always sufficient room.
4681            fidl::encoding::encode_in_envelope_optional::<
4682                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4683                D,
4684            >(
4685                self.builtin_capabilities.as_ref().map(
4686                    <fidl::encoding::UnboundedVector<
4687                        fidl_fuchsia_component_decl__common::Capability,
4688                    > as fidl::encoding::ValueTypeMarker>::borrow,
4689                ),
4690                encoder,
4691                offset + cur_offset,
4692                depth,
4693            )?;
4694
4695            _prev_end_offset = cur_offset + envelope_size;
4696            if 18 > max_ordinal {
4697                return Ok(());
4698            }
4699
4700            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4701            // are envelope_size bytes.
4702            let cur_offset: usize = (18 - 1) * envelope_size;
4703
4704            // Zero reserved fields.
4705            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4706
4707            // Safety:
4708            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4709            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4710            //   envelope_size bytes, there is always sufficient room.
4711            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4712                self.enable_introspection
4713                    .as_ref()
4714                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4715                encoder,
4716                offset + cur_offset,
4717                depth,
4718            )?;
4719
4720            _prev_end_offset = cur_offset + envelope_size;
4721            if 19 > max_ordinal {
4722                return Ok(());
4723            }
4724
4725            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4726            // are envelope_size bytes.
4727            let cur_offset: usize = (19 - 1) * envelope_size;
4728
4729            // Zero reserved fields.
4730            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4731
4732            // Safety:
4733            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4734            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4735            //   envelope_size bytes, there is always sufficient room.
4736            fidl::encoding::encode_in_envelope_optional::<AbiRevisionPolicy, D>(
4737                self.abi_revision_policy
4738                    .as_ref()
4739                    .map(<AbiRevisionPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4740                encoder,
4741                offset + cur_offset,
4742                depth,
4743            )?;
4744
4745            _prev_end_offset = cur_offset + envelope_size;
4746            if 20 > max_ordinal {
4747                return Ok(());
4748            }
4749
4750            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4751            // are envelope_size bytes.
4752            let cur_offset: usize = (20 - 1) * envelope_size;
4753
4754            // Zero reserved fields.
4755            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4756
4757            // Safety:
4758            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4759            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4760            //   envelope_size bytes, there is always sufficient room.
4761            fidl::encoding::encode_in_envelope_optional::<VmexSource, D>(
4762                self.vmex_source
4763                    .as_ref()
4764                    .map(<VmexSource as fidl::encoding::ValueTypeMarker>::borrow),
4765                encoder,
4766                offset + cur_offset,
4767                depth,
4768            )?;
4769
4770            _prev_end_offset = cur_offset + envelope_size;
4771            if 21 > max_ordinal {
4772                return Ok(());
4773            }
4774
4775            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4776            // are envelope_size bytes.
4777            let cur_offset: usize = (21 - 1) * envelope_size;
4778
4779            // Zero reserved fields.
4780            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4781
4782            // Safety:
4783            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4784            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4785            //   envelope_size bytes, there is always sufficient room.
4786            fidl::encoding::encode_in_envelope_optional::<HealthCheck, D>(
4787                self.health_check
4788                    .as_ref()
4789                    .map(<HealthCheck as fidl::encoding::ValueTypeMarker>::borrow),
4790                encoder,
4791                offset + cur_offset,
4792                depth,
4793            )?;
4794
4795            _prev_end_offset = cur_offset + envelope_size;
4796            if 22 > max_ordinal {
4797                return Ok(());
4798            }
4799
4800            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4801            // are envelope_size bytes.
4802            let cur_offset: usize = (22 - 1) * envelope_size;
4803
4804            // Zero reserved fields.
4805            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4806
4807            // Safety:
4808            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4809            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4810            //   envelope_size bytes, there is always sufficient room.
4811            fidl::encoding::encode_in_envelope_optional::<TraceProvider, D>(
4812                self.trace_provider
4813                    .as_ref()
4814                    .map(<TraceProvider as fidl::encoding::ValueTypeMarker>::borrow),
4815                encoder,
4816                offset + cur_offset,
4817                depth,
4818            )?;
4819
4820            _prev_end_offset = cur_offset + envelope_size;
4821            if 23 > max_ordinal {
4822                return Ok(());
4823            }
4824
4825            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4826            // are envelope_size bytes.
4827            let cur_offset: usize = (23 - 1) * envelope_size;
4828
4829            // Zero reserved fields.
4830            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4831
4832            // Safety:
4833            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4834            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4835            //   envelope_size bytes, there is always sufficient room.
4836            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedBundle>, D>(
4837            self.inject.as_ref().map(<fidl::encoding::UnboundedVector<InjectedBundle> as fidl::encoding::ValueTypeMarker>::borrow),
4838            encoder, offset + cur_offset, depth
4839        )?;
4840
4841            _prev_end_offset = cur_offset + envelope_size;
4842
4843            Ok(())
4844        }
4845    }
4846
4847    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
4848        #[inline(always)]
4849        fn new_empty() -> Self {
4850            Self::default()
4851        }
4852
4853        unsafe fn decode(
4854            &mut self,
4855            decoder: &mut fidl::encoding::Decoder<'_, D>,
4856            offset: usize,
4857            mut depth: fidl::encoding::Depth,
4858        ) -> fidl::Result<()> {
4859            decoder.debug_check_bounds::<Self>(offset);
4860            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4861                None => return Err(fidl::Error::NotNullable),
4862                Some(len) => len,
4863            };
4864            // Calling decoder.out_of_line_offset(0) is not allowed.
4865            if len == 0 {
4866                return Ok(());
4867            };
4868            depth.increment()?;
4869            let envelope_size = 8;
4870            let bytes_len = len * envelope_size;
4871            let offset = decoder.out_of_line_offset(bytes_len)?;
4872            // Decode the envelope for each type.
4873            let mut _next_ordinal_to_read = 0;
4874            let mut next_offset = offset;
4875            let end_offset = offset + bytes_len;
4876            _next_ordinal_to_read += 1;
4877            if next_offset >= end_offset {
4878                return Ok(());
4879            }
4880
4881            // Decode unknown envelopes for gaps in ordinals.
4882            while _next_ordinal_to_read < 1 {
4883                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4884                _next_ordinal_to_read += 1;
4885                next_offset += envelope_size;
4886            }
4887
4888            let next_out_of_line = decoder.next_out_of_line();
4889            let handles_before = decoder.remaining_handles();
4890            if let Some((inlined, num_bytes, num_handles)) =
4891                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4892            {
4893                let member_inline_size =
4894                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4895                if inlined != (member_inline_size <= 4) {
4896                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4897                }
4898                let inner_offset;
4899                let mut inner_depth = depth.clone();
4900                if inlined {
4901                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4902                    inner_offset = next_offset;
4903                } else {
4904                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4905                    inner_depth.increment()?;
4906                }
4907                let val_ref = self.debug.get_or_insert_with(|| fidl::new_empty!(bool, D));
4908                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4909                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4910                {
4911                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4912                }
4913                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4914                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4915                }
4916            }
4917
4918            next_offset += envelope_size;
4919            _next_ordinal_to_read += 1;
4920            if next_offset >= end_offset {
4921                return Ok(());
4922            }
4923
4924            // Decode unknown envelopes for gaps in ordinals.
4925            while _next_ordinal_to_read < 2 {
4926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4927                _next_ordinal_to_read += 1;
4928                next_offset += envelope_size;
4929            }
4930
4931            let next_out_of_line = decoder.next_out_of_line();
4932            let handles_before = decoder.remaining_handles();
4933            if let Some((inlined, num_bytes, num_handles)) =
4934                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4935            {
4936                let member_inline_size =
4937                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4938                if inlined != (member_inline_size <= 4) {
4939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4940                }
4941                let inner_offset;
4942                let mut inner_depth = depth.clone();
4943                if inlined {
4944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4945                    inner_offset = next_offset;
4946                } else {
4947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4948                    inner_depth.increment()?;
4949                }
4950                let val_ref =
4951                    self.list_children_batch_size.get_or_insert_with(|| fidl::new_empty!(u32, D));
4952                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4953                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4954                {
4955                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4956                }
4957                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4958                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4959                }
4960            }
4961
4962            next_offset += envelope_size;
4963            _next_ordinal_to_read += 1;
4964            if next_offset >= end_offset {
4965                return Ok(());
4966            }
4967
4968            // Decode unknown envelopes for gaps in ordinals.
4969            while _next_ordinal_to_read < 3 {
4970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4971                _next_ordinal_to_read += 1;
4972                next_offset += envelope_size;
4973            }
4974
4975            let next_out_of_line = decoder.next_out_of_line();
4976            let handles_before = decoder.remaining_handles();
4977            if let Some((inlined, num_bytes, num_handles)) =
4978                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4979            {
4980                let member_inline_size =
4981                    <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4982                if inlined != (member_inline_size <= 4) {
4983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4984                }
4985                let inner_offset;
4986                let mut inner_depth = depth.clone();
4987                if inlined {
4988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4989                    inner_offset = next_offset;
4990                } else {
4991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4992                    inner_depth.increment()?;
4993                }
4994                let val_ref =
4995                    self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
4996                fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
4997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4998                {
4999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5000                }
5001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5003                }
5004            }
5005
5006            next_offset += envelope_size;
5007            _next_ordinal_to_read += 1;
5008            if next_offset >= end_offset {
5009                return Ok(());
5010            }
5011
5012            // Decode unknown envelopes for gaps in ordinals.
5013            while _next_ordinal_to_read < 4 {
5014                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5015                _next_ordinal_to_read += 1;
5016                next_offset += envelope_size;
5017            }
5018
5019            let next_out_of_line = decoder.next_out_of_line();
5020            let handles_before = decoder.remaining_handles();
5021            if let Some((inlined, num_bytes, num_handles)) =
5022                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5023            {
5024                let member_inline_size = <fidl::encoding::UnboundedVector<
5025                    fidl_fuchsia_component_decl__common::Capability,
5026                > as fidl::encoding::TypeMarker>::inline_size(
5027                    decoder.context
5028                );
5029                if inlined != (member_inline_size <= 4) {
5030                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5031                }
5032                let inner_offset;
5033                let mut inner_depth = depth.clone();
5034                if inlined {
5035                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5036                    inner_offset = next_offset;
5037                } else {
5038                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5039                    inner_depth.increment()?;
5040                }
5041                let val_ref = self.namespace_capabilities.get_or_insert_with(|| {
5042                    fidl::new_empty!(
5043                        fidl::encoding::UnboundedVector<
5044                            fidl_fuchsia_component_decl__common::Capability,
5045                        >,
5046                        D
5047                    )
5048                });
5049                fidl::decode!(
5050                    fidl::encoding::UnboundedVector<
5051                        fidl_fuchsia_component_decl__common::Capability,
5052                    >,
5053                    D,
5054                    val_ref,
5055                    decoder,
5056                    inner_offset,
5057                    inner_depth
5058                )?;
5059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5060                {
5061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5062                }
5063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5065                }
5066            }
5067
5068            next_offset += envelope_size;
5069            _next_ordinal_to_read += 1;
5070            if next_offset >= end_offset {
5071                return Ok(());
5072            }
5073
5074            // Decode unknown envelopes for gaps in ordinals.
5075            while _next_ordinal_to_read < 5 {
5076                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5077                _next_ordinal_to_read += 1;
5078                next_offset += envelope_size;
5079            }
5080
5081            let next_out_of_line = decoder.next_out_of_line();
5082            let handles_before = decoder.remaining_handles();
5083            if let Some((inlined, num_bytes, num_handles)) =
5084                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5085            {
5086                let member_inline_size =
5087                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5088                if inlined != (member_inline_size <= 4) {
5089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5090                }
5091                let inner_offset;
5092                let mut inner_depth = depth.clone();
5093                if inlined {
5094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5095                    inner_offset = next_offset;
5096                } else {
5097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5098                    inner_depth.increment()?;
5099                }
5100                let val_ref = self
5101                    .use_builtin_process_launcher
5102                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
5103                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5105                {
5106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5107                }
5108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5110                }
5111            }
5112
5113            next_offset += envelope_size;
5114            _next_ordinal_to_read += 1;
5115            if next_offset >= end_offset {
5116                return Ok(());
5117            }
5118
5119            // Decode unknown envelopes for gaps in ordinals.
5120            while _next_ordinal_to_read < 6 {
5121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5122                _next_ordinal_to_read += 1;
5123                next_offset += envelope_size;
5124            }
5125
5126            let next_out_of_line = decoder.next_out_of_line();
5127            let handles_before = decoder.remaining_handles();
5128            if let Some((inlined, num_bytes, num_handles)) =
5129                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5130            {
5131                let member_inline_size =
5132                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5133                if inlined != (member_inline_size <= 4) {
5134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5135                }
5136                let inner_offset;
5137                let mut inner_depth = depth.clone();
5138                if inlined {
5139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5140                    inner_offset = next_offset;
5141                } else {
5142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5143                    inner_depth.increment()?;
5144                }
5145                let val_ref =
5146                    self.maintain_utc_clock.get_or_insert_with(|| fidl::new_empty!(bool, D));
5147                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5148                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5149                {
5150                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5151                }
5152                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5153                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5154                }
5155            }
5156
5157            next_offset += envelope_size;
5158            _next_ordinal_to_read += 1;
5159            if next_offset >= end_offset {
5160                return Ok(());
5161            }
5162
5163            // Decode unknown envelopes for gaps in ordinals.
5164            while _next_ordinal_to_read < 7 {
5165                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5166                _next_ordinal_to_read += 1;
5167                next_offset += envelope_size;
5168            }
5169
5170            let next_out_of_line = decoder.next_out_of_line();
5171            let handles_before = decoder.remaining_handles();
5172            if let Some((inlined, num_bytes, num_handles)) =
5173                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5174            {
5175                let member_inline_size =
5176                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5177                if inlined != (member_inline_size <= 4) {
5178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5179                }
5180                let inner_offset;
5181                let mut inner_depth = depth.clone();
5182                if inlined {
5183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5184                    inner_offset = next_offset;
5185                } else {
5186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5187                    inner_depth.increment()?;
5188                }
5189                let val_ref = self.num_threads.get_or_insert_with(|| fidl::new_empty!(u8, D));
5190                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5191                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5192                {
5193                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5194                }
5195                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5196                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5197                }
5198            }
5199
5200            next_offset += envelope_size;
5201            _next_ordinal_to_read += 1;
5202            if next_offset >= end_offset {
5203                return Ok(());
5204            }
5205
5206            // Decode unknown envelopes for gaps in ordinals.
5207            while _next_ordinal_to_read < 10 {
5208                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5209                _next_ordinal_to_read += 1;
5210                next_offset += envelope_size;
5211            }
5212
5213            let next_out_of_line = decoder.next_out_of_line();
5214            let handles_before = decoder.remaining_handles();
5215            if let Some((inlined, num_bytes, num_handles)) =
5216                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5217            {
5218                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5219                if inlined != (member_inline_size <= 4) {
5220                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5221                }
5222                let inner_offset;
5223                let mut inner_depth = depth.clone();
5224                if inlined {
5225                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5226                    inner_offset = next_offset;
5227                } else {
5228                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5229                    inner_depth.increment()?;
5230                }
5231                let val_ref = self.root_component_url.get_or_insert_with(|| {
5232                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5233                });
5234                fidl::decode!(
5235                    fidl::encoding::BoundedString<4096>,
5236                    D,
5237                    val_ref,
5238                    decoder,
5239                    inner_offset,
5240                    inner_depth
5241                )?;
5242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5243                {
5244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5245                }
5246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5248                }
5249            }
5250
5251            next_offset += envelope_size;
5252            _next_ordinal_to_read += 1;
5253            if next_offset >= end_offset {
5254                return Ok(());
5255            }
5256
5257            // Decode unknown envelopes for gaps in ordinals.
5258            while _next_ordinal_to_read < 11 {
5259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5260                _next_ordinal_to_read += 1;
5261                next_offset += envelope_size;
5262            }
5263
5264            let next_out_of_line = decoder.next_out_of_line();
5265            let handles_before = decoder.remaining_handles();
5266            if let Some((inlined, num_bytes, num_handles)) =
5267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5268            {
5269                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5270                if inlined != (member_inline_size <= 4) {
5271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5272                }
5273                let inner_offset;
5274                let mut inner_depth = depth.clone();
5275                if inlined {
5276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5277                    inner_offset = next_offset;
5278                } else {
5279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5280                    inner_depth.increment()?;
5281                }
5282                let val_ref = self.component_id_index_path.get_or_insert_with(|| {
5283                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
5284                });
5285                fidl::decode!(
5286                    fidl::encoding::BoundedString<4095>,
5287                    D,
5288                    val_ref,
5289                    decoder,
5290                    inner_offset,
5291                    inner_depth
5292                )?;
5293                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5294                {
5295                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5296                }
5297                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5298                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5299                }
5300            }
5301
5302            next_offset += envelope_size;
5303            _next_ordinal_to_read += 1;
5304            if next_offset >= end_offset {
5305                return Ok(());
5306            }
5307
5308            // Decode unknown envelopes for gaps in ordinals.
5309            while _next_ordinal_to_read < 12 {
5310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5311                _next_ordinal_to_read += 1;
5312                next_offset += envelope_size;
5313            }
5314
5315            let next_out_of_line = decoder.next_out_of_line();
5316            let handles_before = decoder.remaining_handles();
5317            if let Some((inlined, num_bytes, num_handles)) =
5318                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5319            {
5320                let member_inline_size =
5321                    <LogDestination as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5322                if inlined != (member_inline_size <= 4) {
5323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5324                }
5325                let inner_offset;
5326                let mut inner_depth = depth.clone();
5327                if inlined {
5328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5329                    inner_offset = next_offset;
5330                } else {
5331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5332                    inner_depth.increment()?;
5333                }
5334                let val_ref =
5335                    self.log_destination.get_or_insert_with(|| fidl::new_empty!(LogDestination, D));
5336                fidl::decode!(LogDestination, D, val_ref, decoder, inner_offset, inner_depth)?;
5337                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5338                {
5339                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5340                }
5341                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5342                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5343                }
5344            }
5345
5346            next_offset += envelope_size;
5347            _next_ordinal_to_read += 1;
5348            if next_offset >= end_offset {
5349                return Ok(());
5350            }
5351
5352            // Decode unknown envelopes for gaps in ordinals.
5353            while _next_ordinal_to_read < 13 {
5354                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5355                _next_ordinal_to_read += 1;
5356                next_offset += envelope_size;
5357            }
5358
5359            let next_out_of_line = decoder.next_out_of_line();
5360            let handles_before = decoder.remaining_handles();
5361            if let Some((inlined, num_bytes, num_handles)) =
5362                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5363            {
5364                let member_inline_size =
5365                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5366                if inlined != (member_inline_size <= 4) {
5367                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5368                }
5369                let inner_offset;
5370                let mut inner_depth = depth.clone();
5371                if inlined {
5372                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5373                    inner_offset = next_offset;
5374                } else {
5375                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5376                    inner_depth.increment()?;
5377                }
5378                let val_ref = self.log_all_events.get_or_insert_with(|| fidl::new_empty!(bool, D));
5379                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5380                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5381                {
5382                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5383                }
5384                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5385                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5386                }
5387            }
5388
5389            next_offset += envelope_size;
5390            _next_ordinal_to_read += 1;
5391            if next_offset >= end_offset {
5392                return Ok(());
5393            }
5394
5395            // Decode unknown envelopes for gaps in ordinals.
5396            while _next_ordinal_to_read < 14 {
5397                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5398                _next_ordinal_to_read += 1;
5399                next_offset += envelope_size;
5400            }
5401
5402            let next_out_of_line = decoder.next_out_of_line();
5403            let handles_before = decoder.remaining_handles();
5404            if let Some((inlined, num_bytes, num_handles)) =
5405                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5406            {
5407                let member_inline_size =
5408                    <BuiltinBootResolver as fidl::encoding::TypeMarker>::inline_size(
5409                        decoder.context,
5410                    );
5411                if inlined != (member_inline_size <= 4) {
5412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5413                }
5414                let inner_offset;
5415                let mut inner_depth = depth.clone();
5416                if inlined {
5417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5418                    inner_offset = next_offset;
5419                } else {
5420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5421                    inner_depth.increment()?;
5422                }
5423                let val_ref = self
5424                    .builtin_boot_resolver
5425                    .get_or_insert_with(|| fidl::new_empty!(BuiltinBootResolver, D));
5426                fidl::decode!(BuiltinBootResolver, D, val_ref, decoder, inner_offset, inner_depth)?;
5427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5428                {
5429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5430                }
5431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5433                }
5434            }
5435
5436            next_offset += envelope_size;
5437            _next_ordinal_to_read += 1;
5438            if next_offset >= end_offset {
5439                return Ok(());
5440            }
5441
5442            // Decode unknown envelopes for gaps in ordinals.
5443            while _next_ordinal_to_read < 16 {
5444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5445                _next_ordinal_to_read += 1;
5446                next_offset += envelope_size;
5447            }
5448
5449            let next_out_of_line = decoder.next_out_of_line();
5450            let handles_before = decoder.remaining_handles();
5451            if let Some((inlined, num_bytes, num_handles)) =
5452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5453            {
5454                let member_inline_size =
5455                    <RealmBuilderResolverAndRunner as fidl::encoding::TypeMarker>::inline_size(
5456                        decoder.context,
5457                    );
5458                if inlined != (member_inline_size <= 4) {
5459                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5460                }
5461                let inner_offset;
5462                let mut inner_depth = depth.clone();
5463                if inlined {
5464                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5465                    inner_offset = next_offset;
5466                } else {
5467                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5468                    inner_depth.increment()?;
5469                }
5470                let val_ref = self
5471                    .realm_builder_resolver_and_runner
5472                    .get_or_insert_with(|| fidl::new_empty!(RealmBuilderResolverAndRunner, D));
5473                fidl::decode!(
5474                    RealmBuilderResolverAndRunner,
5475                    D,
5476                    val_ref,
5477                    decoder,
5478                    inner_offset,
5479                    inner_depth
5480                )?;
5481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5482                {
5483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5484                }
5485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5487                }
5488            }
5489
5490            next_offset += envelope_size;
5491            _next_ordinal_to_read += 1;
5492            if next_offset >= end_offset {
5493                return Ok(());
5494            }
5495
5496            // Decode unknown envelopes for gaps in ordinals.
5497            while _next_ordinal_to_read < 17 {
5498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5499                _next_ordinal_to_read += 1;
5500                next_offset += envelope_size;
5501            }
5502
5503            let next_out_of_line = decoder.next_out_of_line();
5504            let handles_before = decoder.remaining_handles();
5505            if let Some((inlined, num_bytes, num_handles)) =
5506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5507            {
5508                let member_inline_size = <fidl::encoding::UnboundedVector<
5509                    fidl_fuchsia_component_decl__common::Capability,
5510                > as fidl::encoding::TypeMarker>::inline_size(
5511                    decoder.context
5512                );
5513                if inlined != (member_inline_size <= 4) {
5514                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5515                }
5516                let inner_offset;
5517                let mut inner_depth = depth.clone();
5518                if inlined {
5519                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5520                    inner_offset = next_offset;
5521                } else {
5522                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5523                    inner_depth.increment()?;
5524                }
5525                let val_ref = self.builtin_capabilities.get_or_insert_with(|| {
5526                    fidl::new_empty!(
5527                        fidl::encoding::UnboundedVector<
5528                            fidl_fuchsia_component_decl__common::Capability,
5529                        >,
5530                        D
5531                    )
5532                });
5533                fidl::decode!(
5534                    fidl::encoding::UnboundedVector<
5535                        fidl_fuchsia_component_decl__common::Capability,
5536                    >,
5537                    D,
5538                    val_ref,
5539                    decoder,
5540                    inner_offset,
5541                    inner_depth
5542                )?;
5543                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5544                {
5545                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5546                }
5547                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5548                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5549                }
5550            }
5551
5552            next_offset += envelope_size;
5553            _next_ordinal_to_read += 1;
5554            if next_offset >= end_offset {
5555                return Ok(());
5556            }
5557
5558            // Decode unknown envelopes for gaps in ordinals.
5559            while _next_ordinal_to_read < 18 {
5560                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5561                _next_ordinal_to_read += 1;
5562                next_offset += envelope_size;
5563            }
5564
5565            let next_out_of_line = decoder.next_out_of_line();
5566            let handles_before = decoder.remaining_handles();
5567            if let Some((inlined, num_bytes, num_handles)) =
5568                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5569            {
5570                let member_inline_size =
5571                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5572                if inlined != (member_inline_size <= 4) {
5573                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5574                }
5575                let inner_offset;
5576                let mut inner_depth = depth.clone();
5577                if inlined {
5578                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5579                    inner_offset = next_offset;
5580                } else {
5581                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5582                    inner_depth.increment()?;
5583                }
5584                let val_ref =
5585                    self.enable_introspection.get_or_insert_with(|| fidl::new_empty!(bool, D));
5586                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5587                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5588                {
5589                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5590                }
5591                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5592                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5593                }
5594            }
5595
5596            next_offset += envelope_size;
5597            _next_ordinal_to_read += 1;
5598            if next_offset >= end_offset {
5599                return Ok(());
5600            }
5601
5602            // Decode unknown envelopes for gaps in ordinals.
5603            while _next_ordinal_to_read < 19 {
5604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5605                _next_ordinal_to_read += 1;
5606                next_offset += envelope_size;
5607            }
5608
5609            let next_out_of_line = decoder.next_out_of_line();
5610            let handles_before = decoder.remaining_handles();
5611            if let Some((inlined, num_bytes, num_handles)) =
5612                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5613            {
5614                let member_inline_size =
5615                    <AbiRevisionPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5616                if inlined != (member_inline_size <= 4) {
5617                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5618                }
5619                let inner_offset;
5620                let mut inner_depth = depth.clone();
5621                if inlined {
5622                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5623                    inner_offset = next_offset;
5624                } else {
5625                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5626                    inner_depth.increment()?;
5627                }
5628                let val_ref = self
5629                    .abi_revision_policy
5630                    .get_or_insert_with(|| fidl::new_empty!(AbiRevisionPolicy, D));
5631                fidl::decode!(AbiRevisionPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
5632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5633                {
5634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5635                }
5636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5638                }
5639            }
5640
5641            next_offset += envelope_size;
5642            _next_ordinal_to_read += 1;
5643            if next_offset >= end_offset {
5644                return Ok(());
5645            }
5646
5647            // Decode unknown envelopes for gaps in ordinals.
5648            while _next_ordinal_to_read < 20 {
5649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5650                _next_ordinal_to_read += 1;
5651                next_offset += envelope_size;
5652            }
5653
5654            let next_out_of_line = decoder.next_out_of_line();
5655            let handles_before = decoder.remaining_handles();
5656            if let Some((inlined, num_bytes, num_handles)) =
5657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5658            {
5659                let member_inline_size =
5660                    <VmexSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5661                if inlined != (member_inline_size <= 4) {
5662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5663                }
5664                let inner_offset;
5665                let mut inner_depth = depth.clone();
5666                if inlined {
5667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5668                    inner_offset = next_offset;
5669                } else {
5670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5671                    inner_depth.increment()?;
5672                }
5673                let val_ref =
5674                    self.vmex_source.get_or_insert_with(|| fidl::new_empty!(VmexSource, D));
5675                fidl::decode!(VmexSource, D, val_ref, decoder, inner_offset, inner_depth)?;
5676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5677                {
5678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5679                }
5680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5682                }
5683            }
5684
5685            next_offset += envelope_size;
5686            _next_ordinal_to_read += 1;
5687            if next_offset >= end_offset {
5688                return Ok(());
5689            }
5690
5691            // Decode unknown envelopes for gaps in ordinals.
5692            while _next_ordinal_to_read < 21 {
5693                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5694                _next_ordinal_to_read += 1;
5695                next_offset += envelope_size;
5696            }
5697
5698            let next_out_of_line = decoder.next_out_of_line();
5699            let handles_before = decoder.remaining_handles();
5700            if let Some((inlined, num_bytes, num_handles)) =
5701                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5702            {
5703                let member_inline_size =
5704                    <HealthCheck as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5705                if inlined != (member_inline_size <= 4) {
5706                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5707                }
5708                let inner_offset;
5709                let mut inner_depth = depth.clone();
5710                if inlined {
5711                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5712                    inner_offset = next_offset;
5713                } else {
5714                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5715                    inner_depth.increment()?;
5716                }
5717                let val_ref =
5718                    self.health_check.get_or_insert_with(|| fidl::new_empty!(HealthCheck, D));
5719                fidl::decode!(HealthCheck, D, val_ref, decoder, inner_offset, inner_depth)?;
5720                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5721                {
5722                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5723                }
5724                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5725                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5726                }
5727            }
5728
5729            next_offset += envelope_size;
5730            _next_ordinal_to_read += 1;
5731            if next_offset >= end_offset {
5732                return Ok(());
5733            }
5734
5735            // Decode unknown envelopes for gaps in ordinals.
5736            while _next_ordinal_to_read < 22 {
5737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5738                _next_ordinal_to_read += 1;
5739                next_offset += envelope_size;
5740            }
5741
5742            let next_out_of_line = decoder.next_out_of_line();
5743            let handles_before = decoder.remaining_handles();
5744            if let Some((inlined, num_bytes, num_handles)) =
5745                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5746            {
5747                let member_inline_size =
5748                    <TraceProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5749                if inlined != (member_inline_size <= 4) {
5750                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5751                }
5752                let inner_offset;
5753                let mut inner_depth = depth.clone();
5754                if inlined {
5755                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5756                    inner_offset = next_offset;
5757                } else {
5758                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5759                    inner_depth.increment()?;
5760                }
5761                let val_ref =
5762                    self.trace_provider.get_or_insert_with(|| fidl::new_empty!(TraceProvider, D));
5763                fidl::decode!(TraceProvider, D, val_ref, decoder, inner_offset, inner_depth)?;
5764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5765                {
5766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5767                }
5768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5770                }
5771            }
5772
5773            next_offset += envelope_size;
5774            _next_ordinal_to_read += 1;
5775            if next_offset >= end_offset {
5776                return Ok(());
5777            }
5778
5779            // Decode unknown envelopes for gaps in ordinals.
5780            while _next_ordinal_to_read < 23 {
5781                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5782                _next_ordinal_to_read += 1;
5783                next_offset += envelope_size;
5784            }
5785
5786            let next_out_of_line = decoder.next_out_of_line();
5787            let handles_before = decoder.remaining_handles();
5788            if let Some((inlined, num_bytes, num_handles)) =
5789                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5790            {
5791                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedBundle> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5792                if inlined != (member_inline_size <= 4) {
5793                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5794                }
5795                let inner_offset;
5796                let mut inner_depth = depth.clone();
5797                if inlined {
5798                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5799                    inner_offset = next_offset;
5800                } else {
5801                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5802                    inner_depth.increment()?;
5803                }
5804                let val_ref = self.inject.get_or_insert_with(|| {
5805                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedBundle>, D)
5806                });
5807                fidl::decode!(
5808                    fidl::encoding::UnboundedVector<InjectedBundle>,
5809                    D,
5810                    val_ref,
5811                    decoder,
5812                    inner_offset,
5813                    inner_depth
5814                )?;
5815                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5816                {
5817                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5818                }
5819                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5820                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5821                }
5822            }
5823
5824            next_offset += envelope_size;
5825
5826            // Decode the remaining unknown envelopes.
5827            while next_offset < end_offset {
5828                _next_ordinal_to_read += 1;
5829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5830                next_offset += envelope_size;
5831            }
5832
5833            Ok(())
5834        }
5835    }
5836
5837    impl DebugRegistrationAllowlistEntry {
5838        #[inline(always)]
5839        fn max_ordinal_present(&self) -> u64 {
5840            if let Some(_) = self.environment_name {
5841                return 4;
5842            }
5843            if let Some(_) = self.moniker {
5844                return 3;
5845            }
5846            if let Some(_) = self.debug {
5847                return 2;
5848            }
5849            if let Some(_) = self.name {
5850                return 1;
5851            }
5852            0
5853        }
5854    }
5855
5856    impl fidl::encoding::ValueTypeMarker for DebugRegistrationAllowlistEntry {
5857        type Borrowed<'a> = &'a Self;
5858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5859            value
5860        }
5861    }
5862
5863    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationAllowlistEntry {
5864        type Owned = Self;
5865
5866        #[inline(always)]
5867        fn inline_align(_context: fidl::encoding::Context) -> usize {
5868            8
5869        }
5870
5871        #[inline(always)]
5872        fn inline_size(_context: fidl::encoding::Context) -> usize {
5873            16
5874        }
5875    }
5876
5877    unsafe impl<D: fidl::encoding::ResourceDialect>
5878        fidl::encoding::Encode<DebugRegistrationAllowlistEntry, D>
5879        for &DebugRegistrationAllowlistEntry
5880    {
5881        unsafe fn encode(
5882            self,
5883            encoder: &mut fidl::encoding::Encoder<'_, D>,
5884            offset: usize,
5885            mut depth: fidl::encoding::Depth,
5886        ) -> fidl::Result<()> {
5887            encoder.debug_check_bounds::<DebugRegistrationAllowlistEntry>(offset);
5888            // Vector header
5889            let max_ordinal: u64 = self.max_ordinal_present();
5890            encoder.write_num(max_ordinal, offset);
5891            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5892            // Calling encoder.out_of_line_offset(0) is not allowed.
5893            if max_ordinal == 0 {
5894                return Ok(());
5895            }
5896            depth.increment()?;
5897            let envelope_size = 8;
5898            let bytes_len = max_ordinal as usize * envelope_size;
5899            #[allow(unused_variables)]
5900            let offset = encoder.out_of_line_offset(bytes_len);
5901            let mut _prev_end_offset: usize = 0;
5902            if 1 > max_ordinal {
5903                return Ok(());
5904            }
5905
5906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5907            // are envelope_size bytes.
5908            let cur_offset: usize = (1 - 1) * envelope_size;
5909
5910            // Zero reserved fields.
5911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5912
5913            // Safety:
5914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5916            //   envelope_size bytes, there is always sufficient room.
5917            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5918                self.name.as_ref().map(
5919                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5920                ),
5921                encoder,
5922                offset + cur_offset,
5923                depth,
5924            )?;
5925
5926            _prev_end_offset = cur_offset + envelope_size;
5927            if 2 > max_ordinal {
5928                return Ok(());
5929            }
5930
5931            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5932            // are envelope_size bytes.
5933            let cur_offset: usize = (2 - 1) * envelope_size;
5934
5935            // Zero reserved fields.
5936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5937
5938            // Safety:
5939            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5940            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5941            //   envelope_size bytes, there is always sufficient room.
5942            fidl::encoding::encode_in_envelope_optional::<AllowlistedDebugRegistration, D>(
5943                self.debug
5944                    .as_ref()
5945                    .map(<AllowlistedDebugRegistration as fidl::encoding::ValueTypeMarker>::borrow),
5946                encoder,
5947                offset + cur_offset,
5948                depth,
5949            )?;
5950
5951            _prev_end_offset = cur_offset + envelope_size;
5952            if 3 > max_ordinal {
5953                return Ok(());
5954            }
5955
5956            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5957            // are envelope_size bytes.
5958            let cur_offset: usize = (3 - 1) * envelope_size;
5959
5960            // Zero reserved fields.
5961            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5962
5963            // Safety:
5964            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5965            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5966            //   envelope_size bytes, there is always sufficient room.
5967            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5968            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5969            encoder, offset + cur_offset, depth
5970        )?;
5971
5972            _prev_end_offset = cur_offset + envelope_size;
5973            if 4 > max_ordinal {
5974                return Ok(());
5975            }
5976
5977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5978            // are envelope_size bytes.
5979            let cur_offset: usize = (4 - 1) * envelope_size;
5980
5981            // Zero reserved fields.
5982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5983
5984            // Safety:
5985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5987            //   envelope_size bytes, there is always sufficient room.
5988            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5989                self.environment_name.as_ref().map(
5990                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5991                ),
5992                encoder,
5993                offset + cur_offset,
5994                depth,
5995            )?;
5996
5997            _prev_end_offset = cur_offset + envelope_size;
5998
5999            Ok(())
6000        }
6001    }
6002
6003    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6004        for DebugRegistrationAllowlistEntry
6005    {
6006        #[inline(always)]
6007        fn new_empty() -> Self {
6008            Self::default()
6009        }
6010
6011        unsafe fn decode(
6012            &mut self,
6013            decoder: &mut fidl::encoding::Decoder<'_, D>,
6014            offset: usize,
6015            mut depth: fidl::encoding::Depth,
6016        ) -> fidl::Result<()> {
6017            decoder.debug_check_bounds::<Self>(offset);
6018            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6019                None => return Err(fidl::Error::NotNullable),
6020                Some(len) => len,
6021            };
6022            // Calling decoder.out_of_line_offset(0) is not allowed.
6023            if len == 0 {
6024                return Ok(());
6025            };
6026            depth.increment()?;
6027            let envelope_size = 8;
6028            let bytes_len = len * envelope_size;
6029            let offset = decoder.out_of_line_offset(bytes_len)?;
6030            // Decode the envelope for each type.
6031            let mut _next_ordinal_to_read = 0;
6032            let mut next_offset = offset;
6033            let end_offset = offset + bytes_len;
6034            _next_ordinal_to_read += 1;
6035            if next_offset >= end_offset {
6036                return Ok(());
6037            }
6038
6039            // Decode unknown envelopes for gaps in ordinals.
6040            while _next_ordinal_to_read < 1 {
6041                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6042                _next_ordinal_to_read += 1;
6043                next_offset += envelope_size;
6044            }
6045
6046            let next_out_of_line = decoder.next_out_of_line();
6047            let handles_before = decoder.remaining_handles();
6048            if let Some((inlined, num_bytes, num_handles)) =
6049                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6050            {
6051                let member_inline_size =
6052                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6053                        decoder.context,
6054                    );
6055                if inlined != (member_inline_size <= 4) {
6056                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6057                }
6058                let inner_offset;
6059                let mut inner_depth = depth.clone();
6060                if inlined {
6061                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6062                    inner_offset = next_offset;
6063                } else {
6064                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6065                    inner_depth.increment()?;
6066                }
6067                let val_ref = self
6068                    .name
6069                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6070                fidl::decode!(
6071                    fidl::encoding::BoundedString<255>,
6072                    D,
6073                    val_ref,
6074                    decoder,
6075                    inner_offset,
6076                    inner_depth
6077                )?;
6078                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6079                {
6080                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6081                }
6082                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6083                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6084                }
6085            }
6086
6087            next_offset += envelope_size;
6088            _next_ordinal_to_read += 1;
6089            if next_offset >= end_offset {
6090                return Ok(());
6091            }
6092
6093            // Decode unknown envelopes for gaps in ordinals.
6094            while _next_ordinal_to_read < 2 {
6095                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6096                _next_ordinal_to_read += 1;
6097                next_offset += envelope_size;
6098            }
6099
6100            let next_out_of_line = decoder.next_out_of_line();
6101            let handles_before = decoder.remaining_handles();
6102            if let Some((inlined, num_bytes, num_handles)) =
6103                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6104            {
6105                let member_inline_size =
6106                    <AllowlistedDebugRegistration as fidl::encoding::TypeMarker>::inline_size(
6107                        decoder.context,
6108                    );
6109                if inlined != (member_inline_size <= 4) {
6110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6111                }
6112                let inner_offset;
6113                let mut inner_depth = depth.clone();
6114                if inlined {
6115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6116                    inner_offset = next_offset;
6117                } else {
6118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6119                    inner_depth.increment()?;
6120                }
6121                let val_ref = self
6122                    .debug
6123                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedDebugRegistration, D));
6124                fidl::decode!(
6125                    AllowlistedDebugRegistration,
6126                    D,
6127                    val_ref,
6128                    decoder,
6129                    inner_offset,
6130                    inner_depth
6131                )?;
6132                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6133                {
6134                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6135                }
6136                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6137                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6138                }
6139            }
6140
6141            next_offset += envelope_size;
6142            _next_ordinal_to_read += 1;
6143            if next_offset >= end_offset {
6144                return Ok(());
6145            }
6146
6147            // Decode unknown envelopes for gaps in ordinals.
6148            while _next_ordinal_to_read < 3 {
6149                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6150                _next_ordinal_to_read += 1;
6151                next_offset += envelope_size;
6152            }
6153
6154            let next_out_of_line = decoder.next_out_of_line();
6155            let handles_before = decoder.remaining_handles();
6156            if let Some((inlined, num_bytes, num_handles)) =
6157                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6158            {
6159                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6160                if inlined != (member_inline_size <= 4) {
6161                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6162                }
6163                let inner_offset;
6164                let mut inner_depth = depth.clone();
6165                if inlined {
6166                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6167                    inner_offset = next_offset;
6168                } else {
6169                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6170                    inner_depth.increment()?;
6171                }
6172                let val_ref = self.moniker.get_or_insert_with(|| {
6173                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6174                });
6175                fidl::decode!(
6176                    fidl::encoding::BoundedString<4096>,
6177                    D,
6178                    val_ref,
6179                    decoder,
6180                    inner_offset,
6181                    inner_depth
6182                )?;
6183                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6184                {
6185                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6186                }
6187                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6188                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6189                }
6190            }
6191
6192            next_offset += envelope_size;
6193            _next_ordinal_to_read += 1;
6194            if next_offset >= end_offset {
6195                return Ok(());
6196            }
6197
6198            // Decode unknown envelopes for gaps in ordinals.
6199            while _next_ordinal_to_read < 4 {
6200                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6201                _next_ordinal_to_read += 1;
6202                next_offset += envelope_size;
6203            }
6204
6205            let next_out_of_line = decoder.next_out_of_line();
6206            let handles_before = decoder.remaining_handles();
6207            if let Some((inlined, num_bytes, num_handles)) =
6208                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6209            {
6210                let member_inline_size =
6211                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6212                        decoder.context,
6213                    );
6214                if inlined != (member_inline_size <= 4) {
6215                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6216                }
6217                let inner_offset;
6218                let mut inner_depth = depth.clone();
6219                if inlined {
6220                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6221                    inner_offset = next_offset;
6222                } else {
6223                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6224                    inner_depth.increment()?;
6225                }
6226                let val_ref = self
6227                    .environment_name
6228                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6229                fidl::decode!(
6230                    fidl::encoding::BoundedString<255>,
6231                    D,
6232                    val_ref,
6233                    decoder,
6234                    inner_offset,
6235                    inner_depth
6236                )?;
6237                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6238                {
6239                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6240                }
6241                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6242                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6243                }
6244            }
6245
6246            next_offset += envelope_size;
6247
6248            // Decode the remaining unknown envelopes.
6249            while next_offset < end_offset {
6250                _next_ordinal_to_read += 1;
6251                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6252                next_offset += envelope_size;
6253            }
6254
6255            Ok(())
6256        }
6257    }
6258
6259    impl DebugRegistrationPolicyAllowlists {
6260        #[inline(always)]
6261        fn max_ordinal_present(&self) -> u64 {
6262            if let Some(_) = self.allowlist {
6263                return 1;
6264            }
6265            0
6266        }
6267    }
6268
6269    impl fidl::encoding::ValueTypeMarker for DebugRegistrationPolicyAllowlists {
6270        type Borrowed<'a> = &'a Self;
6271        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6272            value
6273        }
6274    }
6275
6276    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationPolicyAllowlists {
6277        type Owned = Self;
6278
6279        #[inline(always)]
6280        fn inline_align(_context: fidl::encoding::Context) -> usize {
6281            8
6282        }
6283
6284        #[inline(always)]
6285        fn inline_size(_context: fidl::encoding::Context) -> usize {
6286            16
6287        }
6288    }
6289
6290    unsafe impl<D: fidl::encoding::ResourceDialect>
6291        fidl::encoding::Encode<DebugRegistrationPolicyAllowlists, D>
6292        for &DebugRegistrationPolicyAllowlists
6293    {
6294        unsafe fn encode(
6295            self,
6296            encoder: &mut fidl::encoding::Encoder<'_, D>,
6297            offset: usize,
6298            mut depth: fidl::encoding::Depth,
6299        ) -> fidl::Result<()> {
6300            encoder.debug_check_bounds::<DebugRegistrationPolicyAllowlists>(offset);
6301            // Vector header
6302            let max_ordinal: u64 = self.max_ordinal_present();
6303            encoder.write_num(max_ordinal, offset);
6304            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6305            // Calling encoder.out_of_line_offset(0) is not allowed.
6306            if max_ordinal == 0 {
6307                return Ok(());
6308            }
6309            depth.increment()?;
6310            let envelope_size = 8;
6311            let bytes_len = max_ordinal as usize * envelope_size;
6312            #[allow(unused_variables)]
6313            let offset = encoder.out_of_line_offset(bytes_len);
6314            let mut _prev_end_offset: usize = 0;
6315            if 1 > max_ordinal {
6316                return Ok(());
6317            }
6318
6319            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6320            // are envelope_size bytes.
6321            let cur_offset: usize = (1 - 1) * envelope_size;
6322
6323            // Zero reserved fields.
6324            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6325
6326            // Safety:
6327            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6328            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6329            //   envelope_size bytes, there is always sufficient room.
6330            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D>(
6331            self.allowlist.as_ref().map(<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6332            encoder, offset + cur_offset, depth
6333        )?;
6334
6335            _prev_end_offset = cur_offset + envelope_size;
6336
6337            Ok(())
6338        }
6339    }
6340
6341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6342        for DebugRegistrationPolicyAllowlists
6343    {
6344        #[inline(always)]
6345        fn new_empty() -> Self {
6346            Self::default()
6347        }
6348
6349        unsafe fn decode(
6350            &mut self,
6351            decoder: &mut fidl::encoding::Decoder<'_, D>,
6352            offset: usize,
6353            mut depth: fidl::encoding::Depth,
6354        ) -> fidl::Result<()> {
6355            decoder.debug_check_bounds::<Self>(offset);
6356            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6357                None => return Err(fidl::Error::NotNullable),
6358                Some(len) => len,
6359            };
6360            // Calling decoder.out_of_line_offset(0) is not allowed.
6361            if len == 0 {
6362                return Ok(());
6363            };
6364            depth.increment()?;
6365            let envelope_size = 8;
6366            let bytes_len = len * envelope_size;
6367            let offset = decoder.out_of_line_offset(bytes_len)?;
6368            // Decode the envelope for each type.
6369            let mut _next_ordinal_to_read = 0;
6370            let mut next_offset = offset;
6371            let end_offset = offset + bytes_len;
6372            _next_ordinal_to_read += 1;
6373            if next_offset >= end_offset {
6374                return Ok(());
6375            }
6376
6377            // Decode unknown envelopes for gaps in ordinals.
6378            while _next_ordinal_to_read < 1 {
6379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6380                _next_ordinal_to_read += 1;
6381                next_offset += envelope_size;
6382            }
6383
6384            let next_out_of_line = decoder.next_out_of_line();
6385            let handles_before = decoder.remaining_handles();
6386            if let Some((inlined, num_bytes, num_handles)) =
6387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6388            {
6389                let member_inline_size = <fidl::encoding::Vector<
6390                    DebugRegistrationAllowlistEntry,
6391                    128,
6392                > as fidl::encoding::TypeMarker>::inline_size(
6393                    decoder.context
6394                );
6395                if inlined != (member_inline_size <= 4) {
6396                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6397                }
6398                let inner_offset;
6399                let mut inner_depth = depth.clone();
6400                if inlined {
6401                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6402                    inner_offset = next_offset;
6403                } else {
6404                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6405                    inner_depth.increment()?;
6406                }
6407                let val_ref =
6408                self.allowlist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D));
6409                fidl::decode!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
6410                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6411                {
6412                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6413                }
6414                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6415                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6416                }
6417            }
6418
6419            next_offset += envelope_size;
6420
6421            // Decode the remaining unknown envelopes.
6422            while next_offset < end_offset {
6423                _next_ordinal_to_read += 1;
6424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6425                next_offset += envelope_size;
6426            }
6427
6428            Ok(())
6429        }
6430    }
6431
6432    impl Environment {
6433        #[inline(always)]
6434        fn max_ordinal_present(&self) -> u64 {
6435            if let Some(_) = self.moniker {
6436                return 2;
6437            }
6438            if let Some(_) = self.capability {
6439                return 1;
6440            }
6441            0
6442        }
6443    }
6444
6445    impl fidl::encoding::ValueTypeMarker for Environment {
6446        type Borrowed<'a> = &'a Self;
6447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6448            value
6449        }
6450    }
6451
6452    unsafe impl fidl::encoding::TypeMarker for Environment {
6453        type Owned = Self;
6454
6455        #[inline(always)]
6456        fn inline_align(_context: fidl::encoding::Context) -> usize {
6457            8
6458        }
6459
6460        #[inline(always)]
6461        fn inline_size(_context: fidl::encoding::Context) -> usize {
6462            16
6463        }
6464    }
6465
6466    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
6467        for &Environment
6468    {
6469        unsafe fn encode(
6470            self,
6471            encoder: &mut fidl::encoding::Encoder<'_, D>,
6472            offset: usize,
6473            mut depth: fidl::encoding::Depth,
6474        ) -> fidl::Result<()> {
6475            encoder.debug_check_bounds::<Environment>(offset);
6476            // Vector header
6477            let max_ordinal: u64 = self.max_ordinal_present();
6478            encoder.write_num(max_ordinal, offset);
6479            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6480            // Calling encoder.out_of_line_offset(0) is not allowed.
6481            if max_ordinal == 0 {
6482                return Ok(());
6483            }
6484            depth.increment()?;
6485            let envelope_size = 8;
6486            let bytes_len = max_ordinal as usize * envelope_size;
6487            #[allow(unused_variables)]
6488            let offset = encoder.out_of_line_offset(bytes_len);
6489            let mut _prev_end_offset: usize = 0;
6490            if 1 > max_ordinal {
6491                return Ok(());
6492            }
6493
6494            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6495            // are envelope_size bytes.
6496            let cur_offset: usize = (1 - 1) * envelope_size;
6497
6498            // Zero reserved fields.
6499            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6500
6501            // Safety:
6502            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6503            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6504            //   envelope_size bytes, there is always sufficient room.
6505            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
6506                self.capability
6507                    .as_ref()
6508                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
6509                encoder,
6510                offset + cur_offset,
6511                depth,
6512            )?;
6513
6514            _prev_end_offset = cur_offset + envelope_size;
6515            if 2 > max_ordinal {
6516                return Ok(());
6517            }
6518
6519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6520            // are envelope_size bytes.
6521            let cur_offset: usize = (2 - 1) * envelope_size;
6522
6523            // Zero reserved fields.
6524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6525
6526            // Safety:
6527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6529            //   envelope_size bytes, there is always sufficient room.
6530            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6531            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6532            encoder, offset + cur_offset, depth
6533        )?;
6534
6535            _prev_end_offset = cur_offset + envelope_size;
6536
6537            Ok(())
6538        }
6539    }
6540
6541    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
6542        #[inline(always)]
6543        fn new_empty() -> Self {
6544            Self::default()
6545        }
6546
6547        unsafe fn decode(
6548            &mut self,
6549            decoder: &mut fidl::encoding::Decoder<'_, D>,
6550            offset: usize,
6551            mut depth: fidl::encoding::Depth,
6552        ) -> fidl::Result<()> {
6553            decoder.debug_check_bounds::<Self>(offset);
6554            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6555                None => return Err(fidl::Error::NotNullable),
6556                Some(len) => len,
6557            };
6558            // Calling decoder.out_of_line_offset(0) is not allowed.
6559            if len == 0 {
6560                return Ok(());
6561            };
6562            depth.increment()?;
6563            let envelope_size = 8;
6564            let bytes_len = len * envelope_size;
6565            let offset = decoder.out_of_line_offset(bytes_len)?;
6566            // Decode the envelope for each type.
6567            let mut _next_ordinal_to_read = 0;
6568            let mut next_offset = offset;
6569            let end_offset = offset + bytes_len;
6570            _next_ordinal_to_read += 1;
6571            if next_offset >= end_offset {
6572                return Ok(());
6573            }
6574
6575            // Decode unknown envelopes for gaps in ordinals.
6576            while _next_ordinal_to_read < 1 {
6577                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6578                _next_ordinal_to_read += 1;
6579                next_offset += envelope_size;
6580            }
6581
6582            let next_out_of_line = decoder.next_out_of_line();
6583            let handles_before = decoder.remaining_handles();
6584            if let Some((inlined, num_bytes, num_handles)) =
6585                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6586            {
6587                let member_inline_size =
6588                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
6589                        decoder.context,
6590                    );
6591                if inlined != (member_inline_size <= 4) {
6592                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6593                }
6594                let inner_offset;
6595                let mut inner_depth = depth.clone();
6596                if inlined {
6597                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6598                    inner_offset = next_offset;
6599                } else {
6600                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6601                    inner_depth.increment()?;
6602                }
6603                let val_ref =
6604                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
6605                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
6606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6607                {
6608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6609                }
6610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6612                }
6613            }
6614
6615            next_offset += envelope_size;
6616            _next_ordinal_to_read += 1;
6617            if next_offset >= end_offset {
6618                return Ok(());
6619            }
6620
6621            // Decode unknown envelopes for gaps in ordinals.
6622            while _next_ordinal_to_read < 2 {
6623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6624                _next_ordinal_to_read += 1;
6625                next_offset += envelope_size;
6626            }
6627
6628            let next_out_of_line = decoder.next_out_of_line();
6629            let handles_before = decoder.remaining_handles();
6630            if let Some((inlined, num_bytes, num_handles)) =
6631                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6632            {
6633                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6634                if inlined != (member_inline_size <= 4) {
6635                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6636                }
6637                let inner_offset;
6638                let mut inner_depth = depth.clone();
6639                if inlined {
6640                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6641                    inner_offset = next_offset;
6642                } else {
6643                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6644                    inner_depth.increment()?;
6645                }
6646                let val_ref = self.moniker.get_or_insert_with(|| {
6647                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6648                });
6649                fidl::decode!(
6650                    fidl::encoding::BoundedString<4096>,
6651                    D,
6652                    val_ref,
6653                    decoder,
6654                    inner_offset,
6655                    inner_depth
6656                )?;
6657                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6658                {
6659                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6660                }
6661                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6662                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6663                }
6664            }
6665
6666            next_offset += envelope_size;
6667
6668            // Decode the remaining unknown envelopes.
6669            while next_offset < end_offset {
6670                _next_ordinal_to_read += 1;
6671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6672                next_offset += envelope_size;
6673            }
6674
6675            Ok(())
6676        }
6677    }
6678
6679    impl EnvironmentSource {
6680        #[inline(always)]
6681        fn max_ordinal_present(&self) -> u64 {
6682            if let Some(_) = self.source {
6683                return 2;
6684            }
6685            if let Some(_) = self.source_name {
6686                return 1;
6687            }
6688            0
6689        }
6690    }
6691
6692    impl fidl::encoding::ValueTypeMarker for EnvironmentSource {
6693        type Borrowed<'a> = &'a Self;
6694        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6695            value
6696        }
6697    }
6698
6699    unsafe impl fidl::encoding::TypeMarker for EnvironmentSource {
6700        type Owned = Self;
6701
6702        #[inline(always)]
6703        fn inline_align(_context: fidl::encoding::Context) -> usize {
6704            8
6705        }
6706
6707        #[inline(always)]
6708        fn inline_size(_context: fidl::encoding::Context) -> usize {
6709            16
6710        }
6711    }
6712
6713    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentSource, D>
6714        for &EnvironmentSource
6715    {
6716        unsafe fn encode(
6717            self,
6718            encoder: &mut fidl::encoding::Encoder<'_, D>,
6719            offset: usize,
6720            mut depth: fidl::encoding::Depth,
6721        ) -> fidl::Result<()> {
6722            encoder.debug_check_bounds::<EnvironmentSource>(offset);
6723            // Vector header
6724            let max_ordinal: u64 = self.max_ordinal_present();
6725            encoder.write_num(max_ordinal, offset);
6726            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6727            // Calling encoder.out_of_line_offset(0) is not allowed.
6728            if max_ordinal == 0 {
6729                return Ok(());
6730            }
6731            depth.increment()?;
6732            let envelope_size = 8;
6733            let bytes_len = max_ordinal as usize * envelope_size;
6734            #[allow(unused_variables)]
6735            let offset = encoder.out_of_line_offset(bytes_len);
6736            let mut _prev_end_offset: usize = 0;
6737            if 1 > max_ordinal {
6738                return Ok(());
6739            }
6740
6741            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6742            // are envelope_size bytes.
6743            let cur_offset: usize = (1 - 1) * envelope_size;
6744
6745            // Zero reserved fields.
6746            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6747
6748            // Safety:
6749            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6750            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6751            //   envelope_size bytes, there is always sufficient room.
6752            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
6753            self.source_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
6754            encoder, offset + cur_offset, depth
6755        )?;
6756
6757            _prev_end_offset = cur_offset + envelope_size;
6758            if 2 > max_ordinal {
6759                return Ok(());
6760            }
6761
6762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6763            // are envelope_size bytes.
6764            let cur_offset: usize = (2 - 1) * envelope_size;
6765
6766            // Zero reserved fields.
6767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6768
6769            // Safety:
6770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6772            //   envelope_size bytes, there is always sufficient room.
6773            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
6774            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
6775            encoder, offset + cur_offset, depth
6776        )?;
6777
6778            _prev_end_offset = cur_offset + envelope_size;
6779
6780            Ok(())
6781        }
6782    }
6783
6784    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentSource {
6785        #[inline(always)]
6786        fn new_empty() -> Self {
6787            Self::default()
6788        }
6789
6790        unsafe fn decode(
6791            &mut self,
6792            decoder: &mut fidl::encoding::Decoder<'_, D>,
6793            offset: usize,
6794            mut depth: fidl::encoding::Depth,
6795        ) -> fidl::Result<()> {
6796            decoder.debug_check_bounds::<Self>(offset);
6797            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6798                None => return Err(fidl::Error::NotNullable),
6799                Some(len) => len,
6800            };
6801            // Calling decoder.out_of_line_offset(0) is not allowed.
6802            if len == 0 {
6803                return Ok(());
6804            };
6805            depth.increment()?;
6806            let envelope_size = 8;
6807            let bytes_len = len * envelope_size;
6808            let offset = decoder.out_of_line_offset(bytes_len)?;
6809            // Decode the envelope for each type.
6810            let mut _next_ordinal_to_read = 0;
6811            let mut next_offset = offset;
6812            let end_offset = offset + bytes_len;
6813            _next_ordinal_to_read += 1;
6814            if next_offset >= end_offset {
6815                return Ok(());
6816            }
6817
6818            // Decode unknown envelopes for gaps in ordinals.
6819            while _next_ordinal_to_read < 1 {
6820                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6821                _next_ordinal_to_read += 1;
6822                next_offset += envelope_size;
6823            }
6824
6825            let next_out_of_line = decoder.next_out_of_line();
6826            let handles_before = decoder.remaining_handles();
6827            if let Some((inlined, num_bytes, num_handles)) =
6828                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6829            {
6830                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6831                if inlined != (member_inline_size <= 4) {
6832                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6833                }
6834                let inner_offset;
6835                let mut inner_depth = depth.clone();
6836                if inlined {
6837                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6838                    inner_offset = next_offset;
6839                } else {
6840                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6841                    inner_depth.increment()?;
6842                }
6843                let val_ref = self.source_name.get_or_insert_with(|| {
6844                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6845                });
6846                fidl::decode!(
6847                    fidl::encoding::BoundedString<1024>,
6848                    D,
6849                    val_ref,
6850                    decoder,
6851                    inner_offset,
6852                    inner_depth
6853                )?;
6854                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6855                {
6856                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6857                }
6858                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6859                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6860                }
6861            }
6862
6863            next_offset += envelope_size;
6864            _next_ordinal_to_read += 1;
6865            if next_offset >= end_offset {
6866                return Ok(());
6867            }
6868
6869            // Decode unknown envelopes for gaps in ordinals.
6870            while _next_ordinal_to_read < 2 {
6871                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6872                _next_ordinal_to_read += 1;
6873                next_offset += envelope_size;
6874            }
6875
6876            let next_out_of_line = decoder.next_out_of_line();
6877            let handles_before = decoder.remaining_handles();
6878            if let Some((inlined, num_bytes, num_handles)) =
6879                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6880            {
6881                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6882                if inlined != (member_inline_size <= 4) {
6883                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6884                }
6885                let inner_offset;
6886                let mut inner_depth = depth.clone();
6887                if inlined {
6888                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6889                    inner_offset = next_offset;
6890                } else {
6891                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6892                    inner_depth.increment()?;
6893                }
6894                let val_ref = self.source.get_or_insert_with(|| {
6895                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
6896                });
6897                fidl::decode!(
6898                    fidl_fuchsia_component_decl__common::Ref,
6899                    D,
6900                    val_ref,
6901                    decoder,
6902                    inner_offset,
6903                    inner_depth
6904                )?;
6905                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6906                {
6907                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6908                }
6909                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6910                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6911                }
6912            }
6913
6914            next_offset += envelope_size;
6915
6916            // Decode the remaining unknown envelopes.
6917            while next_offset < end_offset {
6918                _next_ordinal_to_read += 1;
6919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6920                next_offset += envelope_size;
6921            }
6922
6923            Ok(())
6924        }
6925    }
6926
6927    impl EventStreamRouteMetadata {
6928        #[inline(always)]
6929        fn max_ordinal_present(&self) -> u64 {
6930            if let Some(_) = self.scope {
6931                return 2;
6932            }
6933            if let Some(_) = self.scope_moniker {
6934                return 1;
6935            }
6936            0
6937        }
6938    }
6939
6940    impl fidl::encoding::ValueTypeMarker for EventStreamRouteMetadata {
6941        type Borrowed<'a> = &'a Self;
6942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6943            value
6944        }
6945    }
6946
6947    unsafe impl fidl::encoding::TypeMarker for EventStreamRouteMetadata {
6948        type Owned = Self;
6949
6950        #[inline(always)]
6951        fn inline_align(_context: fidl::encoding::Context) -> usize {
6952            8
6953        }
6954
6955        #[inline(always)]
6956        fn inline_size(_context: fidl::encoding::Context) -> usize {
6957            16
6958        }
6959    }
6960
6961    unsafe impl<D: fidl::encoding::ResourceDialect>
6962        fidl::encoding::Encode<EventStreamRouteMetadata, D> for &EventStreamRouteMetadata
6963    {
6964        unsafe fn encode(
6965            self,
6966            encoder: &mut fidl::encoding::Encoder<'_, D>,
6967            offset: usize,
6968            mut depth: fidl::encoding::Depth,
6969        ) -> fidl::Result<()> {
6970            encoder.debug_check_bounds::<EventStreamRouteMetadata>(offset);
6971            // Vector header
6972            let max_ordinal: u64 = self.max_ordinal_present();
6973            encoder.write_num(max_ordinal, offset);
6974            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6975            // Calling encoder.out_of_line_offset(0) is not allowed.
6976            if max_ordinal == 0 {
6977                return Ok(());
6978            }
6979            depth.increment()?;
6980            let envelope_size = 8;
6981            let bytes_len = max_ordinal as usize * envelope_size;
6982            #[allow(unused_variables)]
6983            let offset = encoder.out_of_line_offset(bytes_len);
6984            let mut _prev_end_offset: usize = 0;
6985            if 1 > max_ordinal {
6986                return Ok(());
6987            }
6988
6989            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6990            // are envelope_size bytes.
6991            let cur_offset: usize = (1 - 1) * envelope_size;
6992
6993            // Zero reserved fields.
6994            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6995
6996            // Safety:
6997            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6998            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6999            //   envelope_size bytes, there is always sufficient room.
7000            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7001            self.scope_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7002            encoder, offset + cur_offset, depth
7003        )?;
7004
7005            _prev_end_offset = cur_offset + envelope_size;
7006            if 2 > max_ordinal {
7007                return Ok(());
7008            }
7009
7010            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7011            // are envelope_size bytes.
7012            let cur_offset: usize = (2 - 1) * envelope_size;
7013
7014            // Zero reserved fields.
7015            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7016
7017            // Safety:
7018            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7019            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7020            //   envelope_size bytes, there is always sufficient room.
7021            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>, D>(
7022            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
7023            encoder, offset + cur_offset, depth
7024        )?;
7025
7026            _prev_end_offset = cur_offset + envelope_size;
7027
7028            Ok(())
7029        }
7030    }
7031
7032    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7033        for EventStreamRouteMetadata
7034    {
7035        #[inline(always)]
7036        fn new_empty() -> Self {
7037            Self::default()
7038        }
7039
7040        unsafe fn decode(
7041            &mut self,
7042            decoder: &mut fidl::encoding::Decoder<'_, D>,
7043            offset: usize,
7044            mut depth: fidl::encoding::Depth,
7045        ) -> fidl::Result<()> {
7046            decoder.debug_check_bounds::<Self>(offset);
7047            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7048                None => return Err(fidl::Error::NotNullable),
7049                Some(len) => len,
7050            };
7051            // Calling decoder.out_of_line_offset(0) is not allowed.
7052            if len == 0 {
7053                return Ok(());
7054            };
7055            depth.increment()?;
7056            let envelope_size = 8;
7057            let bytes_len = len * envelope_size;
7058            let offset = decoder.out_of_line_offset(bytes_len)?;
7059            // Decode the envelope for each type.
7060            let mut _next_ordinal_to_read = 0;
7061            let mut next_offset = offset;
7062            let end_offset = offset + bytes_len;
7063            _next_ordinal_to_read += 1;
7064            if next_offset >= end_offset {
7065                return Ok(());
7066            }
7067
7068            // Decode unknown envelopes for gaps in ordinals.
7069            while _next_ordinal_to_read < 1 {
7070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7071                _next_ordinal_to_read += 1;
7072                next_offset += envelope_size;
7073            }
7074
7075            let next_out_of_line = decoder.next_out_of_line();
7076            let handles_before = decoder.remaining_handles();
7077            if let Some((inlined, num_bytes, num_handles)) =
7078                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7079            {
7080                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7081                if inlined != (member_inline_size <= 4) {
7082                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7083                }
7084                let inner_offset;
7085                let mut inner_depth = depth.clone();
7086                if inlined {
7087                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7088                    inner_offset = next_offset;
7089                } else {
7090                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7091                    inner_depth.increment()?;
7092                }
7093                let val_ref = self.scope_moniker.get_or_insert_with(|| {
7094                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7095                });
7096                fidl::decode!(
7097                    fidl::encoding::BoundedString<4096>,
7098                    D,
7099                    val_ref,
7100                    decoder,
7101                    inner_offset,
7102                    inner_depth
7103                )?;
7104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7105                {
7106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7107                }
7108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7110                }
7111            }
7112
7113            next_offset += envelope_size;
7114            _next_ordinal_to_read += 1;
7115            if next_offset >= end_offset {
7116                return Ok(());
7117            }
7118
7119            // Decode unknown envelopes for gaps in ordinals.
7120            while _next_ordinal_to_read < 2 {
7121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7122                _next_ordinal_to_read += 1;
7123                next_offset += envelope_size;
7124            }
7125
7126            let next_out_of_line = decoder.next_out_of_line();
7127            let handles_before = decoder.remaining_handles();
7128            if let Some((inlined, num_bytes, num_handles)) =
7129                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7130            {
7131                let member_inline_size = <fidl::encoding::UnboundedVector<
7132                    fidl_fuchsia_component_decl__common::Ref,
7133                > as fidl::encoding::TypeMarker>::inline_size(
7134                    decoder.context
7135                );
7136                if inlined != (member_inline_size <= 4) {
7137                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7138                }
7139                let inner_offset;
7140                let mut inner_depth = depth.clone();
7141                if inlined {
7142                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7143                    inner_offset = next_offset;
7144                } else {
7145                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7146                    inner_depth.increment()?;
7147                }
7148                let val_ref = self.scope.get_or_insert_with(|| {
7149                    fidl::new_empty!(
7150                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
7151                        D
7152                    )
7153                });
7154                fidl::decode!(
7155                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
7156                    D,
7157                    val_ref,
7158                    decoder,
7159                    inner_offset,
7160                    inner_depth
7161                )?;
7162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7163                {
7164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7165                }
7166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7168                }
7169            }
7170
7171            next_offset += envelope_size;
7172
7173            // Decode the remaining unknown envelopes.
7174            while next_offset < end_offset {
7175                _next_ordinal_to_read += 1;
7176                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7177                next_offset += envelope_size;
7178            }
7179
7180            Ok(())
7181        }
7182    }
7183
7184    impl FilteredAggregateProvider {
7185        #[inline(always)]
7186        fn max_ordinal_present(&self) -> u64 {
7187            if let Some(_) = self.sources {
7188                return 4;
7189            }
7190            if let Some(_) = self.offer_service_decls {
7191                return 3;
7192            }
7193            if let Some(_) = self.moniker {
7194                return 2;
7195            }
7196            if let Some(_) = self.capability {
7197                return 1;
7198            }
7199            0
7200        }
7201    }
7202
7203    impl fidl::encoding::ValueTypeMarker for FilteredAggregateProvider {
7204        type Borrowed<'a> = &'a Self;
7205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7206            value
7207        }
7208    }
7209
7210    unsafe impl fidl::encoding::TypeMarker for FilteredAggregateProvider {
7211        type Owned = Self;
7212
7213        #[inline(always)]
7214        fn inline_align(_context: fidl::encoding::Context) -> usize {
7215            8
7216        }
7217
7218        #[inline(always)]
7219        fn inline_size(_context: fidl::encoding::Context) -> usize {
7220            16
7221        }
7222    }
7223
7224    unsafe impl<D: fidl::encoding::ResourceDialect>
7225        fidl::encoding::Encode<FilteredAggregateProvider, D> for &FilteredAggregateProvider
7226    {
7227        unsafe fn encode(
7228            self,
7229            encoder: &mut fidl::encoding::Encoder<'_, D>,
7230            offset: usize,
7231            mut depth: fidl::encoding::Depth,
7232        ) -> fidl::Result<()> {
7233            encoder.debug_check_bounds::<FilteredAggregateProvider>(offset);
7234            // Vector header
7235            let max_ordinal: u64 = self.max_ordinal_present();
7236            encoder.write_num(max_ordinal, offset);
7237            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7238            // Calling encoder.out_of_line_offset(0) is not allowed.
7239            if max_ordinal == 0 {
7240                return Ok(());
7241            }
7242            depth.increment()?;
7243            let envelope_size = 8;
7244            let bytes_len = max_ordinal as usize * envelope_size;
7245            #[allow(unused_variables)]
7246            let offset = encoder.out_of_line_offset(bytes_len);
7247            let mut _prev_end_offset: usize = 0;
7248            if 1 > max_ordinal {
7249                return Ok(());
7250            }
7251
7252            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7253            // are envelope_size bytes.
7254            let cur_offset: usize = (1 - 1) * envelope_size;
7255
7256            // Zero reserved fields.
7257            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7258
7259            // Safety:
7260            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7261            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7262            //   envelope_size bytes, there is always sufficient room.
7263            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7264                self.capability
7265                    .as_ref()
7266                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7267                encoder,
7268                offset + cur_offset,
7269                depth,
7270            )?;
7271
7272            _prev_end_offset = cur_offset + envelope_size;
7273            if 2 > max_ordinal {
7274                return Ok(());
7275            }
7276
7277            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7278            // are envelope_size bytes.
7279            let cur_offset: usize = (2 - 1) * envelope_size;
7280
7281            // Zero reserved fields.
7282            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7283
7284            // Safety:
7285            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7286            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7287            //   envelope_size bytes, there is always sufficient room.
7288            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7289            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7290            encoder, offset + cur_offset, depth
7291        )?;
7292
7293            _prev_end_offset = cur_offset + envelope_size;
7294            if 3 > max_ordinal {
7295                return Ok(());
7296            }
7297
7298            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7299            // are envelope_size bytes.
7300            let cur_offset: usize = (3 - 1) * envelope_size;
7301
7302            // Zero reserved fields.
7303            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7304
7305            // Safety:
7306            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7307            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7308            //   envelope_size bytes, there is always sufficient room.
7309            fidl::encoding::encode_in_envelope_optional::<
7310                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::OfferService>,
7311                D,
7312            >(
7313                self.offer_service_decls.as_ref().map(
7314                    <fidl::encoding::UnboundedVector<
7315                        fidl_fuchsia_component_decl__common::OfferService,
7316                    > as fidl::encoding::ValueTypeMarker>::borrow,
7317                ),
7318                encoder,
7319                offset + cur_offset,
7320                depth,
7321            )?;
7322
7323            _prev_end_offset = cur_offset + envelope_size;
7324            if 4 > max_ordinal {
7325                return Ok(());
7326            }
7327
7328            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7329            // are envelope_size bytes.
7330            let cur_offset: usize = (4 - 1) * envelope_size;
7331
7332            // Zero reserved fields.
7333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7334
7335            // Safety:
7336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7338            //   envelope_size bytes, there is always sufficient room.
7339            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
7340                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
7341                encoder,
7342                offset + cur_offset,
7343                depth,
7344            )?;
7345
7346            _prev_end_offset = cur_offset + envelope_size;
7347
7348            Ok(())
7349        }
7350    }
7351
7352    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7353        for FilteredAggregateProvider
7354    {
7355        #[inline(always)]
7356        fn new_empty() -> Self {
7357            Self::default()
7358        }
7359
7360        unsafe fn decode(
7361            &mut self,
7362            decoder: &mut fidl::encoding::Decoder<'_, D>,
7363            offset: usize,
7364            mut depth: fidl::encoding::Depth,
7365        ) -> fidl::Result<()> {
7366            decoder.debug_check_bounds::<Self>(offset);
7367            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7368                None => return Err(fidl::Error::NotNullable),
7369                Some(len) => len,
7370            };
7371            // Calling decoder.out_of_line_offset(0) is not allowed.
7372            if len == 0 {
7373                return Ok(());
7374            };
7375            depth.increment()?;
7376            let envelope_size = 8;
7377            let bytes_len = len * envelope_size;
7378            let offset = decoder.out_of_line_offset(bytes_len)?;
7379            // Decode the envelope for each type.
7380            let mut _next_ordinal_to_read = 0;
7381            let mut next_offset = offset;
7382            let end_offset = offset + bytes_len;
7383            _next_ordinal_to_read += 1;
7384            if next_offset >= end_offset {
7385                return Ok(());
7386            }
7387
7388            // Decode unknown envelopes for gaps in ordinals.
7389            while _next_ordinal_to_read < 1 {
7390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7391                _next_ordinal_to_read += 1;
7392                next_offset += envelope_size;
7393            }
7394
7395            let next_out_of_line = decoder.next_out_of_line();
7396            let handles_before = decoder.remaining_handles();
7397            if let Some((inlined, num_bytes, num_handles)) =
7398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7399            {
7400                let member_inline_size =
7401                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7402                        decoder.context,
7403                    );
7404                if inlined != (member_inline_size <= 4) {
7405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7406                }
7407                let inner_offset;
7408                let mut inner_depth = depth.clone();
7409                if inlined {
7410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7411                    inner_offset = next_offset;
7412                } else {
7413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7414                    inner_depth.increment()?;
7415                }
7416                let val_ref =
7417                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7418                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7419                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7420                {
7421                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7422                }
7423                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7424                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7425                }
7426            }
7427
7428            next_offset += envelope_size;
7429            _next_ordinal_to_read += 1;
7430            if next_offset >= end_offset {
7431                return Ok(());
7432            }
7433
7434            // Decode unknown envelopes for gaps in ordinals.
7435            while _next_ordinal_to_read < 2 {
7436                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7437                _next_ordinal_to_read += 1;
7438                next_offset += envelope_size;
7439            }
7440
7441            let next_out_of_line = decoder.next_out_of_line();
7442            let handles_before = decoder.remaining_handles();
7443            if let Some((inlined, num_bytes, num_handles)) =
7444                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7445            {
7446                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7447                if inlined != (member_inline_size <= 4) {
7448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7449                }
7450                let inner_offset;
7451                let mut inner_depth = depth.clone();
7452                if inlined {
7453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7454                    inner_offset = next_offset;
7455                } else {
7456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7457                    inner_depth.increment()?;
7458                }
7459                let val_ref = self.moniker.get_or_insert_with(|| {
7460                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7461                });
7462                fidl::decode!(
7463                    fidl::encoding::BoundedString<4096>,
7464                    D,
7465                    val_ref,
7466                    decoder,
7467                    inner_offset,
7468                    inner_depth
7469                )?;
7470                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7471                {
7472                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7473                }
7474                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7475                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7476                }
7477            }
7478
7479            next_offset += envelope_size;
7480            _next_ordinal_to_read += 1;
7481            if next_offset >= end_offset {
7482                return Ok(());
7483            }
7484
7485            // Decode unknown envelopes for gaps in ordinals.
7486            while _next_ordinal_to_read < 3 {
7487                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7488                _next_ordinal_to_read += 1;
7489                next_offset += envelope_size;
7490            }
7491
7492            let next_out_of_line = decoder.next_out_of_line();
7493            let handles_before = decoder.remaining_handles();
7494            if let Some((inlined, num_bytes, num_handles)) =
7495                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7496            {
7497                let member_inline_size = <fidl::encoding::UnboundedVector<
7498                    fidl_fuchsia_component_decl__common::OfferService,
7499                > as fidl::encoding::TypeMarker>::inline_size(
7500                    decoder.context
7501                );
7502                if inlined != (member_inline_size <= 4) {
7503                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7504                }
7505                let inner_offset;
7506                let mut inner_depth = depth.clone();
7507                if inlined {
7508                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7509                    inner_offset = next_offset;
7510                } else {
7511                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7512                    inner_depth.increment()?;
7513                }
7514                let val_ref = self.offer_service_decls.get_or_insert_with(|| {
7515                    fidl::new_empty!(
7516                        fidl::encoding::UnboundedVector<
7517                            fidl_fuchsia_component_decl__common::OfferService,
7518                        >,
7519                        D
7520                    )
7521                });
7522                fidl::decode!(
7523                    fidl::encoding::UnboundedVector<
7524                        fidl_fuchsia_component_decl__common::OfferService,
7525                    >,
7526                    D,
7527                    val_ref,
7528                    decoder,
7529                    inner_offset,
7530                    inner_depth
7531                )?;
7532                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7533                {
7534                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7535                }
7536                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7537                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7538                }
7539            }
7540
7541            next_offset += envelope_size;
7542            _next_ordinal_to_read += 1;
7543            if next_offset >= end_offset {
7544                return Ok(());
7545            }
7546
7547            // Decode unknown envelopes for gaps in ordinals.
7548            while _next_ordinal_to_read < 4 {
7549                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7550                _next_ordinal_to_read += 1;
7551                next_offset += envelope_size;
7552            }
7553
7554            let next_out_of_line = decoder.next_out_of_line();
7555            let handles_before = decoder.remaining_handles();
7556            if let Some((inlined, num_bytes, num_handles)) =
7557                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7558            {
7559                let member_inline_size =
7560                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7561                if inlined != (member_inline_size <= 4) {
7562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7563                }
7564                let inner_offset;
7565                let mut inner_depth = depth.clone();
7566                if inlined {
7567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7568                    inner_offset = next_offset;
7569                } else {
7570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7571                    inner_depth.increment()?;
7572                }
7573                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
7574                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
7575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7576                {
7577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7578                }
7579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7581                }
7582            }
7583
7584            next_offset += envelope_size;
7585
7586            // Decode the remaining unknown envelopes.
7587            while next_offset < end_offset {
7588                _next_ordinal_to_read += 1;
7589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7590                next_offset += envelope_size;
7591            }
7592
7593            Ok(())
7594        }
7595    }
7596
7597    impl FilteredProvider {
7598        #[inline(always)]
7599        fn max_ordinal_present(&self) -> u64 {
7600            if let Some(_) = self.offer_service_decl {
7601                return 4;
7602            }
7603            if let Some(_) = self.service_capability {
7604                return 3;
7605            }
7606            if let Some(_) = self.moniker {
7607                return 2;
7608            }
7609            if let Some(_) = self.capability {
7610                return 1;
7611            }
7612            0
7613        }
7614    }
7615
7616    impl fidl::encoding::ValueTypeMarker for FilteredProvider {
7617        type Borrowed<'a> = &'a Self;
7618        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7619            value
7620        }
7621    }
7622
7623    unsafe impl fidl::encoding::TypeMarker for FilteredProvider {
7624        type Owned = Self;
7625
7626        #[inline(always)]
7627        fn inline_align(_context: fidl::encoding::Context) -> usize {
7628            8
7629        }
7630
7631        #[inline(always)]
7632        fn inline_size(_context: fidl::encoding::Context) -> usize {
7633            16
7634        }
7635    }
7636
7637    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FilteredProvider, D>
7638        for &FilteredProvider
7639    {
7640        unsafe fn encode(
7641            self,
7642            encoder: &mut fidl::encoding::Encoder<'_, D>,
7643            offset: usize,
7644            mut depth: fidl::encoding::Depth,
7645        ) -> fidl::Result<()> {
7646            encoder.debug_check_bounds::<FilteredProvider>(offset);
7647            // Vector header
7648            let max_ordinal: u64 = self.max_ordinal_present();
7649            encoder.write_num(max_ordinal, offset);
7650            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7651            // Calling encoder.out_of_line_offset(0) is not allowed.
7652            if max_ordinal == 0 {
7653                return Ok(());
7654            }
7655            depth.increment()?;
7656            let envelope_size = 8;
7657            let bytes_len = max_ordinal as usize * envelope_size;
7658            #[allow(unused_variables)]
7659            let offset = encoder.out_of_line_offset(bytes_len);
7660            let mut _prev_end_offset: usize = 0;
7661            if 1 > max_ordinal {
7662                return Ok(());
7663            }
7664
7665            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7666            // are envelope_size bytes.
7667            let cur_offset: usize = (1 - 1) * envelope_size;
7668
7669            // Zero reserved fields.
7670            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7671
7672            // Safety:
7673            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7674            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7675            //   envelope_size bytes, there is always sufficient room.
7676            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7677                self.capability
7678                    .as_ref()
7679                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7680                encoder,
7681                offset + cur_offset,
7682                depth,
7683            )?;
7684
7685            _prev_end_offset = cur_offset + envelope_size;
7686            if 2 > max_ordinal {
7687                return Ok(());
7688            }
7689
7690            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7691            // are envelope_size bytes.
7692            let cur_offset: usize = (2 - 1) * envelope_size;
7693
7694            // Zero reserved fields.
7695            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7696
7697            // Safety:
7698            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7699            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7700            //   envelope_size bytes, there is always sufficient room.
7701            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7702            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7703            encoder, offset + cur_offset, depth
7704        )?;
7705
7706            _prev_end_offset = cur_offset + envelope_size;
7707            if 3 > max_ordinal {
7708                return Ok(());
7709            }
7710
7711            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7712            // are envelope_size bytes.
7713            let cur_offset: usize = (3 - 1) * envelope_size;
7714
7715            // Zero reserved fields.
7716            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7717
7718            // Safety:
7719            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7720            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7721            //   envelope_size bytes, there is always sufficient room.
7722            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
7723                self.service_capability
7724                    .as_ref()
7725                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
7726                encoder,
7727                offset + cur_offset,
7728                depth,
7729            )?;
7730
7731            _prev_end_offset = cur_offset + envelope_size;
7732            if 4 > max_ordinal {
7733                return Ok(());
7734            }
7735
7736            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7737            // are envelope_size bytes.
7738            let cur_offset: usize = (4 - 1) * envelope_size;
7739
7740            // Zero reserved fields.
7741            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7742
7743            // Safety:
7744            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7745            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7746            //   envelope_size bytes, there is always sufficient room.
7747            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::OfferService, D>(
7748            self.offer_service_decl.as_ref().map(<fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::ValueTypeMarker>::borrow),
7749            encoder, offset + cur_offset, depth
7750        )?;
7751
7752            _prev_end_offset = cur_offset + envelope_size;
7753
7754            Ok(())
7755        }
7756    }
7757
7758    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilteredProvider {
7759        #[inline(always)]
7760        fn new_empty() -> Self {
7761            Self::default()
7762        }
7763
7764        unsafe fn decode(
7765            &mut self,
7766            decoder: &mut fidl::encoding::Decoder<'_, D>,
7767            offset: usize,
7768            mut depth: fidl::encoding::Depth,
7769        ) -> fidl::Result<()> {
7770            decoder.debug_check_bounds::<Self>(offset);
7771            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7772                None => return Err(fidl::Error::NotNullable),
7773                Some(len) => len,
7774            };
7775            // Calling decoder.out_of_line_offset(0) is not allowed.
7776            if len == 0 {
7777                return Ok(());
7778            };
7779            depth.increment()?;
7780            let envelope_size = 8;
7781            let bytes_len = len * envelope_size;
7782            let offset = decoder.out_of_line_offset(bytes_len)?;
7783            // Decode the envelope for each type.
7784            let mut _next_ordinal_to_read = 0;
7785            let mut next_offset = offset;
7786            let end_offset = offset + bytes_len;
7787            _next_ordinal_to_read += 1;
7788            if next_offset >= end_offset {
7789                return Ok(());
7790            }
7791
7792            // Decode unknown envelopes for gaps in ordinals.
7793            while _next_ordinal_to_read < 1 {
7794                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7795                _next_ordinal_to_read += 1;
7796                next_offset += envelope_size;
7797            }
7798
7799            let next_out_of_line = decoder.next_out_of_line();
7800            let handles_before = decoder.remaining_handles();
7801            if let Some((inlined, num_bytes, num_handles)) =
7802                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7803            {
7804                let member_inline_size =
7805                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7806                        decoder.context,
7807                    );
7808                if inlined != (member_inline_size <= 4) {
7809                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7810                }
7811                let inner_offset;
7812                let mut inner_depth = depth.clone();
7813                if inlined {
7814                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7815                    inner_offset = next_offset;
7816                } else {
7817                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7818                    inner_depth.increment()?;
7819                }
7820                let val_ref =
7821                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7822                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7823                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7824                {
7825                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7826                }
7827                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7828                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7829                }
7830            }
7831
7832            next_offset += envelope_size;
7833            _next_ordinal_to_read += 1;
7834            if next_offset >= end_offset {
7835                return Ok(());
7836            }
7837
7838            // Decode unknown envelopes for gaps in ordinals.
7839            while _next_ordinal_to_read < 2 {
7840                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7841                _next_ordinal_to_read += 1;
7842                next_offset += envelope_size;
7843            }
7844
7845            let next_out_of_line = decoder.next_out_of_line();
7846            let handles_before = decoder.remaining_handles();
7847            if let Some((inlined, num_bytes, num_handles)) =
7848                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7849            {
7850                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7851                if inlined != (member_inline_size <= 4) {
7852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7853                }
7854                let inner_offset;
7855                let mut inner_depth = depth.clone();
7856                if inlined {
7857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7858                    inner_offset = next_offset;
7859                } else {
7860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7861                    inner_depth.increment()?;
7862                }
7863                let val_ref = self.moniker.get_or_insert_with(|| {
7864                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7865                });
7866                fidl::decode!(
7867                    fidl::encoding::BoundedString<4096>,
7868                    D,
7869                    val_ref,
7870                    decoder,
7871                    inner_offset,
7872                    inner_depth
7873                )?;
7874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7875                {
7876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7877                }
7878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7880                }
7881            }
7882
7883            next_offset += envelope_size;
7884            _next_ordinal_to_read += 1;
7885            if next_offset >= end_offset {
7886                return Ok(());
7887            }
7888
7889            // Decode unknown envelopes for gaps in ordinals.
7890            while _next_ordinal_to_read < 3 {
7891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7892                _next_ordinal_to_read += 1;
7893                next_offset += envelope_size;
7894            }
7895
7896            let next_out_of_line = decoder.next_out_of_line();
7897            let handles_before = decoder.remaining_handles();
7898            if let Some((inlined, num_bytes, num_handles)) =
7899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7900            {
7901                let member_inline_size =
7902                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
7903                        decoder.context,
7904                    );
7905                if inlined != (member_inline_size <= 4) {
7906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7907                }
7908                let inner_offset;
7909                let mut inner_depth = depth.clone();
7910                if inlined {
7911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7912                    inner_offset = next_offset;
7913                } else {
7914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7915                    inner_depth.increment()?;
7916                }
7917                let val_ref = self
7918                    .service_capability
7919                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
7920                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7921                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7922                {
7923                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7924                }
7925                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7926                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7927                }
7928            }
7929
7930            next_offset += envelope_size;
7931            _next_ordinal_to_read += 1;
7932            if next_offset >= end_offset {
7933                return Ok(());
7934            }
7935
7936            // Decode unknown envelopes for gaps in ordinals.
7937            while _next_ordinal_to_read < 4 {
7938                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7939                _next_ordinal_to_read += 1;
7940                next_offset += envelope_size;
7941            }
7942
7943            let next_out_of_line = decoder.next_out_of_line();
7944            let handles_before = decoder.remaining_handles();
7945            if let Some((inlined, num_bytes, num_handles)) =
7946                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7947            {
7948                let member_inline_size = <fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7949                if inlined != (member_inline_size <= 4) {
7950                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7951                }
7952                let inner_offset;
7953                let mut inner_depth = depth.clone();
7954                if inlined {
7955                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7956                    inner_offset = next_offset;
7957                } else {
7958                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7959                    inner_depth.increment()?;
7960                }
7961                let val_ref = self.offer_service_decl.get_or_insert_with(|| {
7962                    fidl::new_empty!(fidl_fuchsia_component_decl__common::OfferService, D)
7963                });
7964                fidl::decode!(
7965                    fidl_fuchsia_component_decl__common::OfferService,
7966                    D,
7967                    val_ref,
7968                    decoder,
7969                    inner_offset,
7970                    inner_depth
7971                )?;
7972                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7973                {
7974                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7975                }
7976                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7977                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7978                }
7979            }
7980
7981            next_offset += envelope_size;
7982
7983            // Decode the remaining unknown envelopes.
7984            while next_offset < end_offset {
7985                _next_ordinal_to_read += 1;
7986                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7987                next_offset += envelope_size;
7988            }
7989
7990            Ok(())
7991        }
7992    }
7993
7994    impl Framework {
7995        #[inline(always)]
7996        fn max_ordinal_present(&self) -> u64 {
7997            if let Some(_) = self.moniker {
7998                return 2;
7999            }
8000            if let Some(_) = self.capability {
8001                return 1;
8002            }
8003            0
8004        }
8005    }
8006
8007    impl fidl::encoding::ValueTypeMarker for Framework {
8008        type Borrowed<'a> = &'a Self;
8009        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8010            value
8011        }
8012    }
8013
8014    unsafe impl fidl::encoding::TypeMarker for Framework {
8015        type Owned = Self;
8016
8017        #[inline(always)]
8018        fn inline_align(_context: fidl::encoding::Context) -> usize {
8019            8
8020        }
8021
8022        #[inline(always)]
8023        fn inline_size(_context: fidl::encoding::Context) -> usize {
8024            16
8025        }
8026    }
8027
8028    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Framework, D>
8029        for &Framework
8030    {
8031        unsafe fn encode(
8032            self,
8033            encoder: &mut fidl::encoding::Encoder<'_, D>,
8034            offset: usize,
8035            mut depth: fidl::encoding::Depth,
8036        ) -> fidl::Result<()> {
8037            encoder.debug_check_bounds::<Framework>(offset);
8038            // Vector header
8039            let max_ordinal: u64 = self.max_ordinal_present();
8040            encoder.write_num(max_ordinal, offset);
8041            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8042            // Calling encoder.out_of_line_offset(0) is not allowed.
8043            if max_ordinal == 0 {
8044                return Ok(());
8045            }
8046            depth.increment()?;
8047            let envelope_size = 8;
8048            let bytes_len = max_ordinal as usize * envelope_size;
8049            #[allow(unused_variables)]
8050            let offset = encoder.out_of_line_offset(bytes_len);
8051            let mut _prev_end_offset: usize = 0;
8052            if 1 > max_ordinal {
8053                return Ok(());
8054            }
8055
8056            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8057            // are envelope_size bytes.
8058            let cur_offset: usize = (1 - 1) * envelope_size;
8059
8060            // Zero reserved fields.
8061            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8062
8063            // Safety:
8064            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8065            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8066            //   envelope_size bytes, there is always sufficient room.
8067            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
8068                self.capability
8069                    .as_ref()
8070                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
8071                encoder,
8072                offset + cur_offset,
8073                depth,
8074            )?;
8075
8076            _prev_end_offset = cur_offset + envelope_size;
8077            if 2 > max_ordinal {
8078                return Ok(());
8079            }
8080
8081            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8082            // are envelope_size bytes.
8083            let cur_offset: usize = (2 - 1) * envelope_size;
8084
8085            // Zero reserved fields.
8086            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8087
8088            // Safety:
8089            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8090            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8091            //   envelope_size bytes, there is always sufficient room.
8092            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
8093            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
8094            encoder, offset + cur_offset, depth
8095        )?;
8096
8097            _prev_end_offset = cur_offset + envelope_size;
8098
8099            Ok(())
8100        }
8101    }
8102
8103    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Framework {
8104        #[inline(always)]
8105        fn new_empty() -> Self {
8106            Self::default()
8107        }
8108
8109        unsafe fn decode(
8110            &mut self,
8111            decoder: &mut fidl::encoding::Decoder<'_, D>,
8112            offset: usize,
8113            mut depth: fidl::encoding::Depth,
8114        ) -> fidl::Result<()> {
8115            decoder.debug_check_bounds::<Self>(offset);
8116            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8117                None => return Err(fidl::Error::NotNullable),
8118                Some(len) => len,
8119            };
8120            // Calling decoder.out_of_line_offset(0) is not allowed.
8121            if len == 0 {
8122                return Ok(());
8123            };
8124            depth.increment()?;
8125            let envelope_size = 8;
8126            let bytes_len = len * envelope_size;
8127            let offset = decoder.out_of_line_offset(bytes_len)?;
8128            // Decode the envelope for each type.
8129            let mut _next_ordinal_to_read = 0;
8130            let mut next_offset = offset;
8131            let end_offset = offset + bytes_len;
8132            _next_ordinal_to_read += 1;
8133            if next_offset >= end_offset {
8134                return Ok(());
8135            }
8136
8137            // Decode unknown envelopes for gaps in ordinals.
8138            while _next_ordinal_to_read < 1 {
8139                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8140                _next_ordinal_to_read += 1;
8141                next_offset += envelope_size;
8142            }
8143
8144            let next_out_of_line = decoder.next_out_of_line();
8145            let handles_before = decoder.remaining_handles();
8146            if let Some((inlined, num_bytes, num_handles)) =
8147                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8148            {
8149                let member_inline_size =
8150                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
8151                        decoder.context,
8152                    );
8153                if inlined != (member_inline_size <= 4) {
8154                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8155                }
8156                let inner_offset;
8157                let mut inner_depth = depth.clone();
8158                if inlined {
8159                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8160                    inner_offset = next_offset;
8161                } else {
8162                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8163                    inner_depth.increment()?;
8164                }
8165                let val_ref =
8166                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
8167                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
8168                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8169                {
8170                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8171                }
8172                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8173                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8174                }
8175            }
8176
8177            next_offset += envelope_size;
8178            _next_ordinal_to_read += 1;
8179            if next_offset >= end_offset {
8180                return Ok(());
8181            }
8182
8183            // Decode unknown envelopes for gaps in ordinals.
8184            while _next_ordinal_to_read < 2 {
8185                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8186                _next_ordinal_to_read += 1;
8187                next_offset += envelope_size;
8188            }
8189
8190            let next_out_of_line = decoder.next_out_of_line();
8191            let handles_before = decoder.remaining_handles();
8192            if let Some((inlined, num_bytes, num_handles)) =
8193                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8194            {
8195                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8196                if inlined != (member_inline_size <= 4) {
8197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8198                }
8199                let inner_offset;
8200                let mut inner_depth = depth.clone();
8201                if inlined {
8202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8203                    inner_offset = next_offset;
8204                } else {
8205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8206                    inner_depth.increment()?;
8207                }
8208                let val_ref = self.moniker.get_or_insert_with(|| {
8209                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
8210                });
8211                fidl::decode!(
8212                    fidl::encoding::BoundedString<4096>,
8213                    D,
8214                    val_ref,
8215                    decoder,
8216                    inner_offset,
8217                    inner_depth
8218                )?;
8219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8220                {
8221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8222                }
8223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8225                }
8226            }
8227
8228            next_offset += envelope_size;
8229
8230            // Decode the remaining unknown envelopes.
8231            while next_offset < end_offset {
8232                _next_ordinal_to_read += 1;
8233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8234                next_offset += envelope_size;
8235            }
8236
8237            Ok(())
8238        }
8239    }
8240
8241    impl HealthCheck {
8242        #[inline(always)]
8243        fn max_ordinal_present(&self) -> u64 {
8244            if let Some(_) = self.monikers {
8245                return 1;
8246            }
8247            0
8248        }
8249    }
8250
8251    impl fidl::encoding::ValueTypeMarker for HealthCheck {
8252        type Borrowed<'a> = &'a Self;
8253        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8254            value
8255        }
8256    }
8257
8258    unsafe impl fidl::encoding::TypeMarker for HealthCheck {
8259        type Owned = Self;
8260
8261        #[inline(always)]
8262        fn inline_align(_context: fidl::encoding::Context) -> usize {
8263            8
8264        }
8265
8266        #[inline(always)]
8267        fn inline_size(_context: fidl::encoding::Context) -> usize {
8268            16
8269        }
8270    }
8271
8272    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheck, D>
8273        for &HealthCheck
8274    {
8275        unsafe fn encode(
8276            self,
8277            encoder: &mut fidl::encoding::Encoder<'_, D>,
8278            offset: usize,
8279            mut depth: fidl::encoding::Depth,
8280        ) -> fidl::Result<()> {
8281            encoder.debug_check_bounds::<HealthCheck>(offset);
8282            // Vector header
8283            let max_ordinal: u64 = self.max_ordinal_present();
8284            encoder.write_num(max_ordinal, offset);
8285            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8286            // Calling encoder.out_of_line_offset(0) is not allowed.
8287            if max_ordinal == 0 {
8288                return Ok(());
8289            }
8290            depth.increment()?;
8291            let envelope_size = 8;
8292            let bytes_len = max_ordinal as usize * envelope_size;
8293            #[allow(unused_variables)]
8294            let offset = encoder.out_of_line_offset(bytes_len);
8295            let mut _prev_end_offset: usize = 0;
8296            if 1 > max_ordinal {
8297                return Ok(());
8298            }
8299
8300            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8301            // are envelope_size bytes.
8302            let cur_offset: usize = (1 - 1) * envelope_size;
8303
8304            // Zero reserved fields.
8305            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8306
8307            // Safety:
8308            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8309            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8310            //   envelope_size bytes, there is always sufficient room.
8311            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, D>(
8312            self.monikers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
8313            encoder, offset + cur_offset, depth
8314        )?;
8315
8316            _prev_end_offset = cur_offset + envelope_size;
8317
8318            Ok(())
8319        }
8320    }
8321
8322    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheck {
8323        #[inline(always)]
8324        fn new_empty() -> Self {
8325            Self::default()
8326        }
8327
8328        unsafe fn decode(
8329            &mut self,
8330            decoder: &mut fidl::encoding::Decoder<'_, D>,
8331            offset: usize,
8332            mut depth: fidl::encoding::Depth,
8333        ) -> fidl::Result<()> {
8334            decoder.debug_check_bounds::<Self>(offset);
8335            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8336                None => return Err(fidl::Error::NotNullable),
8337                Some(len) => len,
8338            };
8339            // Calling decoder.out_of_line_offset(0) is not allowed.
8340            if len == 0 {
8341                return Ok(());
8342            };
8343            depth.increment()?;
8344            let envelope_size = 8;
8345            let bytes_len = len * envelope_size;
8346            let offset = decoder.out_of_line_offset(bytes_len)?;
8347            // Decode the envelope for each type.
8348            let mut _next_ordinal_to_read = 0;
8349            let mut next_offset = offset;
8350            let end_offset = offset + bytes_len;
8351            _next_ordinal_to_read += 1;
8352            if next_offset >= end_offset {
8353                return Ok(());
8354            }
8355
8356            // Decode unknown envelopes for gaps in ordinals.
8357            while _next_ordinal_to_read < 1 {
8358                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8359                _next_ordinal_to_read += 1;
8360                next_offset += envelope_size;
8361            }
8362
8363            let next_out_of_line = decoder.next_out_of_line();
8364            let handles_before = decoder.remaining_handles();
8365            if let Some((inlined, num_bytes, num_handles)) =
8366                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8367            {
8368                let member_inline_size = <fidl::encoding::UnboundedVector<
8369                    fidl::encoding::BoundedString<255>,
8370                > as fidl::encoding::TypeMarker>::inline_size(
8371                    decoder.context
8372                );
8373                if inlined != (member_inline_size <= 4) {
8374                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8375                }
8376                let inner_offset;
8377                let mut inner_depth = depth.clone();
8378                if inlined {
8379                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8380                    inner_offset = next_offset;
8381                } else {
8382                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8383                    inner_depth.increment()?;
8384                }
8385                let val_ref = self.monikers.get_or_insert_with(|| {
8386                    fidl::new_empty!(
8387                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8388                        D
8389                    )
8390                });
8391                fidl::decode!(
8392                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8393                    D,
8394                    val_ref,
8395                    decoder,
8396                    inner_offset,
8397                    inner_depth
8398                )?;
8399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8400                {
8401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8402                }
8403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8405                }
8406            }
8407
8408            next_offset += envelope_size;
8409
8410            // Decode the remaining unknown envelopes.
8411            while next_offset < end_offset {
8412                _next_ordinal_to_read += 1;
8413                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8414                next_offset += envelope_size;
8415            }
8416
8417            Ok(())
8418        }
8419    }
8420
8421    impl InjectedBundle {
8422        #[inline(always)]
8423        fn max_ordinal_present(&self) -> u64 {
8424            if let Some(_) = self.use_ {
8425                return 2;
8426            }
8427            if let Some(_) = self.components {
8428                return 1;
8429            }
8430            0
8431        }
8432    }
8433
8434    impl fidl::encoding::ValueTypeMarker for InjectedBundle {
8435        type Borrowed<'a> = &'a Self;
8436        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8437            value
8438        }
8439    }
8440
8441    unsafe impl fidl::encoding::TypeMarker for InjectedBundle {
8442        type Owned = Self;
8443
8444        #[inline(always)]
8445        fn inline_align(_context: fidl::encoding::Context) -> usize {
8446            8
8447        }
8448
8449        #[inline(always)]
8450        fn inline_size(_context: fidl::encoding::Context) -> usize {
8451            16
8452        }
8453    }
8454
8455    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedBundle, D>
8456        for &InjectedBundle
8457    {
8458        unsafe fn encode(
8459            self,
8460            encoder: &mut fidl::encoding::Encoder<'_, D>,
8461            offset: usize,
8462            mut depth: fidl::encoding::Depth,
8463        ) -> fidl::Result<()> {
8464            encoder.debug_check_bounds::<InjectedBundle>(offset);
8465            // Vector header
8466            let max_ordinal: u64 = self.max_ordinal_present();
8467            encoder.write_num(max_ordinal, offset);
8468            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8469            // Calling encoder.out_of_line_offset(0) is not allowed.
8470            if max_ordinal == 0 {
8471                return Ok(());
8472            }
8473            depth.increment()?;
8474            let envelope_size = 8;
8475            let bytes_len = max_ordinal as usize * envelope_size;
8476            #[allow(unused_variables)]
8477            let offset = encoder.out_of_line_offset(bytes_len);
8478            let mut _prev_end_offset: usize = 0;
8479            if 1 > max_ordinal {
8480                return Ok(());
8481            }
8482
8483            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8484            // are envelope_size bytes.
8485            let cur_offset: usize = (1 - 1) * envelope_size;
8486
8487            // Zero reserved fields.
8488            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8489
8490            // Safety:
8491            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8492            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8493            //   envelope_size bytes, there is always sufficient room.
8494            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
8495            self.components.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8496            encoder, offset + cur_offset, depth
8497        )?;
8498
8499            _prev_end_offset = cur_offset + envelope_size;
8500            if 2 > max_ordinal {
8501                return Ok(());
8502            }
8503
8504            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8505            // are envelope_size bytes.
8506            let cur_offset: usize = (2 - 1) * envelope_size;
8507
8508            // Zero reserved fields.
8509            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8510
8511            // Safety:
8512            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8513            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8514            //   envelope_size bytes, there is always sufficient room.
8515            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedUse>, D>(
8516            self.use_.as_ref().map(<fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::ValueTypeMarker>::borrow),
8517            encoder, offset + cur_offset, depth
8518        )?;
8519
8520            _prev_end_offset = cur_offset + envelope_size;
8521
8522            Ok(())
8523        }
8524    }
8525
8526    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedBundle {
8527        #[inline(always)]
8528        fn new_empty() -> Self {
8529            Self::default()
8530        }
8531
8532        unsafe fn decode(
8533            &mut self,
8534            decoder: &mut fidl::encoding::Decoder<'_, D>,
8535            offset: usize,
8536            mut depth: fidl::encoding::Depth,
8537        ) -> fidl::Result<()> {
8538            decoder.debug_check_bounds::<Self>(offset);
8539            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8540                None => return Err(fidl::Error::NotNullable),
8541                Some(len) => len,
8542            };
8543            // Calling decoder.out_of_line_offset(0) is not allowed.
8544            if len == 0 {
8545                return Ok(());
8546            };
8547            depth.increment()?;
8548            let envelope_size = 8;
8549            let bytes_len = len * envelope_size;
8550            let offset = decoder.out_of_line_offset(bytes_len)?;
8551            // Decode the envelope for each type.
8552            let mut _next_ordinal_to_read = 0;
8553            let mut next_offset = offset;
8554            let end_offset = offset + bytes_len;
8555            _next_ordinal_to_read += 1;
8556            if next_offset >= end_offset {
8557                return Ok(());
8558            }
8559
8560            // Decode unknown envelopes for gaps in ordinals.
8561            while _next_ordinal_to_read < 1 {
8562                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8563                _next_ordinal_to_read += 1;
8564                next_offset += envelope_size;
8565            }
8566
8567            let next_out_of_line = decoder.next_out_of_line();
8568            let handles_before = decoder.remaining_handles();
8569            if let Some((inlined, num_bytes, num_handles)) =
8570                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8571            {
8572                let member_inline_size = <fidl::encoding::Vector<
8573                    fidl::encoding::BoundedString<4096>,
8574                    128,
8575                > as fidl::encoding::TypeMarker>::inline_size(
8576                    decoder.context
8577                );
8578                if inlined != (member_inline_size <= 4) {
8579                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8580                }
8581                let inner_offset;
8582                let mut inner_depth = depth.clone();
8583                if inlined {
8584                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8585                    inner_offset = next_offset;
8586                } else {
8587                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8588                    inner_depth.increment()?;
8589                }
8590                let val_ref = self.components.get_or_insert_with(|| {
8591                    fidl::new_empty!(
8592                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8593                        D
8594                    )
8595                });
8596                fidl::decode!(
8597                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8598                    D,
8599                    val_ref,
8600                    decoder,
8601                    inner_offset,
8602                    inner_depth
8603                )?;
8604                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8605                {
8606                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8607                }
8608                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8609                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8610                }
8611            }
8612
8613            next_offset += envelope_size;
8614            _next_ordinal_to_read += 1;
8615            if next_offset >= end_offset {
8616                return Ok(());
8617            }
8618
8619            // Decode unknown envelopes for gaps in ordinals.
8620            while _next_ordinal_to_read < 2 {
8621                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8622                _next_ordinal_to_read += 1;
8623                next_offset += envelope_size;
8624            }
8625
8626            let next_out_of_line = decoder.next_out_of_line();
8627            let handles_before = decoder.remaining_handles();
8628            if let Some((inlined, num_bytes, num_handles)) =
8629                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8630            {
8631                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8632                if inlined != (member_inline_size <= 4) {
8633                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8634                }
8635                let inner_offset;
8636                let mut inner_depth = depth.clone();
8637                if inlined {
8638                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8639                    inner_offset = next_offset;
8640                } else {
8641                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8642                    inner_depth.increment()?;
8643                }
8644                let val_ref = self.use_.get_or_insert_with(|| {
8645                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedUse>, D)
8646                });
8647                fidl::decode!(
8648                    fidl::encoding::UnboundedVector<InjectedUse>,
8649                    D,
8650                    val_ref,
8651                    decoder,
8652                    inner_offset,
8653                    inner_depth
8654                )?;
8655                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8656                {
8657                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8658                }
8659                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8660                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8661                }
8662            }
8663
8664            next_offset += envelope_size;
8665
8666            // Decode the remaining unknown envelopes.
8667            while next_offset < end_offset {
8668                _next_ordinal_to_read += 1;
8669                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8670                next_offset += envelope_size;
8671            }
8672
8673            Ok(())
8674        }
8675    }
8676
8677    impl InjectedUseProtocol {
8678        #[inline(always)]
8679        fn max_ordinal_present(&self) -> u64 {
8680            if let Some(_) = self.target_path {
8681                return 2;
8682            }
8683            if let Some(_) = self.source_name {
8684                return 1;
8685            }
8686            0
8687        }
8688    }
8689
8690    impl fidl::encoding::ValueTypeMarker for InjectedUseProtocol {
8691        type Borrowed<'a> = &'a Self;
8692        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8693            value
8694        }
8695    }
8696
8697    unsafe impl fidl::encoding::TypeMarker for InjectedUseProtocol {
8698        type Owned = Self;
8699
8700        #[inline(always)]
8701        fn inline_align(_context: fidl::encoding::Context) -> usize {
8702            8
8703        }
8704
8705        #[inline(always)]
8706        fn inline_size(_context: fidl::encoding::Context) -> usize {
8707            16
8708        }
8709    }
8710
8711    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUseProtocol, D>
8712        for &InjectedUseProtocol
8713    {
8714        unsafe fn encode(
8715            self,
8716            encoder: &mut fidl::encoding::Encoder<'_, D>,
8717            offset: usize,
8718            mut depth: fidl::encoding::Depth,
8719        ) -> fidl::Result<()> {
8720            encoder.debug_check_bounds::<InjectedUseProtocol>(offset);
8721            // Vector header
8722            let max_ordinal: u64 = self.max_ordinal_present();
8723            encoder.write_num(max_ordinal, offset);
8724            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8725            // Calling encoder.out_of_line_offset(0) is not allowed.
8726            if max_ordinal == 0 {
8727                return Ok(());
8728            }
8729            depth.increment()?;
8730            let envelope_size = 8;
8731            let bytes_len = max_ordinal as usize * envelope_size;
8732            #[allow(unused_variables)]
8733            let offset = encoder.out_of_line_offset(bytes_len);
8734            let mut _prev_end_offset: usize = 0;
8735            if 1 > max_ordinal {
8736                return Ok(());
8737            }
8738
8739            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8740            // are envelope_size bytes.
8741            let cur_offset: usize = (1 - 1) * envelope_size;
8742
8743            // Zero reserved fields.
8744            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8745
8746            // Safety:
8747            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8748            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8749            //   envelope_size bytes, there is always sufficient room.
8750            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8751                self.source_name.as_ref().map(
8752                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8753                ),
8754                encoder,
8755                offset + cur_offset,
8756                depth,
8757            )?;
8758
8759            _prev_end_offset = cur_offset + envelope_size;
8760            if 2 > max_ordinal {
8761                return Ok(());
8762            }
8763
8764            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8765            // are envelope_size bytes.
8766            let cur_offset: usize = (2 - 1) * envelope_size;
8767
8768            // Zero reserved fields.
8769            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8770
8771            // Safety:
8772            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8773            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8774            //   envelope_size bytes, there is always sufficient room.
8775            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8776            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8777            encoder, offset + cur_offset, depth
8778        )?;
8779
8780            _prev_end_offset = cur_offset + envelope_size;
8781
8782            Ok(())
8783        }
8784    }
8785
8786    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUseProtocol {
8787        #[inline(always)]
8788        fn new_empty() -> Self {
8789            Self::default()
8790        }
8791
8792        unsafe fn decode(
8793            &mut self,
8794            decoder: &mut fidl::encoding::Decoder<'_, D>,
8795            offset: usize,
8796            mut depth: fidl::encoding::Depth,
8797        ) -> fidl::Result<()> {
8798            decoder.debug_check_bounds::<Self>(offset);
8799            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8800                None => return Err(fidl::Error::NotNullable),
8801                Some(len) => len,
8802            };
8803            // Calling decoder.out_of_line_offset(0) is not allowed.
8804            if len == 0 {
8805                return Ok(());
8806            };
8807            depth.increment()?;
8808            let envelope_size = 8;
8809            let bytes_len = len * envelope_size;
8810            let offset = decoder.out_of_line_offset(bytes_len)?;
8811            // Decode the envelope for each type.
8812            let mut _next_ordinal_to_read = 0;
8813            let mut next_offset = offset;
8814            let end_offset = offset + bytes_len;
8815            _next_ordinal_to_read += 1;
8816            if next_offset >= end_offset {
8817                return Ok(());
8818            }
8819
8820            // Decode unknown envelopes for gaps in ordinals.
8821            while _next_ordinal_to_read < 1 {
8822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8823                _next_ordinal_to_read += 1;
8824                next_offset += envelope_size;
8825            }
8826
8827            let next_out_of_line = decoder.next_out_of_line();
8828            let handles_before = decoder.remaining_handles();
8829            if let Some((inlined, num_bytes, num_handles)) =
8830                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8831            {
8832                let member_inline_size =
8833                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8834                        decoder.context,
8835                    );
8836                if inlined != (member_inline_size <= 4) {
8837                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8838                }
8839                let inner_offset;
8840                let mut inner_depth = depth.clone();
8841                if inlined {
8842                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8843                    inner_offset = next_offset;
8844                } else {
8845                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8846                    inner_depth.increment()?;
8847                }
8848                let val_ref = self
8849                    .source_name
8850                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8851                fidl::decode!(
8852                    fidl::encoding::BoundedString<100>,
8853                    D,
8854                    val_ref,
8855                    decoder,
8856                    inner_offset,
8857                    inner_depth
8858                )?;
8859                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8860                {
8861                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8862                }
8863                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8864                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8865                }
8866            }
8867
8868            next_offset += envelope_size;
8869            _next_ordinal_to_read += 1;
8870            if next_offset >= end_offset {
8871                return Ok(());
8872            }
8873
8874            // Decode unknown envelopes for gaps in ordinals.
8875            while _next_ordinal_to_read < 2 {
8876                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8877                _next_ordinal_to_read += 1;
8878                next_offset += envelope_size;
8879            }
8880
8881            let next_out_of_line = decoder.next_out_of_line();
8882            let handles_before = decoder.remaining_handles();
8883            if let Some((inlined, num_bytes, num_handles)) =
8884                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8885            {
8886                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8887                if inlined != (member_inline_size <= 4) {
8888                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8889                }
8890                let inner_offset;
8891                let mut inner_depth = depth.clone();
8892                if inlined {
8893                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8894                    inner_offset = next_offset;
8895                } else {
8896                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8897                    inner_depth.increment()?;
8898                }
8899                let val_ref = self.target_path.get_or_insert_with(|| {
8900                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
8901                });
8902                fidl::decode!(
8903                    fidl::encoding::BoundedString<1024>,
8904                    D,
8905                    val_ref,
8906                    decoder,
8907                    inner_offset,
8908                    inner_depth
8909                )?;
8910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8911                {
8912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8913                }
8914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8916                }
8917            }
8918
8919            next_offset += envelope_size;
8920
8921            // Decode the remaining unknown envelopes.
8922            while next_offset < end_offset {
8923                _next_ordinal_to_read += 1;
8924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8925                next_offset += envelope_size;
8926            }
8927
8928            Ok(())
8929        }
8930    }
8931
8932    impl InstanceIdEntry {
8933        #[inline(always)]
8934        fn max_ordinal_present(&self) -> u64 {
8935            if let Some(_) = self.moniker {
8936                return 3;
8937            }
8938            if let Some(_) = self.instance_id {
8939                return 1;
8940            }
8941            0
8942        }
8943    }
8944
8945    impl fidl::encoding::ValueTypeMarker for InstanceIdEntry {
8946        type Borrowed<'a> = &'a Self;
8947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8948            value
8949        }
8950    }
8951
8952    unsafe impl fidl::encoding::TypeMarker for InstanceIdEntry {
8953        type Owned = Self;
8954
8955        #[inline(always)]
8956        fn inline_align(_context: fidl::encoding::Context) -> usize {
8957            8
8958        }
8959
8960        #[inline(always)]
8961        fn inline_size(_context: fidl::encoding::Context) -> usize {
8962            16
8963        }
8964    }
8965
8966    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstanceIdEntry, D>
8967        for &InstanceIdEntry
8968    {
8969        unsafe fn encode(
8970            self,
8971            encoder: &mut fidl::encoding::Encoder<'_, D>,
8972            offset: usize,
8973            mut depth: fidl::encoding::Depth,
8974        ) -> fidl::Result<()> {
8975            encoder.debug_check_bounds::<InstanceIdEntry>(offset);
8976            // Vector header
8977            let max_ordinal: u64 = self.max_ordinal_present();
8978            encoder.write_num(max_ordinal, offset);
8979            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8980            // Calling encoder.out_of_line_offset(0) is not allowed.
8981            if max_ordinal == 0 {
8982                return Ok(());
8983            }
8984            depth.increment()?;
8985            let envelope_size = 8;
8986            let bytes_len = max_ordinal as usize * envelope_size;
8987            #[allow(unused_variables)]
8988            let offset = encoder.out_of_line_offset(bytes_len);
8989            let mut _prev_end_offset: usize = 0;
8990            if 1 > max_ordinal {
8991                return Ok(());
8992            }
8993
8994            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8995            // are envelope_size bytes.
8996            let cur_offset: usize = (1 - 1) * envelope_size;
8997
8998            // Zero reserved fields.
8999            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9000
9001            // Safety:
9002            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9003            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9004            //   envelope_size bytes, there is always sufficient room.
9005            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
9006                self.instance_id.as_ref().map(
9007                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
9008                ),
9009                encoder,
9010                offset + cur_offset,
9011                depth,
9012            )?;
9013
9014            _prev_end_offset = cur_offset + envelope_size;
9015            if 3 > max_ordinal {
9016                return Ok(());
9017            }
9018
9019            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9020            // are envelope_size bytes.
9021            let cur_offset: usize = (3 - 1) * envelope_size;
9022
9023            // Zero reserved fields.
9024            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9025
9026            // Safety:
9027            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9028            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9029            //   envelope_size bytes, there is always sufficient room.
9030            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
9031            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
9032            encoder, offset + cur_offset, depth
9033        )?;
9034
9035            _prev_end_offset = cur_offset + envelope_size;
9036
9037            Ok(())
9038        }
9039    }
9040
9041    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstanceIdEntry {
9042        #[inline(always)]
9043        fn new_empty() -> Self {
9044            Self::default()
9045        }
9046
9047        unsafe fn decode(
9048            &mut self,
9049            decoder: &mut fidl::encoding::Decoder<'_, D>,
9050            offset: usize,
9051            mut depth: fidl::encoding::Depth,
9052        ) -> fidl::Result<()> {
9053            decoder.debug_check_bounds::<Self>(offset);
9054            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9055                None => return Err(fidl::Error::NotNullable),
9056                Some(len) => len,
9057            };
9058            // Calling decoder.out_of_line_offset(0) is not allowed.
9059            if len == 0 {
9060                return Ok(());
9061            };
9062            depth.increment()?;
9063            let envelope_size = 8;
9064            let bytes_len = len * envelope_size;
9065            let offset = decoder.out_of_line_offset(bytes_len)?;
9066            // Decode the envelope for each type.
9067            let mut _next_ordinal_to_read = 0;
9068            let mut next_offset = offset;
9069            let end_offset = offset + bytes_len;
9070            _next_ordinal_to_read += 1;
9071            if next_offset >= end_offset {
9072                return Ok(());
9073            }
9074
9075            // Decode unknown envelopes for gaps in ordinals.
9076            while _next_ordinal_to_read < 1 {
9077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9078                _next_ordinal_to_read += 1;
9079                next_offset += envelope_size;
9080            }
9081
9082            let next_out_of_line = decoder.next_out_of_line();
9083            let handles_before = decoder.remaining_handles();
9084            if let Some((inlined, num_bytes, num_handles)) =
9085                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9086            {
9087                let member_inline_size =
9088                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
9089                        decoder.context,
9090                    );
9091                if inlined != (member_inline_size <= 4) {
9092                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9093                }
9094                let inner_offset;
9095                let mut inner_depth = depth.clone();
9096                if inlined {
9097                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9098                    inner_offset = next_offset;
9099                } else {
9100                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9101                    inner_depth.increment()?;
9102                }
9103                let val_ref = self
9104                    .instance_id
9105                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
9106                fidl::decode!(
9107                    fidl::encoding::BoundedString<64>,
9108                    D,
9109                    val_ref,
9110                    decoder,
9111                    inner_offset,
9112                    inner_depth
9113                )?;
9114                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9115                {
9116                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9117                }
9118                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9119                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9120                }
9121            }
9122
9123            next_offset += envelope_size;
9124            _next_ordinal_to_read += 1;
9125            if next_offset >= end_offset {
9126                return Ok(());
9127            }
9128
9129            // Decode unknown envelopes for gaps in ordinals.
9130            while _next_ordinal_to_read < 3 {
9131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9132                _next_ordinal_to_read += 1;
9133                next_offset += envelope_size;
9134            }
9135
9136            let next_out_of_line = decoder.next_out_of_line();
9137            let handles_before = decoder.remaining_handles();
9138            if let Some((inlined, num_bytes, num_handles)) =
9139                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9140            {
9141                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9142                if inlined != (member_inline_size <= 4) {
9143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9144                }
9145                let inner_offset;
9146                let mut inner_depth = depth.clone();
9147                if inlined {
9148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9149                    inner_offset = next_offset;
9150                } else {
9151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9152                    inner_depth.increment()?;
9153                }
9154                let val_ref = self.moniker.get_or_insert_with(|| {
9155                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
9156                });
9157                fidl::decode!(
9158                    fidl::encoding::BoundedString<4096>,
9159                    D,
9160                    val_ref,
9161                    decoder,
9162                    inner_offset,
9163                    inner_depth
9164                )?;
9165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9166                {
9167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9168                }
9169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9171                }
9172            }
9173
9174            next_offset += envelope_size;
9175
9176            // Decode the remaining unknown envelopes.
9177            while next_offset < end_offset {
9178                _next_ordinal_to_read += 1;
9179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9180                next_offset += envelope_size;
9181            }
9182
9183            Ok(())
9184        }
9185    }
9186
9187    impl JobPolicyAllowlists {
9188        #[inline(always)]
9189        fn max_ordinal_present(&self) -> u64 {
9190            if let Some(_) = self.create_raw_processes {
9191                return 3;
9192            }
9193            if let Some(_) = self.main_process_critical {
9194                return 2;
9195            }
9196            if let Some(_) = self.ambient_mark_vmo_exec {
9197                return 1;
9198            }
9199            0
9200        }
9201    }
9202
9203    impl fidl::encoding::ValueTypeMarker for JobPolicyAllowlists {
9204        type Borrowed<'a> = &'a Self;
9205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9206            value
9207        }
9208    }
9209
9210    unsafe impl fidl::encoding::TypeMarker for JobPolicyAllowlists {
9211        type Owned = Self;
9212
9213        #[inline(always)]
9214        fn inline_align(_context: fidl::encoding::Context) -> usize {
9215            8
9216        }
9217
9218        #[inline(always)]
9219        fn inline_size(_context: fidl::encoding::Context) -> usize {
9220            16
9221        }
9222    }
9223
9224    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JobPolicyAllowlists, D>
9225        for &JobPolicyAllowlists
9226    {
9227        unsafe fn encode(
9228            self,
9229            encoder: &mut fidl::encoding::Encoder<'_, D>,
9230            offset: usize,
9231            mut depth: fidl::encoding::Depth,
9232        ) -> fidl::Result<()> {
9233            encoder.debug_check_bounds::<JobPolicyAllowlists>(offset);
9234            // Vector header
9235            let max_ordinal: u64 = self.max_ordinal_present();
9236            encoder.write_num(max_ordinal, offset);
9237            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9238            // Calling encoder.out_of_line_offset(0) is not allowed.
9239            if max_ordinal == 0 {
9240                return Ok(());
9241            }
9242            depth.increment()?;
9243            let envelope_size = 8;
9244            let bytes_len = max_ordinal as usize * envelope_size;
9245            #[allow(unused_variables)]
9246            let offset = encoder.out_of_line_offset(bytes_len);
9247            let mut _prev_end_offset: usize = 0;
9248            if 1 > max_ordinal {
9249                return Ok(());
9250            }
9251
9252            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9253            // are envelope_size bytes.
9254            let cur_offset: usize = (1 - 1) * envelope_size;
9255
9256            // Zero reserved fields.
9257            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9258
9259            // Safety:
9260            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9261            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9262            //   envelope_size bytes, there is always sufficient room.
9263            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9264            self.ambient_mark_vmo_exec.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9265            encoder, offset + cur_offset, depth
9266        )?;
9267
9268            _prev_end_offset = cur_offset + envelope_size;
9269            if 2 > max_ordinal {
9270                return Ok(());
9271            }
9272
9273            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9274            // are envelope_size bytes.
9275            let cur_offset: usize = (2 - 1) * envelope_size;
9276
9277            // Zero reserved fields.
9278            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9279
9280            // Safety:
9281            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9282            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9283            //   envelope_size bytes, there is always sufficient room.
9284            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9285            self.main_process_critical.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9286            encoder, offset + cur_offset, depth
9287        )?;
9288
9289            _prev_end_offset = cur_offset + envelope_size;
9290            if 3 > max_ordinal {
9291                return Ok(());
9292            }
9293
9294            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9295            // are envelope_size bytes.
9296            let cur_offset: usize = (3 - 1) * envelope_size;
9297
9298            // Zero reserved fields.
9299            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9300
9301            // Safety:
9302            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9303            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9304            //   envelope_size bytes, there is always sufficient room.
9305            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9306            self.create_raw_processes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9307            encoder, offset + cur_offset, depth
9308        )?;
9309
9310            _prev_end_offset = cur_offset + envelope_size;
9311
9312            Ok(())
9313        }
9314    }
9315
9316    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JobPolicyAllowlists {
9317        #[inline(always)]
9318        fn new_empty() -> Self {
9319            Self::default()
9320        }
9321
9322        unsafe fn decode(
9323            &mut self,
9324            decoder: &mut fidl::encoding::Decoder<'_, D>,
9325            offset: usize,
9326            mut depth: fidl::encoding::Depth,
9327        ) -> fidl::Result<()> {
9328            decoder.debug_check_bounds::<Self>(offset);
9329            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9330                None => return Err(fidl::Error::NotNullable),
9331                Some(len) => len,
9332            };
9333            // Calling decoder.out_of_line_offset(0) is not allowed.
9334            if len == 0 {
9335                return Ok(());
9336            };
9337            depth.increment()?;
9338            let envelope_size = 8;
9339            let bytes_len = len * envelope_size;
9340            let offset = decoder.out_of_line_offset(bytes_len)?;
9341            // Decode the envelope for each type.
9342            let mut _next_ordinal_to_read = 0;
9343            let mut next_offset = offset;
9344            let end_offset = offset + bytes_len;
9345            _next_ordinal_to_read += 1;
9346            if next_offset >= end_offset {
9347                return Ok(());
9348            }
9349
9350            // Decode unknown envelopes for gaps in ordinals.
9351            while _next_ordinal_to_read < 1 {
9352                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9353                _next_ordinal_to_read += 1;
9354                next_offset += envelope_size;
9355            }
9356
9357            let next_out_of_line = decoder.next_out_of_line();
9358            let handles_before = decoder.remaining_handles();
9359            if let Some((inlined, num_bytes, num_handles)) =
9360                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9361            {
9362                let member_inline_size = <fidl::encoding::Vector<
9363                    fidl::encoding::BoundedString<4096>,
9364                    128,
9365                > as fidl::encoding::TypeMarker>::inline_size(
9366                    decoder.context
9367                );
9368                if inlined != (member_inline_size <= 4) {
9369                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9370                }
9371                let inner_offset;
9372                let mut inner_depth = depth.clone();
9373                if inlined {
9374                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9375                    inner_offset = next_offset;
9376                } else {
9377                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9378                    inner_depth.increment()?;
9379                }
9380                let val_ref = self.ambient_mark_vmo_exec.get_or_insert_with(|| {
9381                    fidl::new_empty!(
9382                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9383                        D
9384                    )
9385                });
9386                fidl::decode!(
9387                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9388                    D,
9389                    val_ref,
9390                    decoder,
9391                    inner_offset,
9392                    inner_depth
9393                )?;
9394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9395                {
9396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9397                }
9398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9400                }
9401            }
9402
9403            next_offset += envelope_size;
9404            _next_ordinal_to_read += 1;
9405            if next_offset >= end_offset {
9406                return Ok(());
9407            }
9408
9409            // Decode unknown envelopes for gaps in ordinals.
9410            while _next_ordinal_to_read < 2 {
9411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9412                _next_ordinal_to_read += 1;
9413                next_offset += envelope_size;
9414            }
9415
9416            let next_out_of_line = decoder.next_out_of_line();
9417            let handles_before = decoder.remaining_handles();
9418            if let Some((inlined, num_bytes, num_handles)) =
9419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9420            {
9421                let member_inline_size = <fidl::encoding::Vector<
9422                    fidl::encoding::BoundedString<4096>,
9423                    128,
9424                > as fidl::encoding::TypeMarker>::inline_size(
9425                    decoder.context
9426                );
9427                if inlined != (member_inline_size <= 4) {
9428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9429                }
9430                let inner_offset;
9431                let mut inner_depth = depth.clone();
9432                if inlined {
9433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9434                    inner_offset = next_offset;
9435                } else {
9436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9437                    inner_depth.increment()?;
9438                }
9439                let val_ref = self.main_process_critical.get_or_insert_with(|| {
9440                    fidl::new_empty!(
9441                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9442                        D
9443                    )
9444                });
9445                fidl::decode!(
9446                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9447                    D,
9448                    val_ref,
9449                    decoder,
9450                    inner_offset,
9451                    inner_depth
9452                )?;
9453                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9454                {
9455                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9456                }
9457                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9458                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9459                }
9460            }
9461
9462            next_offset += envelope_size;
9463            _next_ordinal_to_read += 1;
9464            if next_offset >= end_offset {
9465                return Ok(());
9466            }
9467
9468            // Decode unknown envelopes for gaps in ordinals.
9469            while _next_ordinal_to_read < 3 {
9470                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9471                _next_ordinal_to_read += 1;
9472                next_offset += envelope_size;
9473            }
9474
9475            let next_out_of_line = decoder.next_out_of_line();
9476            let handles_before = decoder.remaining_handles();
9477            if let Some((inlined, num_bytes, num_handles)) =
9478                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9479            {
9480                let member_inline_size = <fidl::encoding::Vector<
9481                    fidl::encoding::BoundedString<4096>,
9482                    128,
9483                > as fidl::encoding::TypeMarker>::inline_size(
9484                    decoder.context
9485                );
9486                if inlined != (member_inline_size <= 4) {
9487                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9488                }
9489                let inner_offset;
9490                let mut inner_depth = depth.clone();
9491                if inlined {
9492                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9493                    inner_offset = next_offset;
9494                } else {
9495                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9496                    inner_depth.increment()?;
9497                }
9498                let val_ref = self.create_raw_processes.get_or_insert_with(|| {
9499                    fidl::new_empty!(
9500                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9501                        D
9502                    )
9503                });
9504                fidl::decode!(
9505                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9506                    D,
9507                    val_ref,
9508                    decoder,
9509                    inner_offset,
9510                    inner_depth
9511                )?;
9512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9513                {
9514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9515                }
9516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9518                }
9519            }
9520
9521            next_offset += envelope_size;
9522
9523            // Decode the remaining unknown envelopes.
9524            while next_offset < end_offset {
9525                _next_ordinal_to_read += 1;
9526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9527                next_offset += envelope_size;
9528            }
9529
9530            Ok(())
9531        }
9532    }
9533
9534    impl Namespace {
9535        #[inline(always)]
9536        fn max_ordinal_present(&self) -> u64 {
9537            if let Some(_) = self.capability {
9538                return 1;
9539            }
9540            0
9541        }
9542    }
9543
9544    impl fidl::encoding::ValueTypeMarker for Namespace {
9545        type Borrowed<'a> = &'a Self;
9546        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9547            value
9548        }
9549    }
9550
9551    unsafe impl fidl::encoding::TypeMarker for Namespace {
9552        type Owned = Self;
9553
9554        #[inline(always)]
9555        fn inline_align(_context: fidl::encoding::Context) -> usize {
9556            8
9557        }
9558
9559        #[inline(always)]
9560        fn inline_size(_context: fidl::encoding::Context) -> usize {
9561            16
9562        }
9563    }
9564
9565    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Namespace, D>
9566        for &Namespace
9567    {
9568        unsafe fn encode(
9569            self,
9570            encoder: &mut fidl::encoding::Encoder<'_, D>,
9571            offset: usize,
9572            mut depth: fidl::encoding::Depth,
9573        ) -> fidl::Result<()> {
9574            encoder.debug_check_bounds::<Namespace>(offset);
9575            // Vector header
9576            let max_ordinal: u64 = self.max_ordinal_present();
9577            encoder.write_num(max_ordinal, offset);
9578            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9579            // Calling encoder.out_of_line_offset(0) is not allowed.
9580            if max_ordinal == 0 {
9581                return Ok(());
9582            }
9583            depth.increment()?;
9584            let envelope_size = 8;
9585            let bytes_len = max_ordinal as usize * envelope_size;
9586            #[allow(unused_variables)]
9587            let offset = encoder.out_of_line_offset(bytes_len);
9588            let mut _prev_end_offset: usize = 0;
9589            if 1 > max_ordinal {
9590                return Ok(());
9591            }
9592
9593            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9594            // are envelope_size bytes.
9595            let cur_offset: usize = (1 - 1) * envelope_size;
9596
9597            // Zero reserved fields.
9598            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9599
9600            // Safety:
9601            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9602            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9603            //   envelope_size bytes, there is always sufficient room.
9604            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
9605                self.capability
9606                    .as_ref()
9607                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
9608                encoder,
9609                offset + cur_offset,
9610                depth,
9611            )?;
9612
9613            _prev_end_offset = cur_offset + envelope_size;
9614
9615            Ok(())
9616        }
9617    }
9618
9619    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Namespace {
9620        #[inline(always)]
9621        fn new_empty() -> Self {
9622            Self::default()
9623        }
9624
9625        unsafe fn decode(
9626            &mut self,
9627            decoder: &mut fidl::encoding::Decoder<'_, D>,
9628            offset: usize,
9629            mut depth: fidl::encoding::Depth,
9630        ) -> fidl::Result<()> {
9631            decoder.debug_check_bounds::<Self>(offset);
9632            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9633                None => return Err(fidl::Error::NotNullable),
9634                Some(len) => len,
9635            };
9636            // Calling decoder.out_of_line_offset(0) is not allowed.
9637            if len == 0 {
9638                return Ok(());
9639            };
9640            depth.increment()?;
9641            let envelope_size = 8;
9642            let bytes_len = len * envelope_size;
9643            let offset = decoder.out_of_line_offset(bytes_len)?;
9644            // Decode the envelope for each type.
9645            let mut _next_ordinal_to_read = 0;
9646            let mut next_offset = offset;
9647            let end_offset = offset + bytes_len;
9648            _next_ordinal_to_read += 1;
9649            if next_offset >= end_offset {
9650                return Ok(());
9651            }
9652
9653            // Decode unknown envelopes for gaps in ordinals.
9654            while _next_ordinal_to_read < 1 {
9655                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9656                _next_ordinal_to_read += 1;
9657                next_offset += envelope_size;
9658            }
9659
9660            let next_out_of_line = decoder.next_out_of_line();
9661            let handles_before = decoder.remaining_handles();
9662            if let Some((inlined, num_bytes, num_handles)) =
9663                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9664            {
9665                let member_inline_size =
9666                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
9667                        decoder.context,
9668                    );
9669                if inlined != (member_inline_size <= 4) {
9670                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9671                }
9672                let inner_offset;
9673                let mut inner_depth = depth.clone();
9674                if inlined {
9675                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9676                    inner_offset = next_offset;
9677                } else {
9678                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9679                    inner_depth.increment()?;
9680                }
9681                let val_ref =
9682                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
9683                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
9684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9685                {
9686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9687                }
9688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9690                }
9691            }
9692
9693            next_offset += envelope_size;
9694
9695            // Decode the remaining unknown envelopes.
9696            while next_offset < end_offset {
9697                _next_ordinal_to_read += 1;
9698                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9699                next_offset += envelope_size;
9700            }
9701
9702            Ok(())
9703        }
9704    }
9705
9706    impl SecurityPolicy {
9707        #[inline(always)]
9708        fn max_ordinal_present(&self) -> u64 {
9709            if let Some(_) = self.child_policy {
9710                return 4;
9711            }
9712            if let Some(_) = self.debug_registration_policy {
9713                return 3;
9714            }
9715            if let Some(_) = self.capability_policy {
9716                return 2;
9717            }
9718            if let Some(_) = self.job_policy {
9719                return 1;
9720            }
9721            0
9722        }
9723    }
9724
9725    impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
9726        type Borrowed<'a> = &'a Self;
9727        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9728            value
9729        }
9730    }
9731
9732    unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
9733        type Owned = Self;
9734
9735        #[inline(always)]
9736        fn inline_align(_context: fidl::encoding::Context) -> usize {
9737            8
9738        }
9739
9740        #[inline(always)]
9741        fn inline_size(_context: fidl::encoding::Context) -> usize {
9742            16
9743        }
9744    }
9745
9746    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
9747        for &SecurityPolicy
9748    {
9749        unsafe fn encode(
9750            self,
9751            encoder: &mut fidl::encoding::Encoder<'_, D>,
9752            offset: usize,
9753            mut depth: fidl::encoding::Depth,
9754        ) -> fidl::Result<()> {
9755            encoder.debug_check_bounds::<SecurityPolicy>(offset);
9756            // Vector header
9757            let max_ordinal: u64 = self.max_ordinal_present();
9758            encoder.write_num(max_ordinal, offset);
9759            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9760            // Calling encoder.out_of_line_offset(0) is not allowed.
9761            if max_ordinal == 0 {
9762                return Ok(());
9763            }
9764            depth.increment()?;
9765            let envelope_size = 8;
9766            let bytes_len = max_ordinal as usize * envelope_size;
9767            #[allow(unused_variables)]
9768            let offset = encoder.out_of_line_offset(bytes_len);
9769            let mut _prev_end_offset: usize = 0;
9770            if 1 > max_ordinal {
9771                return Ok(());
9772            }
9773
9774            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9775            // are envelope_size bytes.
9776            let cur_offset: usize = (1 - 1) * envelope_size;
9777
9778            // Zero reserved fields.
9779            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9780
9781            // Safety:
9782            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9783            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9784            //   envelope_size bytes, there is always sufficient room.
9785            fidl::encoding::encode_in_envelope_optional::<JobPolicyAllowlists, D>(
9786                self.job_policy
9787                    .as_ref()
9788                    .map(<JobPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9789                encoder,
9790                offset + cur_offset,
9791                depth,
9792            )?;
9793
9794            _prev_end_offset = cur_offset + envelope_size;
9795            if 2 > max_ordinal {
9796                return Ok(());
9797            }
9798
9799            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9800            // are envelope_size bytes.
9801            let cur_offset: usize = (2 - 1) * envelope_size;
9802
9803            // Zero reserved fields.
9804            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9805
9806            // Safety:
9807            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9808            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9809            //   envelope_size bytes, there is always sufficient room.
9810            fidl::encoding::encode_in_envelope_optional::<CapabilityPolicyAllowlists, D>(
9811                self.capability_policy
9812                    .as_ref()
9813                    .map(<CapabilityPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9814                encoder,
9815                offset + cur_offset,
9816                depth,
9817            )?;
9818
9819            _prev_end_offset = cur_offset + envelope_size;
9820            if 3 > max_ordinal {
9821                return Ok(());
9822            }
9823
9824            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9825            // are envelope_size bytes.
9826            let cur_offset: usize = (3 - 1) * envelope_size;
9827
9828            // Zero reserved fields.
9829            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9830
9831            // Safety:
9832            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9833            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9834            //   envelope_size bytes, there is always sufficient room.
9835            fidl::encoding::encode_in_envelope_optional::<DebugRegistrationPolicyAllowlists, D>(
9836                self.debug_registration_policy.as_ref().map(
9837                    <DebugRegistrationPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow,
9838                ),
9839                encoder,
9840                offset + cur_offset,
9841                depth,
9842            )?;
9843
9844            _prev_end_offset = cur_offset + envelope_size;
9845            if 4 > max_ordinal {
9846                return Ok(());
9847            }
9848
9849            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9850            // are envelope_size bytes.
9851            let cur_offset: usize = (4 - 1) * envelope_size;
9852
9853            // Zero reserved fields.
9854            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9855
9856            // Safety:
9857            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9858            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9859            //   envelope_size bytes, there is always sufficient room.
9860            fidl::encoding::encode_in_envelope_optional::<ChildPolicyAllowlists, D>(
9861                self.child_policy
9862                    .as_ref()
9863                    .map(<ChildPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9864                encoder,
9865                offset + cur_offset,
9866                depth,
9867            )?;
9868
9869            _prev_end_offset = cur_offset + envelope_size;
9870
9871            Ok(())
9872        }
9873    }
9874
9875    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
9876        #[inline(always)]
9877        fn new_empty() -> Self {
9878            Self::default()
9879        }
9880
9881        unsafe fn decode(
9882            &mut self,
9883            decoder: &mut fidl::encoding::Decoder<'_, D>,
9884            offset: usize,
9885            mut depth: fidl::encoding::Depth,
9886        ) -> fidl::Result<()> {
9887            decoder.debug_check_bounds::<Self>(offset);
9888            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9889                None => return Err(fidl::Error::NotNullable),
9890                Some(len) => len,
9891            };
9892            // Calling decoder.out_of_line_offset(0) is not allowed.
9893            if len == 0 {
9894                return Ok(());
9895            };
9896            depth.increment()?;
9897            let envelope_size = 8;
9898            let bytes_len = len * envelope_size;
9899            let offset = decoder.out_of_line_offset(bytes_len)?;
9900            // Decode the envelope for each type.
9901            let mut _next_ordinal_to_read = 0;
9902            let mut next_offset = offset;
9903            let end_offset = offset + bytes_len;
9904            _next_ordinal_to_read += 1;
9905            if next_offset >= end_offset {
9906                return Ok(());
9907            }
9908
9909            // Decode unknown envelopes for gaps in ordinals.
9910            while _next_ordinal_to_read < 1 {
9911                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9912                _next_ordinal_to_read += 1;
9913                next_offset += envelope_size;
9914            }
9915
9916            let next_out_of_line = decoder.next_out_of_line();
9917            let handles_before = decoder.remaining_handles();
9918            if let Some((inlined, num_bytes, num_handles)) =
9919                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9920            {
9921                let member_inline_size =
9922                    <JobPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9923                        decoder.context,
9924                    );
9925                if inlined != (member_inline_size <= 4) {
9926                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9927                }
9928                let inner_offset;
9929                let mut inner_depth = depth.clone();
9930                if inlined {
9931                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9932                    inner_offset = next_offset;
9933                } else {
9934                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9935                    inner_depth.increment()?;
9936                }
9937                let val_ref =
9938                    self.job_policy.get_or_insert_with(|| fidl::new_empty!(JobPolicyAllowlists, D));
9939                fidl::decode!(JobPolicyAllowlists, D, val_ref, decoder, inner_offset, inner_depth)?;
9940                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9941                {
9942                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9943                }
9944                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9945                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9946                }
9947            }
9948
9949            next_offset += envelope_size;
9950            _next_ordinal_to_read += 1;
9951            if next_offset >= end_offset {
9952                return Ok(());
9953            }
9954
9955            // Decode unknown envelopes for gaps in ordinals.
9956            while _next_ordinal_to_read < 2 {
9957                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9958                _next_ordinal_to_read += 1;
9959                next_offset += envelope_size;
9960            }
9961
9962            let next_out_of_line = decoder.next_out_of_line();
9963            let handles_before = decoder.remaining_handles();
9964            if let Some((inlined, num_bytes, num_handles)) =
9965                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9966            {
9967                let member_inline_size =
9968                    <CapabilityPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
9969                        decoder.context,
9970                    );
9971                if inlined != (member_inline_size <= 4) {
9972                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9973                }
9974                let inner_offset;
9975                let mut inner_depth = depth.clone();
9976                if inlined {
9977                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9978                    inner_offset = next_offset;
9979                } else {
9980                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9981                    inner_depth.increment()?;
9982                }
9983                let val_ref = self
9984                    .capability_policy
9985                    .get_or_insert_with(|| fidl::new_empty!(CapabilityPolicyAllowlists, D));
9986                fidl::decode!(
9987                    CapabilityPolicyAllowlists,
9988                    D,
9989                    val_ref,
9990                    decoder,
9991                    inner_offset,
9992                    inner_depth
9993                )?;
9994                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9995                {
9996                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9997                }
9998                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9999                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10000                }
10001            }
10002
10003            next_offset += envelope_size;
10004            _next_ordinal_to_read += 1;
10005            if next_offset >= end_offset {
10006                return Ok(());
10007            }
10008
10009            // Decode unknown envelopes for gaps in ordinals.
10010            while _next_ordinal_to_read < 3 {
10011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10012                _next_ordinal_to_read += 1;
10013                next_offset += envelope_size;
10014            }
10015
10016            let next_out_of_line = decoder.next_out_of_line();
10017            let handles_before = decoder.remaining_handles();
10018            if let Some((inlined, num_bytes, num_handles)) =
10019                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10020            {
10021                let member_inline_size =
10022                    <DebugRegistrationPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10023                        decoder.context,
10024                    );
10025                if inlined != (member_inline_size <= 4) {
10026                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10027                }
10028                let inner_offset;
10029                let mut inner_depth = depth.clone();
10030                if inlined {
10031                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10032                    inner_offset = next_offset;
10033                } else {
10034                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10035                    inner_depth.increment()?;
10036                }
10037                let val_ref = self
10038                    .debug_registration_policy
10039                    .get_or_insert_with(|| fidl::new_empty!(DebugRegistrationPolicyAllowlists, D));
10040                fidl::decode!(
10041                    DebugRegistrationPolicyAllowlists,
10042                    D,
10043                    val_ref,
10044                    decoder,
10045                    inner_offset,
10046                    inner_depth
10047                )?;
10048                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10049                {
10050                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10051                }
10052                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10053                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10054                }
10055            }
10056
10057            next_offset += envelope_size;
10058            _next_ordinal_to_read += 1;
10059            if next_offset >= end_offset {
10060                return Ok(());
10061            }
10062
10063            // Decode unknown envelopes for gaps in ordinals.
10064            while _next_ordinal_to_read < 4 {
10065                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10066                _next_ordinal_to_read += 1;
10067                next_offset += envelope_size;
10068            }
10069
10070            let next_out_of_line = decoder.next_out_of_line();
10071            let handles_before = decoder.remaining_handles();
10072            if let Some((inlined, num_bytes, num_handles)) =
10073                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10074            {
10075                let member_inline_size =
10076                    <ChildPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10077                        decoder.context,
10078                    );
10079                if inlined != (member_inline_size <= 4) {
10080                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10081                }
10082                let inner_offset;
10083                let mut inner_depth = depth.clone();
10084                if inlined {
10085                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10086                    inner_offset = next_offset;
10087                } else {
10088                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10089                    inner_depth.increment()?;
10090                }
10091                let val_ref = self
10092                    .child_policy
10093                    .get_or_insert_with(|| fidl::new_empty!(ChildPolicyAllowlists, D));
10094                fidl::decode!(
10095                    ChildPolicyAllowlists,
10096                    D,
10097                    val_ref,
10098                    decoder,
10099                    inner_offset,
10100                    inner_depth
10101                )?;
10102                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10103                {
10104                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10105                }
10106                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10107                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10108                }
10109            }
10110
10111            next_offset += envelope_size;
10112
10113            // Decode the remaining unknown envelopes.
10114            while next_offset < end_offset {
10115                _next_ordinal_to_read += 1;
10116                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10117                next_offset += envelope_size;
10118            }
10119
10120            Ok(())
10121        }
10122    }
10123
10124    impl Sources {
10125        #[inline(always)]
10126        fn max_ordinal_present(&self) -> u64 {
10127            if let Some(_) = self.capability_type {
10128                return 7;
10129            }
10130            if let Some(_) = self.component {
10131                return 6;
10132            }
10133            if let Some(_) = self.namespace {
10134                return 5;
10135            }
10136            if let Some(_) = self.collection {
10137                return 4;
10138            }
10139            if let Some(_) = self.capability {
10140                return 3;
10141            }
10142            if let Some(_) = self.builtin {
10143                return 2;
10144            }
10145            if let Some(_) = self.framework {
10146                return 1;
10147            }
10148            0
10149        }
10150    }
10151
10152    impl fidl::encoding::ValueTypeMarker for Sources {
10153        type Borrowed<'a> = &'a Self;
10154        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10155            value
10156        }
10157    }
10158
10159    unsafe impl fidl::encoding::TypeMarker for Sources {
10160        type Owned = Self;
10161
10162        #[inline(always)]
10163        fn inline_align(_context: fidl::encoding::Context) -> usize {
10164            8
10165        }
10166
10167        #[inline(always)]
10168        fn inline_size(_context: fidl::encoding::Context) -> usize {
10169            16
10170        }
10171    }
10172
10173    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Sources, D> for &Sources {
10174        unsafe fn encode(
10175            self,
10176            encoder: &mut fidl::encoding::Encoder<'_, D>,
10177            offset: usize,
10178            mut depth: fidl::encoding::Depth,
10179        ) -> fidl::Result<()> {
10180            encoder.debug_check_bounds::<Sources>(offset);
10181            // Vector header
10182            let max_ordinal: u64 = self.max_ordinal_present();
10183            encoder.write_num(max_ordinal, offset);
10184            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10185            // Calling encoder.out_of_line_offset(0) is not allowed.
10186            if max_ordinal == 0 {
10187                return Ok(());
10188            }
10189            depth.increment()?;
10190            let envelope_size = 8;
10191            let bytes_len = max_ordinal as usize * envelope_size;
10192            #[allow(unused_variables)]
10193            let offset = encoder.out_of_line_offset(bytes_len);
10194            let mut _prev_end_offset: usize = 0;
10195            if 1 > max_ordinal {
10196                return Ok(());
10197            }
10198
10199            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10200            // are envelope_size bytes.
10201            let cur_offset: usize = (1 - 1) * envelope_size;
10202
10203            // Zero reserved fields.
10204            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10205
10206            // Safety:
10207            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10208            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10209            //   envelope_size bytes, there is always sufficient room.
10210            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10211                self.framework.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10212                encoder,
10213                offset + cur_offset,
10214                depth,
10215            )?;
10216
10217            _prev_end_offset = cur_offset + envelope_size;
10218            if 2 > max_ordinal {
10219                return Ok(());
10220            }
10221
10222            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10223            // are envelope_size bytes.
10224            let cur_offset: usize = (2 - 1) * envelope_size;
10225
10226            // Zero reserved fields.
10227            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10228
10229            // Safety:
10230            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10231            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10232            //   envelope_size bytes, there is always sufficient room.
10233            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10234                self.builtin.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10235                encoder,
10236                offset + cur_offset,
10237                depth,
10238            )?;
10239
10240            _prev_end_offset = cur_offset + envelope_size;
10241            if 3 > max_ordinal {
10242                return Ok(());
10243            }
10244
10245            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10246            // are envelope_size bytes.
10247            let cur_offset: usize = (3 - 1) * envelope_size;
10248
10249            // Zero reserved fields.
10250            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10251
10252            // Safety:
10253            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10254            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10255            //   envelope_size bytes, there is always sufficient room.
10256            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10257                self.capability.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10258                encoder,
10259                offset + cur_offset,
10260                depth,
10261            )?;
10262
10263            _prev_end_offset = cur_offset + envelope_size;
10264            if 4 > max_ordinal {
10265                return Ok(());
10266            }
10267
10268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10269            // are envelope_size bytes.
10270            let cur_offset: usize = (4 - 1) * envelope_size;
10271
10272            // Zero reserved fields.
10273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10274
10275            // Safety:
10276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10278            //   envelope_size bytes, there is always sufficient room.
10279            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10280                self.collection.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10281                encoder,
10282                offset + cur_offset,
10283                depth,
10284            )?;
10285
10286            _prev_end_offset = cur_offset + envelope_size;
10287            if 5 > max_ordinal {
10288                return Ok(());
10289            }
10290
10291            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10292            // are envelope_size bytes.
10293            let cur_offset: usize = (5 - 1) * envelope_size;
10294
10295            // Zero reserved fields.
10296            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10297
10298            // Safety:
10299            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10300            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10301            //   envelope_size bytes, there is always sufficient room.
10302            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10303                self.namespace.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10304                encoder,
10305                offset + cur_offset,
10306                depth,
10307            )?;
10308
10309            _prev_end_offset = cur_offset + envelope_size;
10310            if 6 > max_ordinal {
10311                return Ok(());
10312            }
10313
10314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10315            // are envelope_size bytes.
10316            let cur_offset: usize = (6 - 1) * envelope_size;
10317
10318            // Zero reserved fields.
10319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10320
10321            // Safety:
10322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10324            //   envelope_size bytes, there is always sufficient room.
10325            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10326                self.component.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10327                encoder,
10328                offset + cur_offset,
10329                depth,
10330            )?;
10331
10332            _prev_end_offset = cur_offset + envelope_size;
10333            if 7 > max_ordinal {
10334                return Ok(());
10335            }
10336
10337            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10338            // are envelope_size bytes.
10339            let cur_offset: usize = (7 - 1) * envelope_size;
10340
10341            // Zero reserved fields.
10342            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10343
10344            // Safety:
10345            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10346            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10347            //   envelope_size bytes, there is always sufficient room.
10348            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10349                self.capability_type.as_ref().map(
10350                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10351                ),
10352                encoder,
10353                offset + cur_offset,
10354                depth,
10355            )?;
10356
10357            _prev_end_offset = cur_offset + envelope_size;
10358
10359            Ok(())
10360        }
10361    }
10362
10363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Sources {
10364        #[inline(always)]
10365        fn new_empty() -> Self {
10366            Self::default()
10367        }
10368
10369        unsafe fn decode(
10370            &mut self,
10371            decoder: &mut fidl::encoding::Decoder<'_, D>,
10372            offset: usize,
10373            mut depth: fidl::encoding::Depth,
10374        ) -> fidl::Result<()> {
10375            decoder.debug_check_bounds::<Self>(offset);
10376            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10377                None => return Err(fidl::Error::NotNullable),
10378                Some(len) => len,
10379            };
10380            // Calling decoder.out_of_line_offset(0) is not allowed.
10381            if len == 0 {
10382                return Ok(());
10383            };
10384            depth.increment()?;
10385            let envelope_size = 8;
10386            let bytes_len = len * envelope_size;
10387            let offset = decoder.out_of_line_offset(bytes_len)?;
10388            // Decode the envelope for each type.
10389            let mut _next_ordinal_to_read = 0;
10390            let mut next_offset = offset;
10391            let end_offset = offset + bytes_len;
10392            _next_ordinal_to_read += 1;
10393            if next_offset >= end_offset {
10394                return Ok(());
10395            }
10396
10397            // Decode unknown envelopes for gaps in ordinals.
10398            while _next_ordinal_to_read < 1 {
10399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10400                _next_ordinal_to_read += 1;
10401                next_offset += envelope_size;
10402            }
10403
10404            let next_out_of_line = decoder.next_out_of_line();
10405            let handles_before = decoder.remaining_handles();
10406            if let Some((inlined, num_bytes, num_handles)) =
10407                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10408            {
10409                let member_inline_size =
10410                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10411                if inlined != (member_inline_size <= 4) {
10412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10413                }
10414                let inner_offset;
10415                let mut inner_depth = depth.clone();
10416                if inlined {
10417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10418                    inner_offset = next_offset;
10419                } else {
10420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10421                    inner_depth.increment()?;
10422                }
10423                let val_ref = self.framework.get_or_insert_with(|| fidl::new_empty!(bool, D));
10424                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10425                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10426                {
10427                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10428                }
10429                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10430                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10431                }
10432            }
10433
10434            next_offset += envelope_size;
10435            _next_ordinal_to_read += 1;
10436            if next_offset >= end_offset {
10437                return Ok(());
10438            }
10439
10440            // Decode unknown envelopes for gaps in ordinals.
10441            while _next_ordinal_to_read < 2 {
10442                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10443                _next_ordinal_to_read += 1;
10444                next_offset += envelope_size;
10445            }
10446
10447            let next_out_of_line = decoder.next_out_of_line();
10448            let handles_before = decoder.remaining_handles();
10449            if let Some((inlined, num_bytes, num_handles)) =
10450                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10451            {
10452                let member_inline_size =
10453                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10454                if inlined != (member_inline_size <= 4) {
10455                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10456                }
10457                let inner_offset;
10458                let mut inner_depth = depth.clone();
10459                if inlined {
10460                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10461                    inner_offset = next_offset;
10462                } else {
10463                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10464                    inner_depth.increment()?;
10465                }
10466                let val_ref = self.builtin.get_or_insert_with(|| fidl::new_empty!(bool, D));
10467                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10468                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10469                {
10470                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10471                }
10472                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10473                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10474                }
10475            }
10476
10477            next_offset += envelope_size;
10478            _next_ordinal_to_read += 1;
10479            if next_offset >= end_offset {
10480                return Ok(());
10481            }
10482
10483            // Decode unknown envelopes for gaps in ordinals.
10484            while _next_ordinal_to_read < 3 {
10485                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10486                _next_ordinal_to_read += 1;
10487                next_offset += envelope_size;
10488            }
10489
10490            let next_out_of_line = decoder.next_out_of_line();
10491            let handles_before = decoder.remaining_handles();
10492            if let Some((inlined, num_bytes, num_handles)) =
10493                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10494            {
10495                let member_inline_size =
10496                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10497                if inlined != (member_inline_size <= 4) {
10498                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10499                }
10500                let inner_offset;
10501                let mut inner_depth = depth.clone();
10502                if inlined {
10503                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10504                    inner_offset = next_offset;
10505                } else {
10506                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10507                    inner_depth.increment()?;
10508                }
10509                let val_ref = self.capability.get_or_insert_with(|| fidl::new_empty!(bool, D));
10510                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10511                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10512                {
10513                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10514                }
10515                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10516                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10517                }
10518            }
10519
10520            next_offset += envelope_size;
10521            _next_ordinal_to_read += 1;
10522            if next_offset >= end_offset {
10523                return Ok(());
10524            }
10525
10526            // Decode unknown envelopes for gaps in ordinals.
10527            while _next_ordinal_to_read < 4 {
10528                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10529                _next_ordinal_to_read += 1;
10530                next_offset += envelope_size;
10531            }
10532
10533            let next_out_of_line = decoder.next_out_of_line();
10534            let handles_before = decoder.remaining_handles();
10535            if let Some((inlined, num_bytes, num_handles)) =
10536                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10537            {
10538                let member_inline_size =
10539                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10540                if inlined != (member_inline_size <= 4) {
10541                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10542                }
10543                let inner_offset;
10544                let mut inner_depth = depth.clone();
10545                if inlined {
10546                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10547                    inner_offset = next_offset;
10548                } else {
10549                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10550                    inner_depth.increment()?;
10551                }
10552                let val_ref = self.collection.get_or_insert_with(|| fidl::new_empty!(bool, D));
10553                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10554                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10555                {
10556                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10557                }
10558                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10559                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10560                }
10561            }
10562
10563            next_offset += envelope_size;
10564            _next_ordinal_to_read += 1;
10565            if next_offset >= end_offset {
10566                return Ok(());
10567            }
10568
10569            // Decode unknown envelopes for gaps in ordinals.
10570            while _next_ordinal_to_read < 5 {
10571                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10572                _next_ordinal_to_read += 1;
10573                next_offset += envelope_size;
10574            }
10575
10576            let next_out_of_line = decoder.next_out_of_line();
10577            let handles_before = decoder.remaining_handles();
10578            if let Some((inlined, num_bytes, num_handles)) =
10579                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10580            {
10581                let member_inline_size =
10582                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10583                if inlined != (member_inline_size <= 4) {
10584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10585                }
10586                let inner_offset;
10587                let mut inner_depth = depth.clone();
10588                if inlined {
10589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10590                    inner_offset = next_offset;
10591                } else {
10592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10593                    inner_depth.increment()?;
10594                }
10595                let val_ref = self.namespace.get_or_insert_with(|| fidl::new_empty!(bool, D));
10596                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10597                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10598                {
10599                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10600                }
10601                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10602                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10603                }
10604            }
10605
10606            next_offset += envelope_size;
10607            _next_ordinal_to_read += 1;
10608            if next_offset >= end_offset {
10609                return Ok(());
10610            }
10611
10612            // Decode unknown envelopes for gaps in ordinals.
10613            while _next_ordinal_to_read < 6 {
10614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10615                _next_ordinal_to_read += 1;
10616                next_offset += envelope_size;
10617            }
10618
10619            let next_out_of_line = decoder.next_out_of_line();
10620            let handles_before = decoder.remaining_handles();
10621            if let Some((inlined, num_bytes, num_handles)) =
10622                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10623            {
10624                let member_inline_size =
10625                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10626                if inlined != (member_inline_size <= 4) {
10627                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10628                }
10629                let inner_offset;
10630                let mut inner_depth = depth.clone();
10631                if inlined {
10632                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10633                    inner_offset = next_offset;
10634                } else {
10635                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10636                    inner_depth.increment()?;
10637                }
10638                let val_ref = self.component.get_or_insert_with(|| fidl::new_empty!(bool, D));
10639                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10640                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10641                {
10642                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10643                }
10644                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10645                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10646                }
10647            }
10648
10649            next_offset += envelope_size;
10650            _next_ordinal_to_read += 1;
10651            if next_offset >= end_offset {
10652                return Ok(());
10653            }
10654
10655            // Decode unknown envelopes for gaps in ordinals.
10656            while _next_ordinal_to_read < 7 {
10657                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10658                _next_ordinal_to_read += 1;
10659                next_offset += envelope_size;
10660            }
10661
10662            let next_out_of_line = decoder.next_out_of_line();
10663            let handles_before = decoder.remaining_handles();
10664            if let Some((inlined, num_bytes, num_handles)) =
10665                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10666            {
10667                let member_inline_size =
10668                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10669                        decoder.context,
10670                    );
10671                if inlined != (member_inline_size <= 4) {
10672                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10673                }
10674                let inner_offset;
10675                let mut inner_depth = depth.clone();
10676                if inlined {
10677                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10678                    inner_offset = next_offset;
10679                } else {
10680                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10681                    inner_depth.increment()?;
10682                }
10683                let val_ref = self
10684                    .capability_type
10685                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10686                fidl::decode!(
10687                    fidl::encoding::BoundedString<100>,
10688                    D,
10689                    val_ref,
10690                    decoder,
10691                    inner_offset,
10692                    inner_depth
10693                )?;
10694                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10695                {
10696                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10697                }
10698                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10699                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10700                }
10701            }
10702
10703            next_offset += envelope_size;
10704
10705            // Decode the remaining unknown envelopes.
10706            while next_offset < end_offset {
10707                _next_ordinal_to_read += 1;
10708                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10709                next_offset += envelope_size;
10710            }
10711
10712            Ok(())
10713        }
10714    }
10715
10716    impl Void {
10717        #[inline(always)]
10718        fn max_ordinal_present(&self) -> u64 {
10719            if let Some(_) = self.moniker {
10720                return 2;
10721            }
10722            if let Some(_) = self.capability {
10723                return 1;
10724            }
10725            0
10726        }
10727    }
10728
10729    impl fidl::encoding::ValueTypeMarker for Void {
10730        type Borrowed<'a> = &'a Self;
10731        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10732            value
10733        }
10734    }
10735
10736    unsafe impl fidl::encoding::TypeMarker for Void {
10737        type Owned = Self;
10738
10739        #[inline(always)]
10740        fn inline_align(_context: fidl::encoding::Context) -> usize {
10741            8
10742        }
10743
10744        #[inline(always)]
10745        fn inline_size(_context: fidl::encoding::Context) -> usize {
10746            16
10747        }
10748    }
10749
10750    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Void, D> for &Void {
10751        unsafe fn encode(
10752            self,
10753            encoder: &mut fidl::encoding::Encoder<'_, D>,
10754            offset: usize,
10755            mut depth: fidl::encoding::Depth,
10756        ) -> fidl::Result<()> {
10757            encoder.debug_check_bounds::<Void>(offset);
10758            // Vector header
10759            let max_ordinal: u64 = self.max_ordinal_present();
10760            encoder.write_num(max_ordinal, offset);
10761            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10762            // Calling encoder.out_of_line_offset(0) is not allowed.
10763            if max_ordinal == 0 {
10764                return Ok(());
10765            }
10766            depth.increment()?;
10767            let envelope_size = 8;
10768            let bytes_len = max_ordinal as usize * envelope_size;
10769            #[allow(unused_variables)]
10770            let offset = encoder.out_of_line_offset(bytes_len);
10771            let mut _prev_end_offset: usize = 0;
10772            if 1 > max_ordinal {
10773                return Ok(());
10774            }
10775
10776            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10777            // are envelope_size bytes.
10778            let cur_offset: usize = (1 - 1) * envelope_size;
10779
10780            // Zero reserved fields.
10781            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10782
10783            // Safety:
10784            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10785            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10786            //   envelope_size bytes, there is always sufficient room.
10787            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
10788                self.capability
10789                    .as_ref()
10790                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
10791                encoder,
10792                offset + cur_offset,
10793                depth,
10794            )?;
10795
10796            _prev_end_offset = cur_offset + envelope_size;
10797            if 2 > max_ordinal {
10798                return Ok(());
10799            }
10800
10801            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10802            // are envelope_size bytes.
10803            let cur_offset: usize = (2 - 1) * envelope_size;
10804
10805            // Zero reserved fields.
10806            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10807
10808            // Safety:
10809            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10810            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10811            //   envelope_size bytes, there is always sufficient room.
10812            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
10813            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
10814            encoder, offset + cur_offset, depth
10815        )?;
10816
10817            _prev_end_offset = cur_offset + envelope_size;
10818
10819            Ok(())
10820        }
10821    }
10822
10823    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Void {
10824        #[inline(always)]
10825        fn new_empty() -> Self {
10826            Self::default()
10827        }
10828
10829        unsafe fn decode(
10830            &mut self,
10831            decoder: &mut fidl::encoding::Decoder<'_, D>,
10832            offset: usize,
10833            mut depth: fidl::encoding::Depth,
10834        ) -> fidl::Result<()> {
10835            decoder.debug_check_bounds::<Self>(offset);
10836            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10837                None => return Err(fidl::Error::NotNullable),
10838                Some(len) => len,
10839            };
10840            // Calling decoder.out_of_line_offset(0) is not allowed.
10841            if len == 0 {
10842                return Ok(());
10843            };
10844            depth.increment()?;
10845            let envelope_size = 8;
10846            let bytes_len = len * envelope_size;
10847            let offset = decoder.out_of_line_offset(bytes_len)?;
10848            // Decode the envelope for each type.
10849            let mut _next_ordinal_to_read = 0;
10850            let mut next_offset = offset;
10851            let end_offset = offset + bytes_len;
10852            _next_ordinal_to_read += 1;
10853            if next_offset >= end_offset {
10854                return Ok(());
10855            }
10856
10857            // Decode unknown envelopes for gaps in ordinals.
10858            while _next_ordinal_to_read < 1 {
10859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10860                _next_ordinal_to_read += 1;
10861                next_offset += envelope_size;
10862            }
10863
10864            let next_out_of_line = decoder.next_out_of_line();
10865            let handles_before = decoder.remaining_handles();
10866            if let Some((inlined, num_bytes, num_handles)) =
10867                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10868            {
10869                let member_inline_size =
10870                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
10871                        decoder.context,
10872                    );
10873                if inlined != (member_inline_size <= 4) {
10874                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10875                }
10876                let inner_offset;
10877                let mut inner_depth = depth.clone();
10878                if inlined {
10879                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10880                    inner_offset = next_offset;
10881                } else {
10882                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10883                    inner_depth.increment()?;
10884                }
10885                let val_ref =
10886                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
10887                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
10888                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10889                {
10890                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10891                }
10892                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10893                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10894                }
10895            }
10896
10897            next_offset += envelope_size;
10898            _next_ordinal_to_read += 1;
10899            if next_offset >= end_offset {
10900                return Ok(());
10901            }
10902
10903            // Decode unknown envelopes for gaps in ordinals.
10904            while _next_ordinal_to_read < 2 {
10905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10906                _next_ordinal_to_read += 1;
10907                next_offset += envelope_size;
10908            }
10909
10910            let next_out_of_line = decoder.next_out_of_line();
10911            let handles_before = decoder.remaining_handles();
10912            if let Some((inlined, num_bytes, num_handles)) =
10913                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10914            {
10915                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10916                if inlined != (member_inline_size <= 4) {
10917                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10918                }
10919                let inner_offset;
10920                let mut inner_depth = depth.clone();
10921                if inlined {
10922                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10923                    inner_offset = next_offset;
10924                } else {
10925                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10926                    inner_depth.increment()?;
10927                }
10928                let val_ref = self.moniker.get_or_insert_with(|| {
10929                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
10930                });
10931                fidl::decode!(
10932                    fidl::encoding::BoundedString<4096>,
10933                    D,
10934                    val_ref,
10935                    decoder,
10936                    inner_offset,
10937                    inner_depth
10938                )?;
10939                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10940                {
10941                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10942                }
10943                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10944                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10945                }
10946            }
10947
10948            next_offset += envelope_size;
10949
10950            // Decode the remaining unknown envelopes.
10951            while next_offset < end_offset {
10952                _next_ordinal_to_read += 1;
10953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10954                next_offset += envelope_size;
10955            }
10956
10957            Ok(())
10958        }
10959    }
10960
10961    impl fidl::encoding::ValueTypeMarker for AggregateCapability {
10962        type Borrowed<'a> = &'a Self;
10963        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10964            value
10965        }
10966    }
10967
10968    unsafe impl fidl::encoding::TypeMarker for AggregateCapability {
10969        type Owned = Self;
10970
10971        #[inline(always)]
10972        fn inline_align(_context: fidl::encoding::Context) -> usize {
10973            8
10974        }
10975
10976        #[inline(always)]
10977        fn inline_size(_context: fidl::encoding::Context) -> usize {
10978            16
10979        }
10980    }
10981
10982    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateCapability, D>
10983        for &AggregateCapability
10984    {
10985        #[inline]
10986        unsafe fn encode(
10987            self,
10988            encoder: &mut fidl::encoding::Encoder<'_, D>,
10989            offset: usize,
10990            _depth: fidl::encoding::Depth,
10991        ) -> fidl::Result<()> {
10992            encoder.debug_check_bounds::<AggregateCapability>(offset);
10993            encoder.write_num::<u64>(self.ordinal(), offset);
10994            match self {
10995                AggregateCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
10996                    fidl::encoding::BoundedString<100>,
10997                    D,
10998                >(
10999                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
11000                        val,
11001                    ),
11002                    encoder,
11003                    offset + 8,
11004                    _depth,
11005                ),
11006            }
11007        }
11008    }
11009
11010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateCapability {
11011        #[inline(always)]
11012        fn new_empty() -> Self {
11013            Self::Service(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
11014        }
11015
11016        #[inline]
11017        unsafe fn decode(
11018            &mut self,
11019            decoder: &mut fidl::encoding::Decoder<'_, D>,
11020            offset: usize,
11021            mut depth: fidl::encoding::Depth,
11022        ) -> fidl::Result<()> {
11023            decoder.debug_check_bounds::<Self>(offset);
11024            #[allow(unused_variables)]
11025            let next_out_of_line = decoder.next_out_of_line();
11026            let handles_before = decoder.remaining_handles();
11027            let (ordinal, inlined, num_bytes, num_handles) =
11028                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11029
11030            let member_inline_size = match ordinal {
11031                1 => {
11032                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11033                        decoder.context,
11034                    )
11035                }
11036                _ => return Err(fidl::Error::UnknownUnionTag),
11037            };
11038
11039            if inlined != (member_inline_size <= 4) {
11040                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11041            }
11042            let _inner_offset;
11043            if inlined {
11044                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11045                _inner_offset = offset + 8;
11046            } else {
11047                depth.increment()?;
11048                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11049            }
11050            match ordinal {
11051                1 => {
11052                    #[allow(irrefutable_let_patterns)]
11053                    if let AggregateCapability::Service(_) = self {
11054                        // Do nothing, read the value into the object
11055                    } else {
11056                        // Initialize `self` to the right variant
11057                        *self = AggregateCapability::Service(fidl::new_empty!(
11058                            fidl::encoding::BoundedString<100>,
11059                            D
11060                        ));
11061                    }
11062                    #[allow(irrefutable_let_patterns)]
11063                    if let AggregateCapability::Service(ref mut val) = self {
11064                        fidl::decode!(
11065                            fidl::encoding::BoundedString<100>,
11066                            D,
11067                            val,
11068                            decoder,
11069                            _inner_offset,
11070                            depth
11071                        )?;
11072                    } else {
11073                        unreachable!()
11074                    }
11075                }
11076                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11077            }
11078            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11079                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11080            }
11081            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11082                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11083            }
11084            Ok(())
11085        }
11086    }
11087
11088    impl fidl::encoding::ValueTypeMarker for AggregateMember {
11089        type Borrowed<'a> = &'a Self;
11090        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11091            value
11092        }
11093    }
11094
11095    unsafe impl fidl::encoding::TypeMarker for AggregateMember {
11096        type Owned = Self;
11097
11098        #[inline(always)]
11099        fn inline_align(_context: fidl::encoding::Context) -> usize {
11100            8
11101        }
11102
11103        #[inline(always)]
11104        fn inline_size(_context: fidl::encoding::Context) -> usize {
11105            16
11106        }
11107    }
11108
11109    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateMember, D>
11110        for &AggregateMember
11111    {
11112        #[inline]
11113        unsafe fn encode(
11114            self,
11115            encoder: &mut fidl::encoding::Encoder<'_, D>,
11116            offset: usize,
11117            _depth: fidl::encoding::Depth,
11118        ) -> fidl::Result<()> {
11119            encoder.debug_check_bounds::<AggregateMember>(offset);
11120            encoder.write_num::<u64>(self.ordinal(), offset);
11121            match self {
11122            AggregateMember::Child(ref val) => {
11123                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ChildRef, D>(
11124                    <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11125                    encoder, offset + 8, _depth
11126                )
11127            }
11128            AggregateMember::Collection(ref val) => {
11129                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<100>, D>(
11130                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(val),
11131                    encoder, offset + 8, _depth
11132                )
11133            }
11134            AggregateMember::Parent(ref val) => {
11135                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ParentRef, D>(
11136                    <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11137                    encoder, offset + 8, _depth
11138                )
11139            }
11140            AggregateMember::Self_(ref val) => {
11141                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::SelfRef, D>(
11142                    <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11143                    encoder, offset + 8, _depth
11144                )
11145            }
11146        }
11147        }
11148    }
11149
11150    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateMember {
11151        #[inline(always)]
11152        fn new_empty() -> Self {
11153            Self::Child(fidl::new_empty!(fidl_fuchsia_component_decl__common::ChildRef, D))
11154        }
11155
11156        #[inline]
11157        unsafe fn decode(
11158            &mut self,
11159            decoder: &mut fidl::encoding::Decoder<'_, D>,
11160            offset: usize,
11161            mut depth: fidl::encoding::Depth,
11162        ) -> fidl::Result<()> {
11163            decoder.debug_check_bounds::<Self>(offset);
11164            #[allow(unused_variables)]
11165            let next_out_of_line = decoder.next_out_of_line();
11166            let handles_before = decoder.remaining_handles();
11167            let (ordinal, inlined, num_bytes, num_handles) =
11168                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11169
11170            let member_inline_size = match ordinal {
11171            1 => <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11172            2 => <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11173            3 => <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11174            4 => <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11175            _ => return Err(fidl::Error::UnknownUnionTag),
11176        };
11177
11178            if inlined != (member_inline_size <= 4) {
11179                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11180            }
11181            let _inner_offset;
11182            if inlined {
11183                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11184                _inner_offset = offset + 8;
11185            } else {
11186                depth.increment()?;
11187                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11188            }
11189            match ordinal {
11190                1 => {
11191                    #[allow(irrefutable_let_patterns)]
11192                    if let AggregateMember::Child(_) = self {
11193                        // Do nothing, read the value into the object
11194                    } else {
11195                        // Initialize `self` to the right variant
11196                        *self = AggregateMember::Child(fidl::new_empty!(
11197                            fidl_fuchsia_component_decl__common::ChildRef,
11198                            D
11199                        ));
11200                    }
11201                    #[allow(irrefutable_let_patterns)]
11202                    if let AggregateMember::Child(ref mut val) = self {
11203                        fidl::decode!(
11204                            fidl_fuchsia_component_decl__common::ChildRef,
11205                            D,
11206                            val,
11207                            decoder,
11208                            _inner_offset,
11209                            depth
11210                        )?;
11211                    } else {
11212                        unreachable!()
11213                    }
11214                }
11215                2 => {
11216                    #[allow(irrefutable_let_patterns)]
11217                    if let AggregateMember::Collection(_) = self {
11218                        // Do nothing, read the value into the object
11219                    } else {
11220                        // Initialize `self` to the right variant
11221                        *self = AggregateMember::Collection(fidl::new_empty!(
11222                            fidl::encoding::BoundedString<100>,
11223                            D
11224                        ));
11225                    }
11226                    #[allow(irrefutable_let_patterns)]
11227                    if let AggregateMember::Collection(ref mut val) = self {
11228                        fidl::decode!(
11229                            fidl::encoding::BoundedString<100>,
11230                            D,
11231                            val,
11232                            decoder,
11233                            _inner_offset,
11234                            depth
11235                        )?;
11236                    } else {
11237                        unreachable!()
11238                    }
11239                }
11240                3 => {
11241                    #[allow(irrefutable_let_patterns)]
11242                    if let AggregateMember::Parent(_) = self {
11243                        // Do nothing, read the value into the object
11244                    } else {
11245                        // Initialize `self` to the right variant
11246                        *self = AggregateMember::Parent(fidl::new_empty!(
11247                            fidl_fuchsia_component_decl__common::ParentRef,
11248                            D
11249                        ));
11250                    }
11251                    #[allow(irrefutable_let_patterns)]
11252                    if let AggregateMember::Parent(ref mut val) = self {
11253                        fidl::decode!(
11254                            fidl_fuchsia_component_decl__common::ParentRef,
11255                            D,
11256                            val,
11257                            decoder,
11258                            _inner_offset,
11259                            depth
11260                        )?;
11261                    } else {
11262                        unreachable!()
11263                    }
11264                }
11265                4 => {
11266                    #[allow(irrefutable_let_patterns)]
11267                    if let AggregateMember::Self_(_) = self {
11268                        // Do nothing, read the value into the object
11269                    } else {
11270                        // Initialize `self` to the right variant
11271                        *self = AggregateMember::Self_(fidl::new_empty!(
11272                            fidl_fuchsia_component_decl__common::SelfRef,
11273                            D
11274                        ));
11275                    }
11276                    #[allow(irrefutable_let_patterns)]
11277                    if let AggregateMember::Self_(ref mut val) = self {
11278                        fidl::decode!(
11279                            fidl_fuchsia_component_decl__common::SelfRef,
11280                            D,
11281                            val,
11282                            decoder,
11283                            _inner_offset,
11284                            depth
11285                        )?;
11286                    } else {
11287                        unreachable!()
11288                    }
11289                }
11290                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11291            }
11292            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11293                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11294            }
11295            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11296                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11297            }
11298            Ok(())
11299        }
11300    }
11301
11302    impl fidl::encoding::ValueTypeMarker for AllowlistedCapability {
11303        type Borrowed<'a> = &'a Self;
11304        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11305            value
11306        }
11307    }
11308
11309    unsafe impl fidl::encoding::TypeMarker for AllowlistedCapability {
11310        type Owned = Self;
11311
11312        #[inline(always)]
11313        fn inline_align(_context: fidl::encoding::Context) -> usize {
11314            8
11315        }
11316
11317        #[inline(always)]
11318        fn inline_size(_context: fidl::encoding::Context) -> usize {
11319            16
11320        }
11321    }
11322
11323    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedCapability, D>
11324        for &AllowlistedCapability
11325    {
11326        #[inline]
11327        unsafe fn encode(
11328            self,
11329            encoder: &mut fidl::encoding::Encoder<'_, D>,
11330            offset: usize,
11331            _depth: fidl::encoding::Depth,
11332        ) -> fidl::Result<()> {
11333            encoder.debug_check_bounds::<AllowlistedCapability>(offset);
11334            encoder.write_num::<u64>(self.ordinal(), offset);
11335            match self {
11336                AllowlistedCapability::Directory(ref val) => {
11337                    fidl::encoding::encode_in_envelope::<AllowlistedDirectory, D>(
11338                        <AllowlistedDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
11339                        encoder,
11340                        offset + 8,
11341                        _depth,
11342                    )
11343                }
11344                AllowlistedCapability::Protocol(ref val) => {
11345                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
11346                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
11347                        encoder,
11348                        offset + 8,
11349                        _depth,
11350                    )
11351                }
11352                AllowlistedCapability::Service(ref val) => {
11353                    fidl::encoding::encode_in_envelope::<AllowlistedService, D>(
11354                        <AllowlistedService as fidl::encoding::ValueTypeMarker>::borrow(val),
11355                        encoder,
11356                        offset + 8,
11357                        _depth,
11358                    )
11359                }
11360                AllowlistedCapability::Storage(ref val) => {
11361                    fidl::encoding::encode_in_envelope::<AllowlistedStorage, D>(
11362                        <AllowlistedStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
11363                        encoder,
11364                        offset + 8,
11365                        _depth,
11366                    )
11367                }
11368                AllowlistedCapability::Runner(ref val) => {
11369                    fidl::encoding::encode_in_envelope::<AllowlistedRunner, D>(
11370                        <AllowlistedRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
11371                        encoder,
11372                        offset + 8,
11373                        _depth,
11374                    )
11375                }
11376                AllowlistedCapability::Resolver(ref val) => {
11377                    fidl::encoding::encode_in_envelope::<AllowlistedResolver, D>(
11378                        <AllowlistedResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
11379                        encoder,
11380                        offset + 8,
11381                        _depth,
11382                    )
11383                }
11384                AllowlistedCapability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
11385            }
11386        }
11387    }
11388
11389    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedCapability {
11390        #[inline(always)]
11391        fn new_empty() -> Self {
11392            Self::__SourceBreaking { unknown_ordinal: 0 }
11393        }
11394
11395        #[inline]
11396        unsafe fn decode(
11397            &mut self,
11398            decoder: &mut fidl::encoding::Decoder<'_, D>,
11399            offset: usize,
11400            mut depth: fidl::encoding::Depth,
11401        ) -> fidl::Result<()> {
11402            decoder.debug_check_bounds::<Self>(offset);
11403            #[allow(unused_variables)]
11404            let next_out_of_line = decoder.next_out_of_line();
11405            let handles_before = decoder.remaining_handles();
11406            let (ordinal, inlined, num_bytes, num_handles) =
11407                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11408
11409            let member_inline_size = match ordinal {
11410                1 => <AllowlistedDirectory as fidl::encoding::TypeMarker>::inline_size(
11411                    decoder.context,
11412                ),
11413                3 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
11414                    decoder.context,
11415                ),
11416                4 => {
11417                    <AllowlistedService as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11418                }
11419                5 => {
11420                    <AllowlistedStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11421                }
11422                6 => {
11423                    <AllowlistedRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11424                }
11425                7 => <AllowlistedResolver as fidl::encoding::TypeMarker>::inline_size(
11426                    decoder.context,
11427                ),
11428                0 => return Err(fidl::Error::UnknownUnionTag),
11429                _ => num_bytes as usize,
11430            };
11431
11432            if inlined != (member_inline_size <= 4) {
11433                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11434            }
11435            let _inner_offset;
11436            if inlined {
11437                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11438                _inner_offset = offset + 8;
11439            } else {
11440                depth.increment()?;
11441                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11442            }
11443            match ordinal {
11444                1 => {
11445                    #[allow(irrefutable_let_patterns)]
11446                    if let AllowlistedCapability::Directory(_) = self {
11447                        // Do nothing, read the value into the object
11448                    } else {
11449                        // Initialize `self` to the right variant
11450                        *self = AllowlistedCapability::Directory(fidl::new_empty!(
11451                            AllowlistedDirectory,
11452                            D
11453                        ));
11454                    }
11455                    #[allow(irrefutable_let_patterns)]
11456                    if let AllowlistedCapability::Directory(ref mut val) = self {
11457                        fidl::decode!(AllowlistedDirectory, D, val, decoder, _inner_offset, depth)?;
11458                    } else {
11459                        unreachable!()
11460                    }
11461                }
11462                3 => {
11463                    #[allow(irrefutable_let_patterns)]
11464                    if let AllowlistedCapability::Protocol(_) = self {
11465                        // Do nothing, read the value into the object
11466                    } else {
11467                        // Initialize `self` to the right variant
11468                        *self = AllowlistedCapability::Protocol(fidl::new_empty!(
11469                            AllowlistedProtocol,
11470                            D
11471                        ));
11472                    }
11473                    #[allow(irrefutable_let_patterns)]
11474                    if let AllowlistedCapability::Protocol(ref mut val) = self {
11475                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
11476                    } else {
11477                        unreachable!()
11478                    }
11479                }
11480                4 => {
11481                    #[allow(irrefutable_let_patterns)]
11482                    if let AllowlistedCapability::Service(_) = self {
11483                        // Do nothing, read the value into the object
11484                    } else {
11485                        // Initialize `self` to the right variant
11486                        *self =
11487                            AllowlistedCapability::Service(fidl::new_empty!(AllowlistedService, D));
11488                    }
11489                    #[allow(irrefutable_let_patterns)]
11490                    if let AllowlistedCapability::Service(ref mut val) = self {
11491                        fidl::decode!(AllowlistedService, D, val, decoder, _inner_offset, depth)?;
11492                    } else {
11493                        unreachable!()
11494                    }
11495                }
11496                5 => {
11497                    #[allow(irrefutable_let_patterns)]
11498                    if let AllowlistedCapability::Storage(_) = self {
11499                        // Do nothing, read the value into the object
11500                    } else {
11501                        // Initialize `self` to the right variant
11502                        *self =
11503                            AllowlistedCapability::Storage(fidl::new_empty!(AllowlistedStorage, D));
11504                    }
11505                    #[allow(irrefutable_let_patterns)]
11506                    if let AllowlistedCapability::Storage(ref mut val) = self {
11507                        fidl::decode!(AllowlistedStorage, D, val, decoder, _inner_offset, depth)?;
11508                    } else {
11509                        unreachable!()
11510                    }
11511                }
11512                6 => {
11513                    #[allow(irrefutable_let_patterns)]
11514                    if let AllowlistedCapability::Runner(_) = self {
11515                        // Do nothing, read the value into the object
11516                    } else {
11517                        // Initialize `self` to the right variant
11518                        *self =
11519                            AllowlistedCapability::Runner(fidl::new_empty!(AllowlistedRunner, D));
11520                    }
11521                    #[allow(irrefutable_let_patterns)]
11522                    if let AllowlistedCapability::Runner(ref mut val) = self {
11523                        fidl::decode!(AllowlistedRunner, D, val, decoder, _inner_offset, depth)?;
11524                    } else {
11525                        unreachable!()
11526                    }
11527                }
11528                7 => {
11529                    #[allow(irrefutable_let_patterns)]
11530                    if let AllowlistedCapability::Resolver(_) = self {
11531                        // Do nothing, read the value into the object
11532                    } else {
11533                        // Initialize `self` to the right variant
11534                        *self = AllowlistedCapability::Resolver(fidl::new_empty!(
11535                            AllowlistedResolver,
11536                            D
11537                        ));
11538                    }
11539                    #[allow(irrefutable_let_patterns)]
11540                    if let AllowlistedCapability::Resolver(ref mut val) = self {
11541                        fidl::decode!(AllowlistedResolver, D, val, decoder, _inner_offset, depth)?;
11542                    } else {
11543                        unreachable!()
11544                    }
11545                }
11546                #[allow(deprecated)]
11547                ordinal => {
11548                    for _ in 0..num_handles {
11549                        decoder.drop_next_handle()?;
11550                    }
11551                    *self = AllowlistedCapability::__SourceBreaking { unknown_ordinal: ordinal };
11552                }
11553            }
11554            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11555                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11556            }
11557            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11558                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11559            }
11560            Ok(())
11561        }
11562    }
11563
11564    impl fidl::encoding::ValueTypeMarker for AllowlistedDebugRegistration {
11565        type Borrowed<'a> = &'a Self;
11566        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11567            value
11568        }
11569    }
11570
11571    unsafe impl fidl::encoding::TypeMarker for AllowlistedDebugRegistration {
11572        type Owned = Self;
11573
11574        #[inline(always)]
11575        fn inline_align(_context: fidl::encoding::Context) -> usize {
11576            8
11577        }
11578
11579        #[inline(always)]
11580        fn inline_size(_context: fidl::encoding::Context) -> usize {
11581            16
11582        }
11583    }
11584
11585    unsafe impl<D: fidl::encoding::ResourceDialect>
11586        fidl::encoding::Encode<AllowlistedDebugRegistration, D> for &AllowlistedDebugRegistration
11587    {
11588        #[inline]
11589        unsafe fn encode(
11590            self,
11591            encoder: &mut fidl::encoding::Encoder<'_, D>,
11592            offset: usize,
11593            _depth: fidl::encoding::Depth,
11594        ) -> fidl::Result<()> {
11595            encoder.debug_check_bounds::<AllowlistedDebugRegistration>(offset);
11596            encoder.write_num::<u64>(self.ordinal(), offset);
11597            match self {
11598                AllowlistedDebugRegistration::Protocol(ref val) => {
11599                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
11600                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
11601                        encoder,
11602                        offset + 8,
11603                        _depth,
11604                    )
11605                }
11606                AllowlistedDebugRegistration::__SourceBreaking { .. } => {
11607                    Err(fidl::Error::UnknownUnionTag)
11608                }
11609            }
11610        }
11611    }
11612
11613    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11614        for AllowlistedDebugRegistration
11615    {
11616        #[inline(always)]
11617        fn new_empty() -> Self {
11618            Self::__SourceBreaking { unknown_ordinal: 0 }
11619        }
11620
11621        #[inline]
11622        unsafe fn decode(
11623            &mut self,
11624            decoder: &mut fidl::encoding::Decoder<'_, D>,
11625            offset: usize,
11626            mut depth: fidl::encoding::Depth,
11627        ) -> fidl::Result<()> {
11628            decoder.debug_check_bounds::<Self>(offset);
11629            #[allow(unused_variables)]
11630            let next_out_of_line = decoder.next_out_of_line();
11631            let handles_before = decoder.remaining_handles();
11632            let (ordinal, inlined, num_bytes, num_handles) =
11633                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11634
11635            let member_inline_size = match ordinal {
11636                1 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
11637                    decoder.context,
11638                ),
11639                0 => return Err(fidl::Error::UnknownUnionTag),
11640                _ => num_bytes as usize,
11641            };
11642
11643            if inlined != (member_inline_size <= 4) {
11644                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11645            }
11646            let _inner_offset;
11647            if inlined {
11648                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11649                _inner_offset = offset + 8;
11650            } else {
11651                depth.increment()?;
11652                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11653            }
11654            match ordinal {
11655                1 => {
11656                    #[allow(irrefutable_let_patterns)]
11657                    if let AllowlistedDebugRegistration::Protocol(_) = self {
11658                        // Do nothing, read the value into the object
11659                    } else {
11660                        // Initialize `self` to the right variant
11661                        *self = AllowlistedDebugRegistration::Protocol(fidl::new_empty!(
11662                            AllowlistedProtocol,
11663                            D
11664                        ));
11665                    }
11666                    #[allow(irrefutable_let_patterns)]
11667                    if let AllowlistedDebugRegistration::Protocol(ref mut val) = self {
11668                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
11669                    } else {
11670                        unreachable!()
11671                    }
11672                }
11673                #[allow(deprecated)]
11674                ordinal => {
11675                    for _ in 0..num_handles {
11676                        decoder.drop_next_handle()?;
11677                    }
11678                    *self =
11679                        AllowlistedDebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
11680                }
11681            }
11682            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11683                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11684            }
11685            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11686                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11687            }
11688            Ok(())
11689        }
11690    }
11691
11692    impl fidl::encoding::ValueTypeMarker for CapabilitySource {
11693        type Borrowed<'a> = &'a Self;
11694        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11695            value
11696        }
11697    }
11698
11699    unsafe impl fidl::encoding::TypeMarker for CapabilitySource {
11700        type Owned = Self;
11701
11702        #[inline(always)]
11703        fn inline_align(_context: fidl::encoding::Context) -> usize {
11704            8
11705        }
11706
11707        #[inline(always)]
11708        fn inline_size(_context: fidl::encoding::Context) -> usize {
11709            16
11710        }
11711    }
11712
11713    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapabilitySource, D>
11714        for &CapabilitySource
11715    {
11716        #[inline]
11717        unsafe fn encode(
11718            self,
11719            encoder: &mut fidl::encoding::Encoder<'_, D>,
11720            offset: usize,
11721            _depth: fidl::encoding::Depth,
11722        ) -> fidl::Result<()> {
11723            encoder.debug_check_bounds::<CapabilitySource>(offset);
11724            encoder.write_num::<u64>(self.ordinal(), offset);
11725            match self {
11726                CapabilitySource::Component(ref val) => {
11727                    fidl::encoding::encode_in_envelope::<Component, D>(
11728                        <Component as fidl::encoding::ValueTypeMarker>::borrow(val),
11729                        encoder,
11730                        offset + 8,
11731                        _depth,
11732                    )
11733                }
11734                CapabilitySource::Framework(ref val) => {
11735                    fidl::encoding::encode_in_envelope::<Framework, D>(
11736                        <Framework as fidl::encoding::ValueTypeMarker>::borrow(val),
11737                        encoder,
11738                        offset + 8,
11739                        _depth,
11740                    )
11741                }
11742                CapabilitySource::Builtin(ref val) => {
11743                    fidl::encoding::encode_in_envelope::<Builtin, D>(
11744                        <Builtin as fidl::encoding::ValueTypeMarker>::borrow(val),
11745                        encoder,
11746                        offset + 8,
11747                        _depth,
11748                    )
11749                }
11750                CapabilitySource::Namespace(ref val) => {
11751                    fidl::encoding::encode_in_envelope::<Namespace, D>(
11752                        <Namespace as fidl::encoding::ValueTypeMarker>::borrow(val),
11753                        encoder,
11754                        offset + 8,
11755                        _depth,
11756                    )
11757                }
11758                CapabilitySource::Capability(ref val) => {
11759                    fidl::encoding::encode_in_envelope::<Capability, D>(
11760                        <Capability as fidl::encoding::ValueTypeMarker>::borrow(val),
11761                        encoder,
11762                        offset + 8,
11763                        _depth,
11764                    )
11765                }
11766                CapabilitySource::AnonymizedAggregate(ref val) => {
11767                    fidl::encoding::encode_in_envelope::<AnonymizedAggregate, D>(
11768                        <AnonymizedAggregate as fidl::encoding::ValueTypeMarker>::borrow(val),
11769                        encoder,
11770                        offset + 8,
11771                        _depth,
11772                    )
11773                }
11774                CapabilitySource::FilteredProvider(ref val) => {
11775                    fidl::encoding::encode_in_envelope::<FilteredProvider, D>(
11776                        <FilteredProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11777                        encoder,
11778                        offset + 8,
11779                        _depth,
11780                    )
11781                }
11782                CapabilitySource::FilteredAggregateProvider(ref val) => {
11783                    fidl::encoding::encode_in_envelope::<FilteredAggregateProvider, D>(
11784                        <FilteredAggregateProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11785                        encoder,
11786                        offset + 8,
11787                        _depth,
11788                    )
11789                }
11790                CapabilitySource::Environment(ref val) => {
11791                    fidl::encoding::encode_in_envelope::<Environment, D>(
11792                        <Environment as fidl::encoding::ValueTypeMarker>::borrow(val),
11793                        encoder,
11794                        offset + 8,
11795                        _depth,
11796                    )
11797                }
11798                CapabilitySource::Void(ref val) => fidl::encoding::encode_in_envelope::<Void, D>(
11799                    <Void as fidl::encoding::ValueTypeMarker>::borrow(val),
11800                    encoder,
11801                    offset + 8,
11802                    _depth,
11803                ),
11804            }
11805        }
11806    }
11807
11808    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapabilitySource {
11809        #[inline(always)]
11810        fn new_empty() -> Self {
11811            Self::Component(fidl::new_empty!(Component, D))
11812        }
11813
11814        #[inline]
11815        unsafe fn decode(
11816            &mut self,
11817            decoder: &mut fidl::encoding::Decoder<'_, D>,
11818            offset: usize,
11819            mut depth: fidl::encoding::Depth,
11820        ) -> fidl::Result<()> {
11821            decoder.debug_check_bounds::<Self>(offset);
11822            #[allow(unused_variables)]
11823            let next_out_of_line = decoder.next_out_of_line();
11824            let handles_before = decoder.remaining_handles();
11825            let (ordinal, inlined, num_bytes, num_handles) =
11826                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11827
11828            let member_inline_size = match ordinal {
11829                1 => <Component as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11830                2 => <Framework as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11831                3 => <Builtin as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11832                4 => <Namespace as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11833                5 => <Capability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11834                6 => <AnonymizedAggregate as fidl::encoding::TypeMarker>::inline_size(
11835                    decoder.context,
11836                ),
11837                7 => <FilteredProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11838                8 => <FilteredAggregateProvider as fidl::encoding::TypeMarker>::inline_size(
11839                    decoder.context,
11840                ),
11841                9 => <Environment as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11842                10 => <Void as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11843                _ => return Err(fidl::Error::UnknownUnionTag),
11844            };
11845
11846            if inlined != (member_inline_size <= 4) {
11847                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11848            }
11849            let _inner_offset;
11850            if inlined {
11851                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11852                _inner_offset = offset + 8;
11853            } else {
11854                depth.increment()?;
11855                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11856            }
11857            match ordinal {
11858                1 => {
11859                    #[allow(irrefutable_let_patterns)]
11860                    if let CapabilitySource::Component(_) = self {
11861                        // Do nothing, read the value into the object
11862                    } else {
11863                        // Initialize `self` to the right variant
11864                        *self = CapabilitySource::Component(fidl::new_empty!(Component, D));
11865                    }
11866                    #[allow(irrefutable_let_patterns)]
11867                    if let CapabilitySource::Component(ref mut val) = self {
11868                        fidl::decode!(Component, D, val, decoder, _inner_offset, depth)?;
11869                    } else {
11870                        unreachable!()
11871                    }
11872                }
11873                2 => {
11874                    #[allow(irrefutable_let_patterns)]
11875                    if let CapabilitySource::Framework(_) = self {
11876                        // Do nothing, read the value into the object
11877                    } else {
11878                        // Initialize `self` to the right variant
11879                        *self = CapabilitySource::Framework(fidl::new_empty!(Framework, D));
11880                    }
11881                    #[allow(irrefutable_let_patterns)]
11882                    if let CapabilitySource::Framework(ref mut val) = self {
11883                        fidl::decode!(Framework, D, val, decoder, _inner_offset, depth)?;
11884                    } else {
11885                        unreachable!()
11886                    }
11887                }
11888                3 => {
11889                    #[allow(irrefutable_let_patterns)]
11890                    if let CapabilitySource::Builtin(_) = self {
11891                        // Do nothing, read the value into the object
11892                    } else {
11893                        // Initialize `self` to the right variant
11894                        *self = CapabilitySource::Builtin(fidl::new_empty!(Builtin, D));
11895                    }
11896                    #[allow(irrefutable_let_patterns)]
11897                    if let CapabilitySource::Builtin(ref mut val) = self {
11898                        fidl::decode!(Builtin, D, val, decoder, _inner_offset, depth)?;
11899                    } else {
11900                        unreachable!()
11901                    }
11902                }
11903                4 => {
11904                    #[allow(irrefutable_let_patterns)]
11905                    if let CapabilitySource::Namespace(_) = self {
11906                        // Do nothing, read the value into the object
11907                    } else {
11908                        // Initialize `self` to the right variant
11909                        *self = CapabilitySource::Namespace(fidl::new_empty!(Namespace, D));
11910                    }
11911                    #[allow(irrefutable_let_patterns)]
11912                    if let CapabilitySource::Namespace(ref mut val) = self {
11913                        fidl::decode!(Namespace, D, val, decoder, _inner_offset, depth)?;
11914                    } else {
11915                        unreachable!()
11916                    }
11917                }
11918                5 => {
11919                    #[allow(irrefutable_let_patterns)]
11920                    if let CapabilitySource::Capability(_) = self {
11921                        // Do nothing, read the value into the object
11922                    } else {
11923                        // Initialize `self` to the right variant
11924                        *self = CapabilitySource::Capability(fidl::new_empty!(Capability, D));
11925                    }
11926                    #[allow(irrefutable_let_patterns)]
11927                    if let CapabilitySource::Capability(ref mut val) = self {
11928                        fidl::decode!(Capability, D, val, decoder, _inner_offset, depth)?;
11929                    } else {
11930                        unreachable!()
11931                    }
11932                }
11933                6 => {
11934                    #[allow(irrefutable_let_patterns)]
11935                    if let CapabilitySource::AnonymizedAggregate(_) = self {
11936                        // Do nothing, read the value into the object
11937                    } else {
11938                        // Initialize `self` to the right variant
11939                        *self = CapabilitySource::AnonymizedAggregate(fidl::new_empty!(
11940                            AnonymizedAggregate,
11941                            D
11942                        ));
11943                    }
11944                    #[allow(irrefutable_let_patterns)]
11945                    if let CapabilitySource::AnonymizedAggregate(ref mut val) = self {
11946                        fidl::decode!(AnonymizedAggregate, D, val, decoder, _inner_offset, depth)?;
11947                    } else {
11948                        unreachable!()
11949                    }
11950                }
11951                7 => {
11952                    #[allow(irrefutable_let_patterns)]
11953                    if let CapabilitySource::FilteredProvider(_) = self {
11954                        // Do nothing, read the value into the object
11955                    } else {
11956                        // Initialize `self` to the right variant
11957                        *self = CapabilitySource::FilteredProvider(fidl::new_empty!(
11958                            FilteredProvider,
11959                            D
11960                        ));
11961                    }
11962                    #[allow(irrefutable_let_patterns)]
11963                    if let CapabilitySource::FilteredProvider(ref mut val) = self {
11964                        fidl::decode!(FilteredProvider, D, val, decoder, _inner_offset, depth)?;
11965                    } else {
11966                        unreachable!()
11967                    }
11968                }
11969                8 => {
11970                    #[allow(irrefutable_let_patterns)]
11971                    if let CapabilitySource::FilteredAggregateProvider(_) = self {
11972                        // Do nothing, read the value into the object
11973                    } else {
11974                        // Initialize `self` to the right variant
11975                        *self = CapabilitySource::FilteredAggregateProvider(fidl::new_empty!(
11976                            FilteredAggregateProvider,
11977                            D
11978                        ));
11979                    }
11980                    #[allow(irrefutable_let_patterns)]
11981                    if let CapabilitySource::FilteredAggregateProvider(ref mut val) = self {
11982                        fidl::decode!(
11983                            FilteredAggregateProvider,
11984                            D,
11985                            val,
11986                            decoder,
11987                            _inner_offset,
11988                            depth
11989                        )?;
11990                    } else {
11991                        unreachable!()
11992                    }
11993                }
11994                9 => {
11995                    #[allow(irrefutable_let_patterns)]
11996                    if let CapabilitySource::Environment(_) = self {
11997                        // Do nothing, read the value into the object
11998                    } else {
11999                        // Initialize `self` to the right variant
12000                        *self = CapabilitySource::Environment(fidl::new_empty!(Environment, D));
12001                    }
12002                    #[allow(irrefutable_let_patterns)]
12003                    if let CapabilitySource::Environment(ref mut val) = self {
12004                        fidl::decode!(Environment, D, val, decoder, _inner_offset, depth)?;
12005                    } else {
12006                        unreachable!()
12007                    }
12008                }
12009                10 => {
12010                    #[allow(irrefutable_let_patterns)]
12011                    if let CapabilitySource::Void(_) = self {
12012                        // Do nothing, read the value into the object
12013                    } else {
12014                        // Initialize `self` to the right variant
12015                        *self = CapabilitySource::Void(fidl::new_empty!(Void, D));
12016                    }
12017                    #[allow(irrefutable_let_patterns)]
12018                    if let CapabilitySource::Void(ref mut val) = self {
12019                        fidl::decode!(Void, D, val, decoder, _inner_offset, depth)?;
12020                    } else {
12021                        unreachable!()
12022                    }
12023                }
12024                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12025            }
12026            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12027                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12028            }
12029            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12030                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12031            }
12032            Ok(())
12033        }
12034    }
12035
12036    impl fidl::encoding::ValueTypeMarker for ComponentCapability {
12037        type Borrowed<'a> = &'a Self;
12038        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12039            value
12040        }
12041    }
12042
12043    unsafe impl fidl::encoding::TypeMarker for ComponentCapability {
12044        type Owned = Self;
12045
12046        #[inline(always)]
12047        fn inline_align(_context: fidl::encoding::Context) -> usize {
12048            8
12049        }
12050
12051        #[inline(always)]
12052        fn inline_size(_context: fidl::encoding::Context) -> usize {
12053            16
12054        }
12055    }
12056
12057    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentCapability, D>
12058        for &ComponentCapability
12059    {
12060        #[inline]
12061        unsafe fn encode(
12062            self,
12063            encoder: &mut fidl::encoding::Encoder<'_, D>,
12064            offset: usize,
12065            _depth: fidl::encoding::Depth,
12066        ) -> fidl::Result<()> {
12067            encoder.debug_check_bounds::<ComponentCapability>(offset);
12068            encoder.write_num::<u64>(self.ordinal(), offset);
12069            match self {
12070            ComponentCapability::Use_(ref val) => {
12071                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Use, D>(
12072                    <fidl_fuchsia_component_decl__common::Use as fidl::encoding::ValueTypeMarker>::borrow(val),
12073                    encoder, offset + 8, _depth
12074                )
12075            }
12076            ComponentCapability::Offer(ref val) => {
12077                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
12078                    <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
12079                    encoder, offset + 8, _depth
12080                )
12081            }
12082            ComponentCapability::Expose(ref val) => {
12083                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Expose, D>(
12084                    <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::ValueTypeMarker>::borrow(val),
12085                    encoder, offset + 8, _depth
12086                )
12087            }
12088            ComponentCapability::Config(ref val) => {
12089                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Configuration, D>(
12090                    <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
12091                    encoder, offset + 8, _depth
12092                )
12093            }
12094            ComponentCapability::Dictionary(ref val) => {
12095                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Dictionary, D>(
12096                    <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
12097                    encoder, offset + 8, _depth
12098                )
12099            }
12100            ComponentCapability::Directory(ref val) => {
12101                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Directory, D>(
12102                    <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
12103                    encoder, offset + 8, _depth
12104                )
12105            }
12106            ComponentCapability::Environment(ref val) => {
12107                fidl::encoding::encode_in_envelope::<EnvironmentCapability, D>(
12108                    <EnvironmentCapability as fidl::encoding::ValueTypeMarker>::borrow(val),
12109                    encoder, offset + 8, _depth
12110                )
12111            }
12112            ComponentCapability::EventStream(ref val) => {
12113                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::EventStream, D>(
12114                    <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
12115                    encoder, offset + 8, _depth
12116                )
12117            }
12118            ComponentCapability::Protocol(ref val) => {
12119                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Protocol, D>(
12120                    <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
12121                    encoder, offset + 8, _depth
12122                )
12123            }
12124            ComponentCapability::Resolver(ref val) => {
12125                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Resolver, D>(
12126                    <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
12127                    encoder, offset + 8, _depth
12128                )
12129            }
12130            ComponentCapability::Runner(ref val) => {
12131                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Runner, D>(
12132                    <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
12133                    encoder, offset + 8, _depth
12134                )
12135            }
12136            ComponentCapability::Service(ref val) => {
12137                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Service, D>(
12138                    <fidl_fuchsia_component_decl__common::Service as fidl::encoding::ValueTypeMarker>::borrow(val),
12139                    encoder, offset + 8, _depth
12140                )
12141            }
12142            ComponentCapability::Storage(ref val) => {
12143                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Storage, D>(
12144                    <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
12145                    encoder, offset + 8, _depth
12146                )
12147            }
12148        }
12149        }
12150    }
12151
12152    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentCapability {
12153        #[inline(always)]
12154        fn new_empty() -> Self {
12155            Self::Use_(fidl::new_empty!(fidl_fuchsia_component_decl__common::Use, D))
12156        }
12157
12158        #[inline]
12159        unsafe fn decode(
12160            &mut self,
12161            decoder: &mut fidl::encoding::Decoder<'_, D>,
12162            offset: usize,
12163            mut depth: fidl::encoding::Depth,
12164        ) -> fidl::Result<()> {
12165            decoder.debug_check_bounds::<Self>(offset);
12166            #[allow(unused_variables)]
12167            let next_out_of_line = decoder.next_out_of_line();
12168            let handles_before = decoder.remaining_handles();
12169            let (ordinal, inlined, num_bytes, num_handles) =
12170                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12171
12172            let member_inline_size = match ordinal {
12173            1 => <fidl_fuchsia_component_decl__common::Use as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12174            2 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12175            3 => <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12176            4 => <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12177            5 => <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12178            6 => <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12179            7 => <EnvironmentCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12180            8 => <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12181            9 => <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12182            10 => <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12183            11 => <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12184            12 => <fidl_fuchsia_component_decl__common::Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12185            13 => <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12186            _ => return Err(fidl::Error::UnknownUnionTag),
12187        };
12188
12189            if inlined != (member_inline_size <= 4) {
12190                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12191            }
12192            let _inner_offset;
12193            if inlined {
12194                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12195                _inner_offset = offset + 8;
12196            } else {
12197                depth.increment()?;
12198                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12199            }
12200            match ordinal {
12201                1 => {
12202                    #[allow(irrefutable_let_patterns)]
12203                    if let ComponentCapability::Use_(_) = self {
12204                        // Do nothing, read the value into the object
12205                    } else {
12206                        // Initialize `self` to the right variant
12207                        *self = ComponentCapability::Use_(fidl::new_empty!(
12208                            fidl_fuchsia_component_decl__common::Use,
12209                            D
12210                        ));
12211                    }
12212                    #[allow(irrefutable_let_patterns)]
12213                    if let ComponentCapability::Use_(ref mut val) = self {
12214                        fidl::decode!(
12215                            fidl_fuchsia_component_decl__common::Use,
12216                            D,
12217                            val,
12218                            decoder,
12219                            _inner_offset,
12220                            depth
12221                        )?;
12222                    } else {
12223                        unreachable!()
12224                    }
12225                }
12226                2 => {
12227                    #[allow(irrefutable_let_patterns)]
12228                    if let ComponentCapability::Offer(_) = self {
12229                        // Do nothing, read the value into the object
12230                    } else {
12231                        // Initialize `self` to the right variant
12232                        *self = ComponentCapability::Offer(fidl::new_empty!(
12233                            fidl_fuchsia_component_decl__common::Offer,
12234                            D
12235                        ));
12236                    }
12237                    #[allow(irrefutable_let_patterns)]
12238                    if let ComponentCapability::Offer(ref mut val) = self {
12239                        fidl::decode!(
12240                            fidl_fuchsia_component_decl__common::Offer,
12241                            D,
12242                            val,
12243                            decoder,
12244                            _inner_offset,
12245                            depth
12246                        )?;
12247                    } else {
12248                        unreachable!()
12249                    }
12250                }
12251                3 => {
12252                    #[allow(irrefutable_let_patterns)]
12253                    if let ComponentCapability::Expose(_) = self {
12254                        // Do nothing, read the value into the object
12255                    } else {
12256                        // Initialize `self` to the right variant
12257                        *self = ComponentCapability::Expose(fidl::new_empty!(
12258                            fidl_fuchsia_component_decl__common::Expose,
12259                            D
12260                        ));
12261                    }
12262                    #[allow(irrefutable_let_patterns)]
12263                    if let ComponentCapability::Expose(ref mut val) = self {
12264                        fidl::decode!(
12265                            fidl_fuchsia_component_decl__common::Expose,
12266                            D,
12267                            val,
12268                            decoder,
12269                            _inner_offset,
12270                            depth
12271                        )?;
12272                    } else {
12273                        unreachable!()
12274                    }
12275                }
12276                4 => {
12277                    #[allow(irrefutable_let_patterns)]
12278                    if let ComponentCapability::Config(_) = self {
12279                        // Do nothing, read the value into the object
12280                    } else {
12281                        // Initialize `self` to the right variant
12282                        *self = ComponentCapability::Config(fidl::new_empty!(
12283                            fidl_fuchsia_component_decl__common::Configuration,
12284                            D
12285                        ));
12286                    }
12287                    #[allow(irrefutable_let_patterns)]
12288                    if let ComponentCapability::Config(ref mut val) = self {
12289                        fidl::decode!(
12290                            fidl_fuchsia_component_decl__common::Configuration,
12291                            D,
12292                            val,
12293                            decoder,
12294                            _inner_offset,
12295                            depth
12296                        )?;
12297                    } else {
12298                        unreachable!()
12299                    }
12300                }
12301                5 => {
12302                    #[allow(irrefutable_let_patterns)]
12303                    if let ComponentCapability::Dictionary(_) = self {
12304                        // Do nothing, read the value into the object
12305                    } else {
12306                        // Initialize `self` to the right variant
12307                        *self = ComponentCapability::Dictionary(fidl::new_empty!(
12308                            fidl_fuchsia_component_decl__common::Dictionary,
12309                            D
12310                        ));
12311                    }
12312                    #[allow(irrefutable_let_patterns)]
12313                    if let ComponentCapability::Dictionary(ref mut val) = self {
12314                        fidl::decode!(
12315                            fidl_fuchsia_component_decl__common::Dictionary,
12316                            D,
12317                            val,
12318                            decoder,
12319                            _inner_offset,
12320                            depth
12321                        )?;
12322                    } else {
12323                        unreachable!()
12324                    }
12325                }
12326                6 => {
12327                    #[allow(irrefutable_let_patterns)]
12328                    if let ComponentCapability::Directory(_) = self {
12329                        // Do nothing, read the value into the object
12330                    } else {
12331                        // Initialize `self` to the right variant
12332                        *self = ComponentCapability::Directory(fidl::new_empty!(
12333                            fidl_fuchsia_component_decl__common::Directory,
12334                            D
12335                        ));
12336                    }
12337                    #[allow(irrefutable_let_patterns)]
12338                    if let ComponentCapability::Directory(ref mut val) = self {
12339                        fidl::decode!(
12340                            fidl_fuchsia_component_decl__common::Directory,
12341                            D,
12342                            val,
12343                            decoder,
12344                            _inner_offset,
12345                            depth
12346                        )?;
12347                    } else {
12348                        unreachable!()
12349                    }
12350                }
12351                7 => {
12352                    #[allow(irrefutable_let_patterns)]
12353                    if let ComponentCapability::Environment(_) = self {
12354                        // Do nothing, read the value into the object
12355                    } else {
12356                        // Initialize `self` to the right variant
12357                        *self = ComponentCapability::Environment(fidl::new_empty!(
12358                            EnvironmentCapability,
12359                            D
12360                        ));
12361                    }
12362                    #[allow(irrefutable_let_patterns)]
12363                    if let ComponentCapability::Environment(ref mut val) = self {
12364                        fidl::decode!(
12365                            EnvironmentCapability,
12366                            D,
12367                            val,
12368                            decoder,
12369                            _inner_offset,
12370                            depth
12371                        )?;
12372                    } else {
12373                        unreachable!()
12374                    }
12375                }
12376                8 => {
12377                    #[allow(irrefutable_let_patterns)]
12378                    if let ComponentCapability::EventStream(_) = self {
12379                        // Do nothing, read the value into the object
12380                    } else {
12381                        // Initialize `self` to the right variant
12382                        *self = ComponentCapability::EventStream(fidl::new_empty!(
12383                            fidl_fuchsia_component_decl__common::EventStream,
12384                            D
12385                        ));
12386                    }
12387                    #[allow(irrefutable_let_patterns)]
12388                    if let ComponentCapability::EventStream(ref mut val) = self {
12389                        fidl::decode!(
12390                            fidl_fuchsia_component_decl__common::EventStream,
12391                            D,
12392                            val,
12393                            decoder,
12394                            _inner_offset,
12395                            depth
12396                        )?;
12397                    } else {
12398                        unreachable!()
12399                    }
12400                }
12401                9 => {
12402                    #[allow(irrefutable_let_patterns)]
12403                    if let ComponentCapability::Protocol(_) = self {
12404                        // Do nothing, read the value into the object
12405                    } else {
12406                        // Initialize `self` to the right variant
12407                        *self = ComponentCapability::Protocol(fidl::new_empty!(
12408                            fidl_fuchsia_component_decl__common::Protocol,
12409                            D
12410                        ));
12411                    }
12412                    #[allow(irrefutable_let_patterns)]
12413                    if let ComponentCapability::Protocol(ref mut val) = self {
12414                        fidl::decode!(
12415                            fidl_fuchsia_component_decl__common::Protocol,
12416                            D,
12417                            val,
12418                            decoder,
12419                            _inner_offset,
12420                            depth
12421                        )?;
12422                    } else {
12423                        unreachable!()
12424                    }
12425                }
12426                10 => {
12427                    #[allow(irrefutable_let_patterns)]
12428                    if let ComponentCapability::Resolver(_) = self {
12429                        // Do nothing, read the value into the object
12430                    } else {
12431                        // Initialize `self` to the right variant
12432                        *self = ComponentCapability::Resolver(fidl::new_empty!(
12433                            fidl_fuchsia_component_decl__common::Resolver,
12434                            D
12435                        ));
12436                    }
12437                    #[allow(irrefutable_let_patterns)]
12438                    if let ComponentCapability::Resolver(ref mut val) = self {
12439                        fidl::decode!(
12440                            fidl_fuchsia_component_decl__common::Resolver,
12441                            D,
12442                            val,
12443                            decoder,
12444                            _inner_offset,
12445                            depth
12446                        )?;
12447                    } else {
12448                        unreachable!()
12449                    }
12450                }
12451                11 => {
12452                    #[allow(irrefutable_let_patterns)]
12453                    if let ComponentCapability::Runner(_) = self {
12454                        // Do nothing, read the value into the object
12455                    } else {
12456                        // Initialize `self` to the right variant
12457                        *self = ComponentCapability::Runner(fidl::new_empty!(
12458                            fidl_fuchsia_component_decl__common::Runner,
12459                            D
12460                        ));
12461                    }
12462                    #[allow(irrefutable_let_patterns)]
12463                    if let ComponentCapability::Runner(ref mut val) = self {
12464                        fidl::decode!(
12465                            fidl_fuchsia_component_decl__common::Runner,
12466                            D,
12467                            val,
12468                            decoder,
12469                            _inner_offset,
12470                            depth
12471                        )?;
12472                    } else {
12473                        unreachable!()
12474                    }
12475                }
12476                12 => {
12477                    #[allow(irrefutable_let_patterns)]
12478                    if let ComponentCapability::Service(_) = self {
12479                        // Do nothing, read the value into the object
12480                    } else {
12481                        // Initialize `self` to the right variant
12482                        *self = ComponentCapability::Service(fidl::new_empty!(
12483                            fidl_fuchsia_component_decl__common::Service,
12484                            D
12485                        ));
12486                    }
12487                    #[allow(irrefutable_let_patterns)]
12488                    if let ComponentCapability::Service(ref mut val) = self {
12489                        fidl::decode!(
12490                            fidl_fuchsia_component_decl__common::Service,
12491                            D,
12492                            val,
12493                            decoder,
12494                            _inner_offset,
12495                            depth
12496                        )?;
12497                    } else {
12498                        unreachable!()
12499                    }
12500                }
12501                13 => {
12502                    #[allow(irrefutable_let_patterns)]
12503                    if let ComponentCapability::Storage(_) = self {
12504                        // Do nothing, read the value into the object
12505                    } else {
12506                        // Initialize `self` to the right variant
12507                        *self = ComponentCapability::Storage(fidl::new_empty!(
12508                            fidl_fuchsia_component_decl__common::Storage,
12509                            D
12510                        ));
12511                    }
12512                    #[allow(irrefutable_let_patterns)]
12513                    if let ComponentCapability::Storage(ref mut val) = self {
12514                        fidl::decode!(
12515                            fidl_fuchsia_component_decl__common::Storage,
12516                            D,
12517                            val,
12518                            decoder,
12519                            _inner_offset,
12520                            depth
12521                        )?;
12522                    } else {
12523                        unreachable!()
12524                    }
12525                }
12526                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12527            }
12528            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12529                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12530            }
12531            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12532                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12533            }
12534            Ok(())
12535        }
12536    }
12537
12538    impl fidl::encoding::ValueTypeMarker for EnvironmentCapability {
12539        type Borrowed<'a> = &'a Self;
12540        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12541            value
12542        }
12543    }
12544
12545    unsafe impl fidl::encoding::TypeMarker for EnvironmentCapability {
12546        type Owned = Self;
12547
12548        #[inline(always)]
12549        fn inline_align(_context: fidl::encoding::Context) -> usize {
12550            8
12551        }
12552
12553        #[inline(always)]
12554        fn inline_size(_context: fidl::encoding::Context) -> usize {
12555            16
12556        }
12557    }
12558
12559    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentCapability, D>
12560        for &EnvironmentCapability
12561    {
12562        #[inline]
12563        unsafe fn encode(
12564            self,
12565            encoder: &mut fidl::encoding::Encoder<'_, D>,
12566            offset: usize,
12567            _depth: fidl::encoding::Depth,
12568        ) -> fidl::Result<()> {
12569            encoder.debug_check_bounds::<EnvironmentCapability>(offset);
12570            encoder.write_num::<u64>(self.ordinal(), offset);
12571            match self {
12572                EnvironmentCapability::Runner(ref val) => {
12573                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12574                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12575                        encoder,
12576                        offset + 8,
12577                        _depth,
12578                    )
12579                }
12580                EnvironmentCapability::Resolver(ref val) => {
12581                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12582                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12583                        encoder,
12584                        offset + 8,
12585                        _depth,
12586                    )
12587                }
12588                EnvironmentCapability::Debug(ref val) => {
12589                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12590                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12591                        encoder,
12592                        offset + 8,
12593                        _depth,
12594                    )
12595                }
12596            }
12597        }
12598    }
12599
12600    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentCapability {
12601        #[inline(always)]
12602        fn new_empty() -> Self {
12603            Self::Runner(fidl::new_empty!(EnvironmentSource, D))
12604        }
12605
12606        #[inline]
12607        unsafe fn decode(
12608            &mut self,
12609            decoder: &mut fidl::encoding::Decoder<'_, D>,
12610            offset: usize,
12611            mut depth: fidl::encoding::Depth,
12612        ) -> fidl::Result<()> {
12613            decoder.debug_check_bounds::<Self>(offset);
12614            #[allow(unused_variables)]
12615            let next_out_of_line = decoder.next_out_of_line();
12616            let handles_before = decoder.remaining_handles();
12617            let (ordinal, inlined, num_bytes, num_handles) =
12618                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12619
12620            let member_inline_size = match ordinal {
12621                1 => {
12622                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12623                }
12624                2 => {
12625                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12626                }
12627                3 => {
12628                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12629                }
12630                _ => return Err(fidl::Error::UnknownUnionTag),
12631            };
12632
12633            if inlined != (member_inline_size <= 4) {
12634                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12635            }
12636            let _inner_offset;
12637            if inlined {
12638                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12639                _inner_offset = offset + 8;
12640            } else {
12641                depth.increment()?;
12642                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12643            }
12644            match ordinal {
12645                1 => {
12646                    #[allow(irrefutable_let_patterns)]
12647                    if let EnvironmentCapability::Runner(_) = self {
12648                        // Do nothing, read the value into the object
12649                    } else {
12650                        // Initialize `self` to the right variant
12651                        *self =
12652                            EnvironmentCapability::Runner(fidl::new_empty!(EnvironmentSource, D));
12653                    }
12654                    #[allow(irrefutable_let_patterns)]
12655                    if let EnvironmentCapability::Runner(ref mut val) = self {
12656                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12657                    } else {
12658                        unreachable!()
12659                    }
12660                }
12661                2 => {
12662                    #[allow(irrefutable_let_patterns)]
12663                    if let EnvironmentCapability::Resolver(_) = self {
12664                        // Do nothing, read the value into the object
12665                    } else {
12666                        // Initialize `self` to the right variant
12667                        *self =
12668                            EnvironmentCapability::Resolver(fidl::new_empty!(EnvironmentSource, D));
12669                    }
12670                    #[allow(irrefutable_let_patterns)]
12671                    if let EnvironmentCapability::Resolver(ref mut val) = self {
12672                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12673                    } else {
12674                        unreachable!()
12675                    }
12676                }
12677                3 => {
12678                    #[allow(irrefutable_let_patterns)]
12679                    if let EnvironmentCapability::Debug(_) = self {
12680                        // Do nothing, read the value into the object
12681                    } else {
12682                        // Initialize `self` to the right variant
12683                        *self =
12684                            EnvironmentCapability::Debug(fidl::new_empty!(EnvironmentSource, D));
12685                    }
12686                    #[allow(irrefutable_let_patterns)]
12687                    if let EnvironmentCapability::Debug(ref mut val) = self {
12688                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12689                    } else {
12690                        unreachable!()
12691                    }
12692                }
12693                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12694            }
12695            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12696                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12697            }
12698            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12699                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12700            }
12701            Ok(())
12702        }
12703    }
12704
12705    impl fidl::encoding::ValueTypeMarker for InjectedUse {
12706        type Borrowed<'a> = &'a Self;
12707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12708            value
12709        }
12710    }
12711
12712    unsafe impl fidl::encoding::TypeMarker for InjectedUse {
12713        type Owned = Self;
12714
12715        #[inline(always)]
12716        fn inline_align(_context: fidl::encoding::Context) -> usize {
12717            8
12718        }
12719
12720        #[inline(always)]
12721        fn inline_size(_context: fidl::encoding::Context) -> usize {
12722            16
12723        }
12724    }
12725
12726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUse, D>
12727        for &InjectedUse
12728    {
12729        #[inline]
12730        unsafe fn encode(
12731            self,
12732            encoder: &mut fidl::encoding::Encoder<'_, D>,
12733            offset: usize,
12734            _depth: fidl::encoding::Depth,
12735        ) -> fidl::Result<()> {
12736            encoder.debug_check_bounds::<InjectedUse>(offset);
12737            encoder.write_num::<u64>(self.ordinal(), offset);
12738            match self {
12739                InjectedUse::Protocol(ref val) => {
12740                    fidl::encoding::encode_in_envelope::<InjectedUseProtocol, D>(
12741                        <InjectedUseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
12742                        encoder,
12743                        offset + 8,
12744                        _depth,
12745                    )
12746                }
12747                InjectedUse::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
12748            }
12749        }
12750    }
12751
12752    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUse {
12753        #[inline(always)]
12754        fn new_empty() -> Self {
12755            Self::__SourceBreaking { unknown_ordinal: 0 }
12756        }
12757
12758        #[inline]
12759        unsafe fn decode(
12760            &mut self,
12761            decoder: &mut fidl::encoding::Decoder<'_, D>,
12762            offset: usize,
12763            mut depth: fidl::encoding::Depth,
12764        ) -> fidl::Result<()> {
12765            decoder.debug_check_bounds::<Self>(offset);
12766            #[allow(unused_variables)]
12767            let next_out_of_line = decoder.next_out_of_line();
12768            let handles_before = decoder.remaining_handles();
12769            let (ordinal, inlined, num_bytes, num_handles) =
12770                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12771
12772            let member_inline_size = match ordinal {
12773                1 => <InjectedUseProtocol as fidl::encoding::TypeMarker>::inline_size(
12774                    decoder.context,
12775                ),
12776                0 => return Err(fidl::Error::UnknownUnionTag),
12777                _ => num_bytes as usize,
12778            };
12779
12780            if inlined != (member_inline_size <= 4) {
12781                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12782            }
12783            let _inner_offset;
12784            if inlined {
12785                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12786                _inner_offset = offset + 8;
12787            } else {
12788                depth.increment()?;
12789                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12790            }
12791            match ordinal {
12792                1 => {
12793                    #[allow(irrefutable_let_patterns)]
12794                    if let InjectedUse::Protocol(_) = self {
12795                        // Do nothing, read the value into the object
12796                    } else {
12797                        // Initialize `self` to the right variant
12798                        *self = InjectedUse::Protocol(fidl::new_empty!(InjectedUseProtocol, D));
12799                    }
12800                    #[allow(irrefutable_let_patterns)]
12801                    if let InjectedUse::Protocol(ref mut val) = self {
12802                        fidl::decode!(InjectedUseProtocol, D, val, decoder, _inner_offset, depth)?;
12803                    } else {
12804                        unreachable!()
12805                    }
12806                }
12807                #[allow(deprecated)]
12808                ordinal => {
12809                    for _ in 0..num_handles {
12810                        decoder.drop_next_handle()?;
12811                    }
12812                    *self = InjectedUse::__SourceBreaking { unknown_ordinal: ordinal };
12813                }
12814            }
12815            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12816                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12817            }
12818            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12819                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12820            }
12821            Ok(())
12822        }
12823    }
12824
12825    impl fidl::encoding::ValueTypeMarker for InternalCapability {
12826        type Borrowed<'a> = &'a Self;
12827        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12828            value
12829        }
12830    }
12831
12832    unsafe impl fidl::encoding::TypeMarker for InternalCapability {
12833        type Owned = Self;
12834
12835        #[inline(always)]
12836        fn inline_align(_context: fidl::encoding::Context) -> usize {
12837            8
12838        }
12839
12840        #[inline(always)]
12841        fn inline_size(_context: fidl::encoding::Context) -> usize {
12842            16
12843        }
12844    }
12845
12846    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InternalCapability, D>
12847        for &InternalCapability
12848    {
12849        #[inline]
12850        unsafe fn encode(
12851            self,
12852            encoder: &mut fidl::encoding::Encoder<'_, D>,
12853            offset: usize,
12854            _depth: fidl::encoding::Depth,
12855        ) -> fidl::Result<()> {
12856            encoder.debug_check_bounds::<InternalCapability>(offset);
12857            encoder.write_num::<u64>(self.ordinal(), offset);
12858            match self {
12859                InternalCapability::Config(ref val) => fidl::encoding::encode_in_envelope::<
12860                    fidl::encoding::BoundedString<100>,
12861                    D,
12862                >(
12863                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12864                        val,
12865                    ),
12866                    encoder,
12867                    offset + 8,
12868                    _depth,
12869                ),
12870                InternalCapability::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<
12871                    fidl::encoding::BoundedString<100>,
12872                    D,
12873                >(
12874                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12875                        val,
12876                    ),
12877                    encoder,
12878                    offset + 8,
12879                    _depth,
12880                ),
12881                InternalCapability::Directory(ref val) => fidl::encoding::encode_in_envelope::<
12882                    fidl::encoding::BoundedString<100>,
12883                    D,
12884                >(
12885                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12886                        val,
12887                    ),
12888                    encoder,
12889                    offset + 8,
12890                    _depth,
12891                ),
12892                InternalCapability::EventStream(ref val) => fidl::encoding::encode_in_envelope::<
12893                    fidl::encoding::BoundedString<100>,
12894                    D,
12895                >(
12896                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12897                        val,
12898                    ),
12899                    encoder,
12900                    offset + 8,
12901                    _depth,
12902                ),
12903                InternalCapability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<
12904                    fidl::encoding::BoundedString<100>,
12905                    D,
12906                >(
12907                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12908                        val,
12909                    ),
12910                    encoder,
12911                    offset + 8,
12912                    _depth,
12913                ),
12914                InternalCapability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<
12915                    fidl::encoding::BoundedString<100>,
12916                    D,
12917                >(
12918                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12919                        val,
12920                    ),
12921                    encoder,
12922                    offset + 8,
12923                    _depth,
12924                ),
12925                InternalCapability::Runner(ref val) => fidl::encoding::encode_in_envelope::<
12926                    fidl::encoding::BoundedString<100>,
12927                    D,
12928                >(
12929                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12930                        val,
12931                    ),
12932                    encoder,
12933                    offset + 8,
12934                    _depth,
12935                ),
12936                InternalCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
12937                    fidl::encoding::BoundedString<100>,
12938                    D,
12939                >(
12940                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12941                        val,
12942                    ),
12943                    encoder,
12944                    offset + 8,
12945                    _depth,
12946                ),
12947                InternalCapability::Storage(ref val) => fidl::encoding::encode_in_envelope::<
12948                    fidl::encoding::BoundedString<100>,
12949                    D,
12950                >(
12951                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12952                        val,
12953                    ),
12954                    encoder,
12955                    offset + 8,
12956                    _depth,
12957                ),
12958            }
12959        }
12960    }
12961
12962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InternalCapability {
12963        #[inline(always)]
12964        fn new_empty() -> Self {
12965            Self::Config(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
12966        }
12967
12968        #[inline]
12969        unsafe fn decode(
12970            &mut self,
12971            decoder: &mut fidl::encoding::Decoder<'_, D>,
12972            offset: usize,
12973            mut depth: fidl::encoding::Depth,
12974        ) -> fidl::Result<()> {
12975            decoder.debug_check_bounds::<Self>(offset);
12976            #[allow(unused_variables)]
12977            let next_out_of_line = decoder.next_out_of_line();
12978            let handles_before = decoder.remaining_handles();
12979            let (ordinal, inlined, num_bytes, num_handles) =
12980                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12981
12982            let member_inline_size = match ordinal {
12983                1 => {
12984                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12985                        decoder.context,
12986                    )
12987                }
12988                2 => {
12989                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12990                        decoder.context,
12991                    )
12992                }
12993                3 => {
12994                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
12995                        decoder.context,
12996                    )
12997                }
12998                4 => {
12999                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13000                        decoder.context,
13001                    )
13002                }
13003                5 => {
13004                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13005                        decoder.context,
13006                    )
13007                }
13008                6 => {
13009                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13010                        decoder.context,
13011                    )
13012                }
13013                7 => {
13014                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13015                        decoder.context,
13016                    )
13017                }
13018                8 => {
13019                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13020                        decoder.context,
13021                    )
13022                }
13023                9 => {
13024                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13025                        decoder.context,
13026                    )
13027                }
13028                _ => return Err(fidl::Error::UnknownUnionTag),
13029            };
13030
13031            if inlined != (member_inline_size <= 4) {
13032                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13033            }
13034            let _inner_offset;
13035            if inlined {
13036                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13037                _inner_offset = offset + 8;
13038            } else {
13039                depth.increment()?;
13040                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13041            }
13042            match ordinal {
13043                1 => {
13044                    #[allow(irrefutable_let_patterns)]
13045                    if let InternalCapability::Config(_) = self {
13046                        // Do nothing, read the value into the object
13047                    } else {
13048                        // Initialize `self` to the right variant
13049                        *self = InternalCapability::Config(fidl::new_empty!(
13050                            fidl::encoding::BoundedString<100>,
13051                            D
13052                        ));
13053                    }
13054                    #[allow(irrefutable_let_patterns)]
13055                    if let InternalCapability::Config(ref mut val) = self {
13056                        fidl::decode!(
13057                            fidl::encoding::BoundedString<100>,
13058                            D,
13059                            val,
13060                            decoder,
13061                            _inner_offset,
13062                            depth
13063                        )?;
13064                    } else {
13065                        unreachable!()
13066                    }
13067                }
13068                2 => {
13069                    #[allow(irrefutable_let_patterns)]
13070                    if let InternalCapability::Dictionary(_) = self {
13071                        // Do nothing, read the value into the object
13072                    } else {
13073                        // Initialize `self` to the right variant
13074                        *self = InternalCapability::Dictionary(fidl::new_empty!(
13075                            fidl::encoding::BoundedString<100>,
13076                            D
13077                        ));
13078                    }
13079                    #[allow(irrefutable_let_patterns)]
13080                    if let InternalCapability::Dictionary(ref mut val) = self {
13081                        fidl::decode!(
13082                            fidl::encoding::BoundedString<100>,
13083                            D,
13084                            val,
13085                            decoder,
13086                            _inner_offset,
13087                            depth
13088                        )?;
13089                    } else {
13090                        unreachable!()
13091                    }
13092                }
13093                3 => {
13094                    #[allow(irrefutable_let_patterns)]
13095                    if let InternalCapability::Directory(_) = self {
13096                        // Do nothing, read the value into the object
13097                    } else {
13098                        // Initialize `self` to the right variant
13099                        *self = InternalCapability::Directory(fidl::new_empty!(
13100                            fidl::encoding::BoundedString<100>,
13101                            D
13102                        ));
13103                    }
13104                    #[allow(irrefutable_let_patterns)]
13105                    if let InternalCapability::Directory(ref mut val) = self {
13106                        fidl::decode!(
13107                            fidl::encoding::BoundedString<100>,
13108                            D,
13109                            val,
13110                            decoder,
13111                            _inner_offset,
13112                            depth
13113                        )?;
13114                    } else {
13115                        unreachable!()
13116                    }
13117                }
13118                4 => {
13119                    #[allow(irrefutable_let_patterns)]
13120                    if let InternalCapability::EventStream(_) = self {
13121                        // Do nothing, read the value into the object
13122                    } else {
13123                        // Initialize `self` to the right variant
13124                        *self = InternalCapability::EventStream(fidl::new_empty!(
13125                            fidl::encoding::BoundedString<100>,
13126                            D
13127                        ));
13128                    }
13129                    #[allow(irrefutable_let_patterns)]
13130                    if let InternalCapability::EventStream(ref mut val) = self {
13131                        fidl::decode!(
13132                            fidl::encoding::BoundedString<100>,
13133                            D,
13134                            val,
13135                            decoder,
13136                            _inner_offset,
13137                            depth
13138                        )?;
13139                    } else {
13140                        unreachable!()
13141                    }
13142                }
13143                5 => {
13144                    #[allow(irrefutable_let_patterns)]
13145                    if let InternalCapability::Protocol(_) = self {
13146                        // Do nothing, read the value into the object
13147                    } else {
13148                        // Initialize `self` to the right variant
13149                        *self = InternalCapability::Protocol(fidl::new_empty!(
13150                            fidl::encoding::BoundedString<100>,
13151                            D
13152                        ));
13153                    }
13154                    #[allow(irrefutable_let_patterns)]
13155                    if let InternalCapability::Protocol(ref mut val) = self {
13156                        fidl::decode!(
13157                            fidl::encoding::BoundedString<100>,
13158                            D,
13159                            val,
13160                            decoder,
13161                            _inner_offset,
13162                            depth
13163                        )?;
13164                    } else {
13165                        unreachable!()
13166                    }
13167                }
13168                6 => {
13169                    #[allow(irrefutable_let_patterns)]
13170                    if let InternalCapability::Resolver(_) = self {
13171                        // Do nothing, read the value into the object
13172                    } else {
13173                        // Initialize `self` to the right variant
13174                        *self = InternalCapability::Resolver(fidl::new_empty!(
13175                            fidl::encoding::BoundedString<100>,
13176                            D
13177                        ));
13178                    }
13179                    #[allow(irrefutable_let_patterns)]
13180                    if let InternalCapability::Resolver(ref mut val) = self {
13181                        fidl::decode!(
13182                            fidl::encoding::BoundedString<100>,
13183                            D,
13184                            val,
13185                            decoder,
13186                            _inner_offset,
13187                            depth
13188                        )?;
13189                    } else {
13190                        unreachable!()
13191                    }
13192                }
13193                7 => {
13194                    #[allow(irrefutable_let_patterns)]
13195                    if let InternalCapability::Runner(_) = self {
13196                        // Do nothing, read the value into the object
13197                    } else {
13198                        // Initialize `self` to the right variant
13199                        *self = InternalCapability::Runner(fidl::new_empty!(
13200                            fidl::encoding::BoundedString<100>,
13201                            D
13202                        ));
13203                    }
13204                    #[allow(irrefutable_let_patterns)]
13205                    if let InternalCapability::Runner(ref mut val) = self {
13206                        fidl::decode!(
13207                            fidl::encoding::BoundedString<100>,
13208                            D,
13209                            val,
13210                            decoder,
13211                            _inner_offset,
13212                            depth
13213                        )?;
13214                    } else {
13215                        unreachable!()
13216                    }
13217                }
13218                8 => {
13219                    #[allow(irrefutable_let_patterns)]
13220                    if let InternalCapability::Service(_) = self {
13221                        // Do nothing, read the value into the object
13222                    } else {
13223                        // Initialize `self` to the right variant
13224                        *self = InternalCapability::Service(fidl::new_empty!(
13225                            fidl::encoding::BoundedString<100>,
13226                            D
13227                        ));
13228                    }
13229                    #[allow(irrefutable_let_patterns)]
13230                    if let InternalCapability::Service(ref mut val) = self {
13231                        fidl::decode!(
13232                            fidl::encoding::BoundedString<100>,
13233                            D,
13234                            val,
13235                            decoder,
13236                            _inner_offset,
13237                            depth
13238                        )?;
13239                    } else {
13240                        unreachable!()
13241                    }
13242                }
13243                9 => {
13244                    #[allow(irrefutable_let_patterns)]
13245                    if let InternalCapability::Storage(_) = self {
13246                        // Do nothing, read the value into the object
13247                    } else {
13248                        // Initialize `self` to the right variant
13249                        *self = InternalCapability::Storage(fidl::new_empty!(
13250                            fidl::encoding::BoundedString<100>,
13251                            D
13252                        ));
13253                    }
13254                    #[allow(irrefutable_let_patterns)]
13255                    if let InternalCapability::Storage(ref mut val) = self {
13256                        fidl::decode!(
13257                            fidl::encoding::BoundedString<100>,
13258                            D,
13259                            val,
13260                            decoder,
13261                            _inner_offset,
13262                            depth
13263                        )?;
13264                    } else {
13265                        unreachable!()
13266                    }
13267                }
13268                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13269            }
13270            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13271                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13272            }
13273            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13274                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13275            }
13276            Ok(())
13277        }
13278    }
13279}