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