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    /// Runtime configuration for Scudo heap allocation, using a 'KEY=VALUE,KEY=VALUE'
401    /// format. See Scudo flags documentation for details. It is shadowed by `SCUDO_OPTIONS`
402    pub scudo_options: Option<String>,
403    #[doc(hidden)]
404    pub __source_breaking: fidl::marker::SourceBreaking,
405}
406
407impl fidl::Persistable for Config {}
408
409/// Defines a capability policy entry in the set of debug capability policy
410/// allowlists.
411#[derive(Clone, Debug, Default, PartialEq)]
412pub struct DebugRegistrationAllowlistEntry {
413    /// The name of the capability as it's registered in the environment.
414    pub name: Option<String>,
415    /// Represents the type of capability that is being restricted along
416    /// with any other properties required by a particular capability type.
417    pub debug: Option<AllowlistedDebugRegistration>,
418    /// The moniker of the component which is allowed to register
419    /// this capability in its environment's debug sction.
420    pub moniker: Option<String>,
421    /// Name of the environment where this capability can be registered.
422    pub environment_name: Option<String>,
423    #[doc(hidden)]
424    pub __source_breaking: fidl::marker::SourceBreaking,
425}
426
427impl fidl::Persistable for DebugRegistrationAllowlistEntry {}
428
429/// Defines the total set of debug capability allowlists.
430#[derive(Clone, Debug, Default, PartialEq)]
431pub struct DebugRegistrationPolicyAllowlists {
432    pub allowlist: Option<Vec<DebugRegistrationAllowlistEntry>>,
433    #[doc(hidden)]
434    pub __source_breaking: fidl::marker::SourceBreaking,
435}
436
437impl fidl::Persistable for DebugRegistrationPolicyAllowlists {}
438
439#[derive(Clone, Debug, Default, PartialEq)]
440pub struct Environment {
441    pub capability: Option<ComponentCapability>,
442    pub moniker: Option<String>,
443    #[doc(hidden)]
444    pub __source_breaking: fidl::marker::SourceBreaking,
445}
446
447impl fidl::Persistable for Environment {}
448
449#[derive(Clone, Debug, Default, PartialEq)]
450pub struct EnvironmentSource {
451    pub source_name: Option<String>,
452    pub source: Option<fidl_fuchsia_component_decl__common::Ref>,
453    #[doc(hidden)]
454    pub __source_breaking: fidl::marker::SourceBreaking,
455}
456
457impl fidl::Persistable for EnvironmentSource {}
458
459/// This value is used internally by event stream routers, to carry information
460/// pertinent to the route.
461#[derive(Clone, Debug, Default, PartialEq)]
462pub struct EventStreamRouteMetadata {
463    /// The moniker of the component that has set a scope on this event stream.
464    /// Unset if there is no scope on the event stream.
465    pub scope_moniker: Option<String>,
466    /// The scope(s) from which the consumer of this event stream will be able
467    /// to observe events. Relative to the `scope_moniker`. Unset if there is no
468    /// scope on the event stream.
469    pub scope: Option<Vec<fidl_fuchsia_component_decl__common::Ref>>,
470    #[doc(hidden)]
471    pub __source_breaking: fidl::marker::SourceBreaking,
472}
473
474impl fidl::Persistable for EventStreamRouteMetadata {}
475
476#[derive(Clone, Debug, Default, PartialEq)]
477pub struct FilteredAggregateProvider {
478    pub capability: Option<AggregateCapability>,
479    pub moniker: Option<String>,
480    pub offer_service_decls: Option<Vec<fidl_fuchsia_component_decl__common::OfferService>>,
481    pub sources: Option<Sources>,
482    #[doc(hidden)]
483    pub __source_breaking: fidl::marker::SourceBreaking,
484}
485
486impl fidl::Persistable for FilteredAggregateProvider {}
487
488#[derive(Clone, Debug, Default, PartialEq)]
489pub struct FilteredProvider {
490    pub capability: Option<AggregateCapability>,
491    pub moniker: Option<String>,
492    pub service_capability: Option<ComponentCapability>,
493    pub offer_service_decl: Option<fidl_fuchsia_component_decl__common::OfferService>,
494    #[doc(hidden)]
495    pub __source_breaking: fidl::marker::SourceBreaking,
496}
497
498impl fidl::Persistable for FilteredProvider {}
499
500#[derive(Clone, Debug, Default, PartialEq)]
501pub struct Framework {
502    pub capability: Option<InternalCapability>,
503    pub moniker: Option<String>,
504    #[doc(hidden)]
505    pub __source_breaking: fidl::marker::SourceBreaking,
506}
507
508impl fidl::Persistable for Framework {}
509
510/// Information about the health checks during the update process.
511#[derive(Clone, Debug, Default, PartialEq)]
512pub struct HealthCheck {
513    /// Component monikers that must be healthy in order to complete an OTA update.
514    pub monikers: Option<Vec<String>>,
515    #[doc(hidden)]
516    pub __source_breaking: fidl::marker::SourceBreaking,
517}
518
519impl fidl::Persistable for HealthCheck {}
520
521/// Declares a group of extra capabilities that are layered at runtime on top of
522/// those that would normally be routed to the component.
523#[derive(Clone, Debug, Default, PartialEq)]
524pub struct InjectedCapabilities {
525    /// (Required) Components that will have these capabilities injected into.
526    pub components: Option<Vec<String>>,
527    /// (Optional) Capabilities to be injected.
528    pub use_: Option<Vec<InjectedUse>>,
529    #[doc(hidden)]
530    pub __source_breaking: fidl::marker::SourceBreaking,
531}
532
533impl fidl::Persistable for InjectedCapabilities {}
534
535/// Declares a protocol to be injected into a component.
536#[derive(Clone, Debug, Default, PartialEq)]
537pub struct InjectedUseProtocol {
538    /// (Required) Name identifying the protocol within the root component.
539    pub source_name: Option<String>,
540    /// (Required) The path where the capability should be injected in the new
541    /// component's namespace.
542    ///
543    /// Must be an absolute path starting with /.
544    pub target_path: Option<String>,
545    #[doc(hidden)]
546    pub __source_breaking: fidl::marker::SourceBreaking,
547}
548
549impl fidl::Persistable for InjectedUseProtocol {}
550
551#[derive(Clone, Debug, Default, PartialEq)]
552pub struct InstanceIdEntry {
553    /// A 256-bit identifier encoded in base64 which is unique across all other
554    /// instance IDs in the index.
555    pub instance_id: Option<String>,
556    /// The moniker identifying the component instance.
557    pub moniker: Option<String>,
558    #[doc(hidden)]
559    pub __source_breaking: fidl::marker::SourceBreaking,
560}
561
562impl fidl::Persistable for InstanceIdEntry {}
563
564/// Allowlists for Zircon job policy.
565#[derive(Clone, Debug, Default, PartialEq)]
566pub struct JobPolicyAllowlists {
567    /// Allowlist entry monikers for components allowed to be given the
568    /// ZX_POL_AMBIENT_MARK_VMO_EXEC job policy.
569    ///
570    /// Components must request this policy by including "job_policy_ambient_mark_vmo_exec: true" in
571    /// their CML's `program` section and must be using the ELF runner.
572    /// This is equivalent to the v1 'deprecated-ambient-replace-as-executable' feature.
573    pub ambient_mark_vmo_exec: Option<Vec<String>>,
574    /// Allowlist entry monikers for components allowed to have their original process
575    /// marked as critical to component_manager's job.
576    ///
577    /// Components must request this critical marking by including "main_process_critical: true" in
578    /// their CML's `program` section and must be using the ELF runner.
579    pub main_process_critical: Option<Vec<String>>,
580    /// Allowlist entry monikers for components allowed to call zx_process_create directly
581    /// (e.g., do not have ZX_POL_NEW_PROCESS set to ZX_POL_ACTION_DENY).
582    ///
583    /// Components must request this policy by including "job_policy_create_raw_processes: true" in
584    /// their manifest's program object and must be using the ELF runner.
585    pub create_raw_processes: Option<Vec<String>>,
586    #[doc(hidden)]
587    pub __source_breaking: fidl::marker::SourceBreaking,
588}
589
590impl fidl::Persistable for JobPolicyAllowlists {}
591
592#[derive(Clone, Debug, Default, PartialEq)]
593pub struct Namespace {
594    pub capability: Option<ComponentCapability>,
595    #[doc(hidden)]
596    pub __source_breaking: fidl::marker::SourceBreaking,
597}
598
599impl fidl::Persistable for Namespace {}
600
601/// Runtime security policy.
602#[derive(Clone, Debug, Default, PartialEq)]
603pub struct SecurityPolicy {
604    /// Allowlists for Zircon job policy.
605    pub job_policy: Option<JobPolicyAllowlists>,
606    /// Capability access policy.
607    pub capability_policy: Option<CapabilityPolicyAllowlists>,
608    /// Debug capability registration policy.
609    pub debug_registration_policy: Option<DebugRegistrationPolicyAllowlists>,
610    /// Component child options policy.
611    pub child_policy: Option<ChildPolicyAllowlists>,
612    #[doc(hidden)]
613    pub __source_breaking: fidl::marker::SourceBreaking,
614}
615
616impl fidl::Persistable for SecurityPolicy {}
617
618#[derive(Clone, Debug, Default, PartialEq)]
619pub struct Sources {
620    pub framework: Option<bool>,
621    pub builtin: Option<bool>,
622    pub capability: Option<bool>,
623    pub collection: Option<bool>,
624    pub namespace: Option<bool>,
625    pub component: Option<bool>,
626    pub capability_type: Option<String>,
627    #[doc(hidden)]
628    pub __source_breaking: fidl::marker::SourceBreaking,
629}
630
631impl fidl::Persistable for Sources {}
632
633#[derive(Clone, Debug, Default, PartialEq)]
634pub struct Void {
635    pub capability: Option<InternalCapability>,
636    pub moniker: Option<String>,
637    #[doc(hidden)]
638    pub __source_breaking: fidl::marker::SourceBreaking,
639}
640
641impl fidl::Persistable for Void {}
642
643#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
644pub enum AggregateCapability {
645    Service(String),
646}
647
648impl AggregateCapability {
649    #[inline]
650    pub fn ordinal(&self) -> u64 {
651        match *self {
652            Self::Service(_) => 1,
653        }
654    }
655}
656
657impl fidl::Persistable for AggregateCapability {}
658
659#[derive(Clone, Debug, PartialEq)]
660pub enum AggregateMember {
661    Child(fidl_fuchsia_component_decl__common::ChildRef),
662    Collection(String),
663    Parent(fidl_fuchsia_component_decl__common::ParentRef),
664    Self_(fidl_fuchsia_component_decl__common::SelfRef),
665}
666
667impl AggregateMember {
668    #[inline]
669    pub fn ordinal(&self) -> u64 {
670        match *self {
671            Self::Child(_) => 1,
672            Self::Collection(_) => 2,
673            Self::Parent(_) => 3,
674            Self::Self_(_) => 4,
675        }
676    }
677}
678
679impl fidl::Persistable for AggregateMember {}
680
681/// Represents the class of capabilities supported to be allowlisted.
682#[derive(Clone, Debug)]
683pub enum AllowlistedCapability {
684    Directory(AllowlistedDirectory),
685    Protocol(AllowlistedProtocol),
686    Service(AllowlistedService),
687    Storage(AllowlistedStorage),
688    Runner(AllowlistedRunner),
689    Resolver(AllowlistedResolver),
690    #[doc(hidden)]
691    __SourceBreaking {
692        unknown_ordinal: u64,
693    },
694}
695
696/// Pattern that matches an unknown `AllowlistedCapability` member.
697#[macro_export]
698macro_rules! AllowlistedCapabilityUnknown {
699    () => {
700        _
701    };
702}
703
704// Custom PartialEq so that unknown variants are not equal to themselves.
705impl PartialEq for AllowlistedCapability {
706    fn eq(&self, other: &Self) -> bool {
707        match (self, other) {
708            (Self::Directory(x), Self::Directory(y)) => *x == *y,
709            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
710            (Self::Service(x), Self::Service(y)) => *x == *y,
711            (Self::Storage(x), Self::Storage(y)) => *x == *y,
712            (Self::Runner(x), Self::Runner(y)) => *x == *y,
713            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
714            _ => false,
715        }
716    }
717}
718
719impl AllowlistedCapability {
720    #[inline]
721    pub fn ordinal(&self) -> u64 {
722        match *self {
723            Self::Directory(_) => 1,
724            Self::Protocol(_) => 3,
725            Self::Service(_) => 4,
726            Self::Storage(_) => 5,
727            Self::Runner(_) => 6,
728            Self::Resolver(_) => 7,
729            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
730        }
731    }
732
733    #[inline]
734    pub fn unknown_variant_for_testing() -> Self {
735        Self::__SourceBreaking { unknown_ordinal: 0 }
736    }
737
738    #[inline]
739    pub fn is_unknown(&self) -> bool {
740        match self {
741            Self::__SourceBreaking { .. } => true,
742            _ => false,
743        }
744    }
745}
746
747impl fidl::Persistable for AllowlistedCapability {}
748
749/// Represents the class of capabilities supported to be allowlisted.
750#[derive(Clone, Debug)]
751pub enum AllowlistedDebugRegistration {
752    Protocol(AllowlistedProtocol),
753    #[doc(hidden)]
754    __SourceBreaking {
755        unknown_ordinal: u64,
756    },
757}
758
759/// Pattern that matches an unknown `AllowlistedDebugRegistration` member.
760#[macro_export]
761macro_rules! AllowlistedDebugRegistrationUnknown {
762    () => {
763        _
764    };
765}
766
767// Custom PartialEq so that unknown variants are not equal to themselves.
768impl PartialEq for AllowlistedDebugRegistration {
769    fn eq(&self, other: &Self) -> bool {
770        match (self, other) {
771            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
772            _ => false,
773        }
774    }
775}
776
777impl AllowlistedDebugRegistration {
778    #[inline]
779    pub fn ordinal(&self) -> u64 {
780        match *self {
781            Self::Protocol(_) => 1,
782            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
783        }
784    }
785
786    #[inline]
787    pub fn unknown_variant_for_testing() -> Self {
788        Self::__SourceBreaking { unknown_ordinal: 0 }
789    }
790
791    #[inline]
792    pub fn is_unknown(&self) -> bool {
793        match self {
794            Self::__SourceBreaking { .. } => true,
795            _ => false,
796        }
797    }
798}
799
800impl fidl::Persistable for AllowlistedDebugRegistration {}
801
802#[derive(Clone, Debug, PartialEq)]
803pub enum CapabilitySource {
804    Component(Component),
805    Framework(Framework),
806    Builtin(Builtin),
807    Namespace(Namespace),
808    Capability(Capability),
809    AnonymizedAggregate(AnonymizedAggregate),
810    FilteredProvider(FilteredProvider),
811    FilteredAggregateProvider(FilteredAggregateProvider),
812    Environment(Environment),
813    Void(Void),
814    RemotedAt(String),
815}
816
817impl CapabilitySource {
818    #[inline]
819    pub fn ordinal(&self) -> u64 {
820        match *self {
821            Self::Component(_) => 1,
822            Self::Framework(_) => 2,
823            Self::Builtin(_) => 3,
824            Self::Namespace(_) => 4,
825            Self::Capability(_) => 5,
826            Self::AnonymizedAggregate(_) => 6,
827            Self::FilteredProvider(_) => 7,
828            Self::FilteredAggregateProvider(_) => 8,
829            Self::Environment(_) => 9,
830            Self::Void(_) => 10,
831            Self::RemotedAt(_) => 11,
832        }
833    }
834}
835
836impl fidl::Persistable for CapabilitySource {}
837
838#[derive(Clone, Debug, PartialEq)]
839pub enum ComponentCapability {
840    Use_(fidl_fuchsia_component_decl__common::Use),
841    Offer(fidl_fuchsia_component_decl__common::Offer),
842    Expose(fidl_fuchsia_component_decl__common::Expose),
843    Config(fidl_fuchsia_component_decl__common::Configuration),
844    Dictionary(fidl_fuchsia_component_decl__common::Dictionary),
845    Directory(fidl_fuchsia_component_decl__common::Directory),
846    Environment(EnvironmentCapability),
847    EventStream(fidl_fuchsia_component_decl__common::EventStream),
848    Protocol(fidl_fuchsia_component_decl__common::Protocol),
849    Resolver(fidl_fuchsia_component_decl__common::Resolver),
850    Runner(fidl_fuchsia_component_decl__common::Runner),
851    Service(fidl_fuchsia_component_decl__common::Service),
852    Storage(fidl_fuchsia_component_decl__common::Storage),
853}
854
855impl ComponentCapability {
856    #[inline]
857    pub fn ordinal(&self) -> u64 {
858        match *self {
859            Self::Use_(_) => 1,
860            Self::Offer(_) => 2,
861            Self::Expose(_) => 3,
862            Self::Config(_) => 4,
863            Self::Dictionary(_) => 5,
864            Self::Directory(_) => 6,
865            Self::Environment(_) => 7,
866            Self::EventStream(_) => 8,
867            Self::Protocol(_) => 9,
868            Self::Resolver(_) => 10,
869            Self::Runner(_) => 11,
870            Self::Service(_) => 12,
871            Self::Storage(_) => 13,
872        }
873    }
874}
875
876impl fidl::Persistable for ComponentCapability {}
877
878#[derive(Clone, Debug, PartialEq)]
879pub enum EnvironmentCapability {
880    Runner(EnvironmentSource),
881    Resolver(EnvironmentSource),
882    Debug(EnvironmentSource),
883}
884
885impl EnvironmentCapability {
886    #[inline]
887    pub fn ordinal(&self) -> u64 {
888        match *self {
889            Self::Runner(_) => 1,
890            Self::Resolver(_) => 2,
891            Self::Debug(_) => 3,
892        }
893    }
894}
895
896impl fidl::Persistable for EnvironmentCapability {}
897
898/// Declares a capability to be injected into a component.
899#[derive(Clone, Debug)]
900pub enum InjectedUse {
901    Protocol(InjectedUseProtocol),
902    #[doc(hidden)]
903    __SourceBreaking {
904        unknown_ordinal: u64,
905    },
906}
907
908/// Pattern that matches an unknown `InjectedUse` member.
909#[macro_export]
910macro_rules! InjectedUseUnknown {
911    () => {
912        _
913    };
914}
915
916// Custom PartialEq so that unknown variants are not equal to themselves.
917impl PartialEq for InjectedUse {
918    fn eq(&self, other: &Self) -> bool {
919        match (self, other) {
920            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
921            _ => false,
922        }
923    }
924}
925
926impl InjectedUse {
927    #[inline]
928    pub fn ordinal(&self) -> u64 {
929        match *self {
930            Self::Protocol(_) => 1,
931            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
932        }
933    }
934
935    #[inline]
936    pub fn unknown_variant_for_testing() -> Self {
937        Self::__SourceBreaking { unknown_ordinal: 0 }
938    }
939
940    #[inline]
941    pub fn is_unknown(&self) -> bool {
942        match self {
943            Self::__SourceBreaking { .. } => true,
944            _ => false,
945        }
946    }
947}
948
949impl fidl::Persistable for InjectedUse {}
950
951#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
952pub enum InternalCapability {
953    Config(String),
954    Dictionary(String),
955    Directory(String),
956    EventStream(String),
957    Protocol(String),
958    Resolver(String),
959    Runner(String),
960    Service(String),
961    Storage(String),
962}
963
964impl InternalCapability {
965    #[inline]
966    pub fn ordinal(&self) -> u64 {
967        match *self {
968            Self::Config(_) => 1,
969            Self::Dictionary(_) => 2,
970            Self::Directory(_) => 3,
971            Self::EventStream(_) => 4,
972            Self::Protocol(_) => 5,
973            Self::Resolver(_) => 6,
974            Self::Runner(_) => 7,
975            Self::Service(_) => 8,
976            Self::Storage(_) => 9,
977        }
978    }
979}
980
981impl fidl::Persistable for InternalCapability {}
982
983pub mod component_sandbox_retriever_ordinals {
984    pub const GET_MY_SANDBOX: u64 = 0x61ca075fb9860e84;
985}
986
987mod internal {
988    use super::*;
989    unsafe impl fidl::encoding::TypeMarker for BuiltinBootResolver {
990        type Owned = Self;
991
992        #[inline(always)]
993        fn inline_align(_context: fidl::encoding::Context) -> usize {
994            std::mem::align_of::<u8>()
995        }
996
997        #[inline(always)]
998        fn inline_size(_context: fidl::encoding::Context) -> usize {
999            std::mem::size_of::<u8>()
1000        }
1001
1002        #[inline(always)]
1003        fn encode_is_copy() -> bool {
1004            true
1005        }
1006
1007        #[inline(always)]
1008        fn decode_is_copy() -> bool {
1009            false
1010        }
1011    }
1012
1013    impl fidl::encoding::ValueTypeMarker for BuiltinBootResolver {
1014        type Borrowed<'a> = Self;
1015        #[inline(always)]
1016        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1017            *value
1018        }
1019    }
1020
1021    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1022        for BuiltinBootResolver
1023    {
1024        #[inline]
1025        unsafe fn encode(
1026            self,
1027            encoder: &mut fidl::encoding::Encoder<'_, D>,
1028            offset: usize,
1029            _depth: fidl::encoding::Depth,
1030        ) -> fidl::Result<()> {
1031            encoder.debug_check_bounds::<Self>(offset);
1032            encoder.write_num(self.into_primitive(), offset);
1033            Ok(())
1034        }
1035    }
1036
1037    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuiltinBootResolver {
1038        #[inline(always)]
1039        fn new_empty() -> Self {
1040            Self::None
1041        }
1042
1043        #[inline]
1044        unsafe fn decode(
1045            &mut self,
1046            decoder: &mut fidl::encoding::Decoder<'_, D>,
1047            offset: usize,
1048            _depth: fidl::encoding::Depth,
1049        ) -> fidl::Result<()> {
1050            decoder.debug_check_bounds::<Self>(offset);
1051            let prim = decoder.read_num::<u8>(offset);
1052
1053            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1054            Ok(())
1055        }
1056    }
1057    unsafe impl fidl::encoding::TypeMarker for LogDestination {
1058        type Owned = Self;
1059
1060        #[inline(always)]
1061        fn inline_align(_context: fidl::encoding::Context) -> usize {
1062            std::mem::align_of::<u8>()
1063        }
1064
1065        #[inline(always)]
1066        fn inline_size(_context: fidl::encoding::Context) -> usize {
1067            std::mem::size_of::<u8>()
1068        }
1069
1070        #[inline(always)]
1071        fn encode_is_copy() -> bool {
1072            true
1073        }
1074
1075        #[inline(always)]
1076        fn decode_is_copy() -> bool {
1077            false
1078        }
1079    }
1080
1081    impl fidl::encoding::ValueTypeMarker for LogDestination {
1082        type Borrowed<'a> = Self;
1083        #[inline(always)]
1084        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1085            *value
1086        }
1087    }
1088
1089    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogDestination {
1090        #[inline]
1091        unsafe fn encode(
1092            self,
1093            encoder: &mut fidl::encoding::Encoder<'_, D>,
1094            offset: usize,
1095            _depth: fidl::encoding::Depth,
1096        ) -> fidl::Result<()> {
1097            encoder.debug_check_bounds::<Self>(offset);
1098            encoder.write_num(self.into_primitive(), offset);
1099            Ok(())
1100        }
1101    }
1102
1103    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogDestination {
1104        #[inline(always)]
1105        fn new_empty() -> Self {
1106            Self::Syslog
1107        }
1108
1109        #[inline]
1110        unsafe fn decode(
1111            &mut self,
1112            decoder: &mut fidl::encoding::Decoder<'_, D>,
1113            offset: usize,
1114            _depth: fidl::encoding::Depth,
1115        ) -> fidl::Result<()> {
1116            decoder.debug_check_bounds::<Self>(offset);
1117            let prim = decoder.read_num::<u8>(offset);
1118
1119            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1120            Ok(())
1121        }
1122    }
1123    unsafe impl fidl::encoding::TypeMarker for RealmBuilderResolverAndRunner {
1124        type Owned = Self;
1125
1126        #[inline(always)]
1127        fn inline_align(_context: fidl::encoding::Context) -> usize {
1128            std::mem::align_of::<u8>()
1129        }
1130
1131        #[inline(always)]
1132        fn inline_size(_context: fidl::encoding::Context) -> usize {
1133            std::mem::size_of::<u8>()
1134        }
1135
1136        #[inline(always)]
1137        fn encode_is_copy() -> bool {
1138            true
1139        }
1140
1141        #[inline(always)]
1142        fn decode_is_copy() -> bool {
1143            false
1144        }
1145    }
1146
1147    impl fidl::encoding::ValueTypeMarker for RealmBuilderResolverAndRunner {
1148        type Borrowed<'a> = Self;
1149        #[inline(always)]
1150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1151            *value
1152        }
1153    }
1154
1155    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1156        for RealmBuilderResolverAndRunner
1157    {
1158        #[inline]
1159        unsafe fn encode(
1160            self,
1161            encoder: &mut fidl::encoding::Encoder<'_, D>,
1162            offset: usize,
1163            _depth: fidl::encoding::Depth,
1164        ) -> fidl::Result<()> {
1165            encoder.debug_check_bounds::<Self>(offset);
1166            encoder.write_num(self.into_primitive(), offset);
1167            Ok(())
1168        }
1169    }
1170
1171    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1172        for RealmBuilderResolverAndRunner
1173    {
1174        #[inline(always)]
1175        fn new_empty() -> Self {
1176            Self::None
1177        }
1178
1179        #[inline]
1180        unsafe fn decode(
1181            &mut self,
1182            decoder: &mut fidl::encoding::Decoder<'_, D>,
1183            offset: usize,
1184            _depth: fidl::encoding::Depth,
1185        ) -> fidl::Result<()> {
1186            decoder.debug_check_bounds::<Self>(offset);
1187            let prim = decoder.read_num::<u8>(offset);
1188
1189            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1190            Ok(())
1191        }
1192    }
1193    unsafe impl fidl::encoding::TypeMarker for TraceProvider {
1194        type Owned = Self;
1195
1196        #[inline(always)]
1197        fn inline_align(_context: fidl::encoding::Context) -> usize {
1198            std::mem::align_of::<u8>()
1199        }
1200
1201        #[inline(always)]
1202        fn inline_size(_context: fidl::encoding::Context) -> usize {
1203            std::mem::size_of::<u8>()
1204        }
1205
1206        #[inline(always)]
1207        fn encode_is_copy() -> bool {
1208            true
1209        }
1210
1211        #[inline(always)]
1212        fn decode_is_copy() -> bool {
1213            false
1214        }
1215    }
1216
1217    impl fidl::encoding::ValueTypeMarker for TraceProvider {
1218        type Borrowed<'a> = Self;
1219        #[inline(always)]
1220        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1221            *value
1222        }
1223    }
1224
1225    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TraceProvider {
1226        #[inline]
1227        unsafe fn encode(
1228            self,
1229            encoder: &mut fidl::encoding::Encoder<'_, D>,
1230            offset: usize,
1231            _depth: fidl::encoding::Depth,
1232        ) -> fidl::Result<()> {
1233            encoder.debug_check_bounds::<Self>(offset);
1234            encoder.write_num(self.into_primitive(), offset);
1235            Ok(())
1236        }
1237    }
1238
1239    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceProvider {
1240        #[inline(always)]
1241        fn new_empty() -> Self {
1242            Self::Namespace
1243        }
1244
1245        #[inline]
1246        unsafe fn decode(
1247            &mut self,
1248            decoder: &mut fidl::encoding::Decoder<'_, D>,
1249            offset: usize,
1250            _depth: fidl::encoding::Depth,
1251        ) -> fidl::Result<()> {
1252            decoder.debug_check_bounds::<Self>(offset);
1253            let prim = decoder.read_num::<u8>(offset);
1254
1255            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1256            Ok(())
1257        }
1258    }
1259    unsafe impl fidl::encoding::TypeMarker for VmexSource {
1260        type Owned = Self;
1261
1262        #[inline(always)]
1263        fn inline_align(_context: fidl::encoding::Context) -> usize {
1264            std::mem::align_of::<u8>()
1265        }
1266
1267        #[inline(always)]
1268        fn inline_size(_context: fidl::encoding::Context) -> usize {
1269            std::mem::size_of::<u8>()
1270        }
1271
1272        #[inline(always)]
1273        fn encode_is_copy() -> bool {
1274            true
1275        }
1276
1277        #[inline(always)]
1278        fn decode_is_copy() -> bool {
1279            false
1280        }
1281    }
1282
1283    impl fidl::encoding::ValueTypeMarker for VmexSource {
1284        type Borrowed<'a> = Self;
1285        #[inline(always)]
1286        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1287            *value
1288        }
1289    }
1290
1291    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for VmexSource {
1292        #[inline]
1293        unsafe fn encode(
1294            self,
1295            encoder: &mut fidl::encoding::Encoder<'_, D>,
1296            offset: usize,
1297            _depth: fidl::encoding::Depth,
1298        ) -> fidl::Result<()> {
1299            encoder.debug_check_bounds::<Self>(offset);
1300            encoder.write_num(self.into_primitive(), offset);
1301            Ok(())
1302        }
1303    }
1304
1305    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmexSource {
1306        #[inline(always)]
1307        fn new_empty() -> Self {
1308            Self::SystemResource
1309        }
1310
1311        #[inline]
1312        unsafe fn decode(
1313            &mut self,
1314            decoder: &mut fidl::encoding::Decoder<'_, D>,
1315            offset: usize,
1316            _depth: fidl::encoding::Depth,
1317        ) -> fidl::Result<()> {
1318            decoder.debug_check_bounds::<Self>(offset);
1319            let prim = decoder.read_num::<u8>(offset);
1320
1321            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1322            Ok(())
1323        }
1324    }
1325
1326    impl AbiRevisionPolicy {
1327        #[inline(always)]
1328        fn max_ordinal_present(&self) -> u64 {
1329            if let Some(_) = self.allowlist {
1330                return 1;
1331            }
1332            0
1333        }
1334    }
1335
1336    impl fidl::encoding::ValueTypeMarker for AbiRevisionPolicy {
1337        type Borrowed<'a> = &'a Self;
1338        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1339            value
1340        }
1341    }
1342
1343    unsafe impl fidl::encoding::TypeMarker for AbiRevisionPolicy {
1344        type Owned = Self;
1345
1346        #[inline(always)]
1347        fn inline_align(_context: fidl::encoding::Context) -> usize {
1348            8
1349        }
1350
1351        #[inline(always)]
1352        fn inline_size(_context: fidl::encoding::Context) -> usize {
1353            16
1354        }
1355    }
1356
1357    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AbiRevisionPolicy, D>
1358        for &AbiRevisionPolicy
1359    {
1360        unsafe fn encode(
1361            self,
1362            encoder: &mut fidl::encoding::Encoder<'_, D>,
1363            offset: usize,
1364            mut depth: fidl::encoding::Depth,
1365        ) -> fidl::Result<()> {
1366            encoder.debug_check_bounds::<AbiRevisionPolicy>(offset);
1367            // Vector header
1368            let max_ordinal: u64 = self.max_ordinal_present();
1369            encoder.write_num(max_ordinal, offset);
1370            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1371            // Calling encoder.out_of_line_offset(0) is not allowed.
1372            if max_ordinal == 0 {
1373                return Ok(());
1374            }
1375            depth.increment()?;
1376            let envelope_size = 8;
1377            let bytes_len = max_ordinal as usize * envelope_size;
1378            #[allow(unused_variables)]
1379            let offset = encoder.out_of_line_offset(bytes_len);
1380            let mut _prev_end_offset: usize = 0;
1381            if 1 > max_ordinal {
1382                return Ok(());
1383            }
1384
1385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1386            // are envelope_size bytes.
1387            let cur_offset: usize = (1 - 1) * envelope_size;
1388
1389            // Zero reserved fields.
1390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1391
1392            // Safety:
1393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1395            //   envelope_size bytes, there is always sufficient room.
1396            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1397            self.allowlist.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1398            encoder, offset + cur_offset, depth
1399        )?;
1400
1401            _prev_end_offset = cur_offset + envelope_size;
1402
1403            Ok(())
1404        }
1405    }
1406
1407    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AbiRevisionPolicy {
1408        #[inline(always)]
1409        fn new_empty() -> Self {
1410            Self::default()
1411        }
1412
1413        unsafe fn decode(
1414            &mut self,
1415            decoder: &mut fidl::encoding::Decoder<'_, D>,
1416            offset: usize,
1417            mut depth: fidl::encoding::Depth,
1418        ) -> fidl::Result<()> {
1419            decoder.debug_check_bounds::<Self>(offset);
1420            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1421                None => return Err(fidl::Error::NotNullable),
1422                Some(len) => len,
1423            };
1424            // Calling decoder.out_of_line_offset(0) is not allowed.
1425            if len == 0 {
1426                return Ok(());
1427            };
1428            depth.increment()?;
1429            let envelope_size = 8;
1430            let bytes_len = len * envelope_size;
1431            let offset = decoder.out_of_line_offset(bytes_len)?;
1432            // Decode the envelope for each type.
1433            let mut _next_ordinal_to_read = 0;
1434            let mut next_offset = offset;
1435            let end_offset = offset + bytes_len;
1436            _next_ordinal_to_read += 1;
1437            if next_offset >= end_offset {
1438                return Ok(());
1439            }
1440
1441            // Decode unknown envelopes for gaps in ordinals.
1442            while _next_ordinal_to_read < 1 {
1443                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1444                _next_ordinal_to_read += 1;
1445                next_offset += envelope_size;
1446            }
1447
1448            let next_out_of_line = decoder.next_out_of_line();
1449            let handles_before = decoder.remaining_handles();
1450            if let Some((inlined, num_bytes, num_handles)) =
1451                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1452            {
1453                let member_inline_size = <fidl::encoding::Vector<
1454                    fidl::encoding::BoundedString<4096>,
1455                    128,
1456                > as fidl::encoding::TypeMarker>::inline_size(
1457                    decoder.context
1458                );
1459                if inlined != (member_inline_size <= 4) {
1460                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1461                }
1462                let inner_offset;
1463                let mut inner_depth = depth.clone();
1464                if inlined {
1465                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1466                    inner_offset = next_offset;
1467                } else {
1468                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1469                    inner_depth.increment()?;
1470                }
1471                let val_ref = self.allowlist.get_or_insert_with(|| {
1472                    fidl::new_empty!(
1473                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1474                        D
1475                    )
1476                });
1477                fidl::decode!(
1478                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1479                    D,
1480                    val_ref,
1481                    decoder,
1482                    inner_offset,
1483                    inner_depth
1484                )?;
1485                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1486                {
1487                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1488                }
1489                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1490                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1491                }
1492            }
1493
1494            next_offset += envelope_size;
1495
1496            // Decode the remaining unknown envelopes.
1497            while next_offset < end_offset {
1498                _next_ordinal_to_read += 1;
1499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1500                next_offset += envelope_size;
1501            }
1502
1503            Ok(())
1504        }
1505    }
1506
1507    impl AllowlistedDirectory {
1508        #[inline(always)]
1509        fn max_ordinal_present(&self) -> u64 {
1510            0
1511        }
1512    }
1513
1514    impl fidl::encoding::ValueTypeMarker for AllowlistedDirectory {
1515        type Borrowed<'a> = &'a Self;
1516        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1517            value
1518        }
1519    }
1520
1521    unsafe impl fidl::encoding::TypeMarker for AllowlistedDirectory {
1522        type Owned = Self;
1523
1524        #[inline(always)]
1525        fn inline_align(_context: fidl::encoding::Context) -> usize {
1526            8
1527        }
1528
1529        #[inline(always)]
1530        fn inline_size(_context: fidl::encoding::Context) -> usize {
1531            16
1532        }
1533    }
1534
1535    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedDirectory, D>
1536        for &AllowlistedDirectory
1537    {
1538        unsafe fn encode(
1539            self,
1540            encoder: &mut fidl::encoding::Encoder<'_, D>,
1541            offset: usize,
1542            mut depth: fidl::encoding::Depth,
1543        ) -> fidl::Result<()> {
1544            encoder.debug_check_bounds::<AllowlistedDirectory>(offset);
1545            // Vector header
1546            let max_ordinal: u64 = self.max_ordinal_present();
1547            encoder.write_num(max_ordinal, offset);
1548            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1549            // Calling encoder.out_of_line_offset(0) is not allowed.
1550            if max_ordinal == 0 {
1551                return Ok(());
1552            }
1553            depth.increment()?;
1554            let envelope_size = 8;
1555            let bytes_len = max_ordinal as usize * envelope_size;
1556            #[allow(unused_variables)]
1557            let offset = encoder.out_of_line_offset(bytes_len);
1558            let mut _prev_end_offset: usize = 0;
1559
1560            Ok(())
1561        }
1562    }
1563
1564    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedDirectory {
1565        #[inline(always)]
1566        fn new_empty() -> Self {
1567            Self::default()
1568        }
1569
1570        unsafe fn decode(
1571            &mut self,
1572            decoder: &mut fidl::encoding::Decoder<'_, D>,
1573            offset: usize,
1574            mut depth: fidl::encoding::Depth,
1575        ) -> fidl::Result<()> {
1576            decoder.debug_check_bounds::<Self>(offset);
1577            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1578                None => return Err(fidl::Error::NotNullable),
1579                Some(len) => len,
1580            };
1581            // Calling decoder.out_of_line_offset(0) is not allowed.
1582            if len == 0 {
1583                return Ok(());
1584            };
1585            depth.increment()?;
1586            let envelope_size = 8;
1587            let bytes_len = len * envelope_size;
1588            let offset = decoder.out_of_line_offset(bytes_len)?;
1589            // Decode the envelope for each type.
1590            let mut _next_ordinal_to_read = 0;
1591            let mut next_offset = offset;
1592            let end_offset = offset + bytes_len;
1593
1594            // Decode the remaining unknown envelopes.
1595            while next_offset < end_offset {
1596                _next_ordinal_to_read += 1;
1597                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1598                next_offset += envelope_size;
1599            }
1600
1601            Ok(())
1602        }
1603    }
1604
1605    impl AllowlistedProtocol {
1606        #[inline(always)]
1607        fn max_ordinal_present(&self) -> u64 {
1608            0
1609        }
1610    }
1611
1612    impl fidl::encoding::ValueTypeMarker for AllowlistedProtocol {
1613        type Borrowed<'a> = &'a Self;
1614        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1615            value
1616        }
1617    }
1618
1619    unsafe impl fidl::encoding::TypeMarker for AllowlistedProtocol {
1620        type Owned = Self;
1621
1622        #[inline(always)]
1623        fn inline_align(_context: fidl::encoding::Context) -> usize {
1624            8
1625        }
1626
1627        #[inline(always)]
1628        fn inline_size(_context: fidl::encoding::Context) -> usize {
1629            16
1630        }
1631    }
1632
1633    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedProtocol, D>
1634        for &AllowlistedProtocol
1635    {
1636        unsafe fn encode(
1637            self,
1638            encoder: &mut fidl::encoding::Encoder<'_, D>,
1639            offset: usize,
1640            mut depth: fidl::encoding::Depth,
1641        ) -> fidl::Result<()> {
1642            encoder.debug_check_bounds::<AllowlistedProtocol>(offset);
1643            // Vector header
1644            let max_ordinal: u64 = self.max_ordinal_present();
1645            encoder.write_num(max_ordinal, offset);
1646            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1647            // Calling encoder.out_of_line_offset(0) is not allowed.
1648            if max_ordinal == 0 {
1649                return Ok(());
1650            }
1651            depth.increment()?;
1652            let envelope_size = 8;
1653            let bytes_len = max_ordinal as usize * envelope_size;
1654            #[allow(unused_variables)]
1655            let offset = encoder.out_of_line_offset(bytes_len);
1656            let mut _prev_end_offset: usize = 0;
1657
1658            Ok(())
1659        }
1660    }
1661
1662    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedProtocol {
1663        #[inline(always)]
1664        fn new_empty() -> Self {
1665            Self::default()
1666        }
1667
1668        unsafe fn decode(
1669            &mut self,
1670            decoder: &mut fidl::encoding::Decoder<'_, D>,
1671            offset: usize,
1672            mut depth: fidl::encoding::Depth,
1673        ) -> fidl::Result<()> {
1674            decoder.debug_check_bounds::<Self>(offset);
1675            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1676                None => return Err(fidl::Error::NotNullable),
1677                Some(len) => len,
1678            };
1679            // Calling decoder.out_of_line_offset(0) is not allowed.
1680            if len == 0 {
1681                return Ok(());
1682            };
1683            depth.increment()?;
1684            let envelope_size = 8;
1685            let bytes_len = len * envelope_size;
1686            let offset = decoder.out_of_line_offset(bytes_len)?;
1687            // Decode the envelope for each type.
1688            let mut _next_ordinal_to_read = 0;
1689            let mut next_offset = offset;
1690            let end_offset = offset + bytes_len;
1691
1692            // Decode the remaining unknown envelopes.
1693            while next_offset < end_offset {
1694                _next_ordinal_to_read += 1;
1695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1696                next_offset += envelope_size;
1697            }
1698
1699            Ok(())
1700        }
1701    }
1702
1703    impl AllowlistedResolver {
1704        #[inline(always)]
1705        fn max_ordinal_present(&self) -> u64 {
1706            0
1707        }
1708    }
1709
1710    impl fidl::encoding::ValueTypeMarker for AllowlistedResolver {
1711        type Borrowed<'a> = &'a Self;
1712        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1713            value
1714        }
1715    }
1716
1717    unsafe impl fidl::encoding::TypeMarker for AllowlistedResolver {
1718        type Owned = Self;
1719
1720        #[inline(always)]
1721        fn inline_align(_context: fidl::encoding::Context) -> usize {
1722            8
1723        }
1724
1725        #[inline(always)]
1726        fn inline_size(_context: fidl::encoding::Context) -> usize {
1727            16
1728        }
1729    }
1730
1731    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedResolver, D>
1732        for &AllowlistedResolver
1733    {
1734        unsafe fn encode(
1735            self,
1736            encoder: &mut fidl::encoding::Encoder<'_, D>,
1737            offset: usize,
1738            mut depth: fidl::encoding::Depth,
1739        ) -> fidl::Result<()> {
1740            encoder.debug_check_bounds::<AllowlistedResolver>(offset);
1741            // Vector header
1742            let max_ordinal: u64 = self.max_ordinal_present();
1743            encoder.write_num(max_ordinal, offset);
1744            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1745            // Calling encoder.out_of_line_offset(0) is not allowed.
1746            if max_ordinal == 0 {
1747                return Ok(());
1748            }
1749            depth.increment()?;
1750            let envelope_size = 8;
1751            let bytes_len = max_ordinal as usize * envelope_size;
1752            #[allow(unused_variables)]
1753            let offset = encoder.out_of_line_offset(bytes_len);
1754            let mut _prev_end_offset: usize = 0;
1755
1756            Ok(())
1757        }
1758    }
1759
1760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedResolver {
1761        #[inline(always)]
1762        fn new_empty() -> Self {
1763            Self::default()
1764        }
1765
1766        unsafe fn decode(
1767            &mut self,
1768            decoder: &mut fidl::encoding::Decoder<'_, D>,
1769            offset: usize,
1770            mut depth: fidl::encoding::Depth,
1771        ) -> fidl::Result<()> {
1772            decoder.debug_check_bounds::<Self>(offset);
1773            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1774                None => return Err(fidl::Error::NotNullable),
1775                Some(len) => len,
1776            };
1777            // Calling decoder.out_of_line_offset(0) is not allowed.
1778            if len == 0 {
1779                return Ok(());
1780            };
1781            depth.increment()?;
1782            let envelope_size = 8;
1783            let bytes_len = len * envelope_size;
1784            let offset = decoder.out_of_line_offset(bytes_len)?;
1785            // Decode the envelope for each type.
1786            let mut _next_ordinal_to_read = 0;
1787            let mut next_offset = offset;
1788            let end_offset = offset + bytes_len;
1789
1790            // Decode the remaining unknown envelopes.
1791            while next_offset < end_offset {
1792                _next_ordinal_to_read += 1;
1793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1794                next_offset += envelope_size;
1795            }
1796
1797            Ok(())
1798        }
1799    }
1800
1801    impl AllowlistedRunner {
1802        #[inline(always)]
1803        fn max_ordinal_present(&self) -> u64 {
1804            0
1805        }
1806    }
1807
1808    impl fidl::encoding::ValueTypeMarker for AllowlistedRunner {
1809        type Borrowed<'a> = &'a Self;
1810        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1811            value
1812        }
1813    }
1814
1815    unsafe impl fidl::encoding::TypeMarker for AllowlistedRunner {
1816        type Owned = Self;
1817
1818        #[inline(always)]
1819        fn inline_align(_context: fidl::encoding::Context) -> usize {
1820            8
1821        }
1822
1823        #[inline(always)]
1824        fn inline_size(_context: fidl::encoding::Context) -> usize {
1825            16
1826        }
1827    }
1828
1829    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedRunner, D>
1830        for &AllowlistedRunner
1831    {
1832        unsafe fn encode(
1833            self,
1834            encoder: &mut fidl::encoding::Encoder<'_, D>,
1835            offset: usize,
1836            mut depth: fidl::encoding::Depth,
1837        ) -> fidl::Result<()> {
1838            encoder.debug_check_bounds::<AllowlistedRunner>(offset);
1839            // Vector header
1840            let max_ordinal: u64 = self.max_ordinal_present();
1841            encoder.write_num(max_ordinal, offset);
1842            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1843            // Calling encoder.out_of_line_offset(0) is not allowed.
1844            if max_ordinal == 0 {
1845                return Ok(());
1846            }
1847            depth.increment()?;
1848            let envelope_size = 8;
1849            let bytes_len = max_ordinal as usize * envelope_size;
1850            #[allow(unused_variables)]
1851            let offset = encoder.out_of_line_offset(bytes_len);
1852            let mut _prev_end_offset: usize = 0;
1853
1854            Ok(())
1855        }
1856    }
1857
1858    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedRunner {
1859        #[inline(always)]
1860        fn new_empty() -> Self {
1861            Self::default()
1862        }
1863
1864        unsafe fn decode(
1865            &mut self,
1866            decoder: &mut fidl::encoding::Decoder<'_, D>,
1867            offset: usize,
1868            mut depth: fidl::encoding::Depth,
1869        ) -> fidl::Result<()> {
1870            decoder.debug_check_bounds::<Self>(offset);
1871            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1872                None => return Err(fidl::Error::NotNullable),
1873                Some(len) => len,
1874            };
1875            // Calling decoder.out_of_line_offset(0) is not allowed.
1876            if len == 0 {
1877                return Ok(());
1878            };
1879            depth.increment()?;
1880            let envelope_size = 8;
1881            let bytes_len = len * envelope_size;
1882            let offset = decoder.out_of_line_offset(bytes_len)?;
1883            // Decode the envelope for each type.
1884            let mut _next_ordinal_to_read = 0;
1885            let mut next_offset = offset;
1886            let end_offset = offset + bytes_len;
1887
1888            // Decode the remaining unknown envelopes.
1889            while next_offset < end_offset {
1890                _next_ordinal_to_read += 1;
1891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1892                next_offset += envelope_size;
1893            }
1894
1895            Ok(())
1896        }
1897    }
1898
1899    impl AllowlistedService {
1900        #[inline(always)]
1901        fn max_ordinal_present(&self) -> u64 {
1902            0
1903        }
1904    }
1905
1906    impl fidl::encoding::ValueTypeMarker for AllowlistedService {
1907        type Borrowed<'a> = &'a Self;
1908        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1909            value
1910        }
1911    }
1912
1913    unsafe impl fidl::encoding::TypeMarker for AllowlistedService {
1914        type Owned = Self;
1915
1916        #[inline(always)]
1917        fn inline_align(_context: fidl::encoding::Context) -> usize {
1918            8
1919        }
1920
1921        #[inline(always)]
1922        fn inline_size(_context: fidl::encoding::Context) -> usize {
1923            16
1924        }
1925    }
1926
1927    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedService, D>
1928        for &AllowlistedService
1929    {
1930        unsafe fn encode(
1931            self,
1932            encoder: &mut fidl::encoding::Encoder<'_, D>,
1933            offset: usize,
1934            mut depth: fidl::encoding::Depth,
1935        ) -> fidl::Result<()> {
1936            encoder.debug_check_bounds::<AllowlistedService>(offset);
1937            // Vector header
1938            let max_ordinal: u64 = self.max_ordinal_present();
1939            encoder.write_num(max_ordinal, offset);
1940            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1941            // Calling encoder.out_of_line_offset(0) is not allowed.
1942            if max_ordinal == 0 {
1943                return Ok(());
1944            }
1945            depth.increment()?;
1946            let envelope_size = 8;
1947            let bytes_len = max_ordinal as usize * envelope_size;
1948            #[allow(unused_variables)]
1949            let offset = encoder.out_of_line_offset(bytes_len);
1950            let mut _prev_end_offset: usize = 0;
1951
1952            Ok(())
1953        }
1954    }
1955
1956    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedService {
1957        #[inline(always)]
1958        fn new_empty() -> Self {
1959            Self::default()
1960        }
1961
1962        unsafe fn decode(
1963            &mut self,
1964            decoder: &mut fidl::encoding::Decoder<'_, D>,
1965            offset: usize,
1966            mut depth: fidl::encoding::Depth,
1967        ) -> fidl::Result<()> {
1968            decoder.debug_check_bounds::<Self>(offset);
1969            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1970                None => return Err(fidl::Error::NotNullable),
1971                Some(len) => len,
1972            };
1973            // Calling decoder.out_of_line_offset(0) is not allowed.
1974            if len == 0 {
1975                return Ok(());
1976            };
1977            depth.increment()?;
1978            let envelope_size = 8;
1979            let bytes_len = len * envelope_size;
1980            let offset = decoder.out_of_line_offset(bytes_len)?;
1981            // Decode the envelope for each type.
1982            let mut _next_ordinal_to_read = 0;
1983            let mut next_offset = offset;
1984            let end_offset = offset + bytes_len;
1985
1986            // Decode the remaining unknown envelopes.
1987            while next_offset < end_offset {
1988                _next_ordinal_to_read += 1;
1989                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1990                next_offset += envelope_size;
1991            }
1992
1993            Ok(())
1994        }
1995    }
1996
1997    impl AllowlistedStorage {
1998        #[inline(always)]
1999        fn max_ordinal_present(&self) -> u64 {
2000            0
2001        }
2002    }
2003
2004    impl fidl::encoding::ValueTypeMarker for AllowlistedStorage {
2005        type Borrowed<'a> = &'a Self;
2006        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2007            value
2008        }
2009    }
2010
2011    unsafe impl fidl::encoding::TypeMarker for AllowlistedStorage {
2012        type Owned = Self;
2013
2014        #[inline(always)]
2015        fn inline_align(_context: fidl::encoding::Context) -> usize {
2016            8
2017        }
2018
2019        #[inline(always)]
2020        fn inline_size(_context: fidl::encoding::Context) -> usize {
2021            16
2022        }
2023    }
2024
2025    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedStorage, D>
2026        for &AllowlistedStorage
2027    {
2028        unsafe fn encode(
2029            self,
2030            encoder: &mut fidl::encoding::Encoder<'_, D>,
2031            offset: usize,
2032            mut depth: fidl::encoding::Depth,
2033        ) -> fidl::Result<()> {
2034            encoder.debug_check_bounds::<AllowlistedStorage>(offset);
2035            // Vector header
2036            let max_ordinal: u64 = self.max_ordinal_present();
2037            encoder.write_num(max_ordinal, offset);
2038            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2039            // Calling encoder.out_of_line_offset(0) is not allowed.
2040            if max_ordinal == 0 {
2041                return Ok(());
2042            }
2043            depth.increment()?;
2044            let envelope_size = 8;
2045            let bytes_len = max_ordinal as usize * envelope_size;
2046            #[allow(unused_variables)]
2047            let offset = encoder.out_of_line_offset(bytes_len);
2048            let mut _prev_end_offset: usize = 0;
2049
2050            Ok(())
2051        }
2052    }
2053
2054    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedStorage {
2055        #[inline(always)]
2056        fn new_empty() -> Self {
2057            Self::default()
2058        }
2059
2060        unsafe fn decode(
2061            &mut self,
2062            decoder: &mut fidl::encoding::Decoder<'_, D>,
2063            offset: usize,
2064            mut depth: fidl::encoding::Depth,
2065        ) -> fidl::Result<()> {
2066            decoder.debug_check_bounds::<Self>(offset);
2067            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2068                None => return Err(fidl::Error::NotNullable),
2069                Some(len) => len,
2070            };
2071            // Calling decoder.out_of_line_offset(0) is not allowed.
2072            if len == 0 {
2073                return Ok(());
2074            };
2075            depth.increment()?;
2076            let envelope_size = 8;
2077            let bytes_len = len * envelope_size;
2078            let offset = decoder.out_of_line_offset(bytes_len)?;
2079            // Decode the envelope for each type.
2080            let mut _next_ordinal_to_read = 0;
2081            let mut next_offset = offset;
2082            let end_offset = offset + bytes_len;
2083
2084            // Decode the remaining unknown envelopes.
2085            while next_offset < end_offset {
2086                _next_ordinal_to_read += 1;
2087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2088                next_offset += envelope_size;
2089            }
2090
2091            Ok(())
2092        }
2093    }
2094
2095    impl AnonymizedAggregate {
2096        #[inline(always)]
2097        fn max_ordinal_present(&self) -> u64 {
2098            if let Some(_) = self.instances {
2099                return 5;
2100            }
2101            if let Some(_) = self.sources {
2102                return 4;
2103            }
2104            if let Some(_) = self.members {
2105                return 3;
2106            }
2107            if let Some(_) = self.moniker {
2108                return 2;
2109            }
2110            if let Some(_) = self.capability {
2111                return 1;
2112            }
2113            0
2114        }
2115    }
2116
2117    impl fidl::encoding::ValueTypeMarker for AnonymizedAggregate {
2118        type Borrowed<'a> = &'a Self;
2119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2120            value
2121        }
2122    }
2123
2124    unsafe impl fidl::encoding::TypeMarker for AnonymizedAggregate {
2125        type Owned = Self;
2126
2127        #[inline(always)]
2128        fn inline_align(_context: fidl::encoding::Context) -> usize {
2129            8
2130        }
2131
2132        #[inline(always)]
2133        fn inline_size(_context: fidl::encoding::Context) -> usize {
2134            16
2135        }
2136    }
2137
2138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AnonymizedAggregate, D>
2139        for &AnonymizedAggregate
2140    {
2141        unsafe fn encode(
2142            self,
2143            encoder: &mut fidl::encoding::Encoder<'_, D>,
2144            offset: usize,
2145            mut depth: fidl::encoding::Depth,
2146        ) -> fidl::Result<()> {
2147            encoder.debug_check_bounds::<AnonymizedAggregate>(offset);
2148            // Vector header
2149            let max_ordinal: u64 = self.max_ordinal_present();
2150            encoder.write_num(max_ordinal, offset);
2151            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2152            // Calling encoder.out_of_line_offset(0) is not allowed.
2153            if max_ordinal == 0 {
2154                return Ok(());
2155            }
2156            depth.increment()?;
2157            let envelope_size = 8;
2158            let bytes_len = max_ordinal as usize * envelope_size;
2159            #[allow(unused_variables)]
2160            let offset = encoder.out_of_line_offset(bytes_len);
2161            let mut _prev_end_offset: usize = 0;
2162            if 1 > max_ordinal {
2163                return Ok(());
2164            }
2165
2166            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2167            // are envelope_size bytes.
2168            let cur_offset: usize = (1 - 1) * envelope_size;
2169
2170            // Zero reserved fields.
2171            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2172
2173            // Safety:
2174            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2175            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2176            //   envelope_size bytes, there is always sufficient room.
2177            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
2178                self.capability
2179                    .as_ref()
2180                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
2181                encoder,
2182                offset + cur_offset,
2183                depth,
2184            )?;
2185
2186            _prev_end_offset = cur_offset + envelope_size;
2187            if 2 > max_ordinal {
2188                return Ok(());
2189            }
2190
2191            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2192            // are envelope_size bytes.
2193            let cur_offset: usize = (2 - 1) * envelope_size;
2194
2195            // Zero reserved fields.
2196            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2197
2198            // Safety:
2199            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2200            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2201            //   envelope_size bytes, there is always sufficient room.
2202            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2203            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2204            encoder, offset + cur_offset, depth
2205        )?;
2206
2207            _prev_end_offset = cur_offset + envelope_size;
2208            if 3 > max_ordinal {
2209                return Ok(());
2210            }
2211
2212            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2213            // are envelope_size bytes.
2214            let cur_offset: usize = (3 - 1) * envelope_size;
2215
2216            // Zero reserved fields.
2217            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2218
2219            // Safety:
2220            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2221            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2222            //   envelope_size bytes, there is always sufficient room.
2223            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AggregateMember>, D>(
2224            self.members.as_ref().map(<fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::ValueTypeMarker>::borrow),
2225            encoder, offset + cur_offset, depth
2226        )?;
2227
2228            _prev_end_offset = cur_offset + envelope_size;
2229            if 4 > max_ordinal {
2230                return Ok(());
2231            }
2232
2233            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2234            // are envelope_size bytes.
2235            let cur_offset: usize = (4 - 1) * envelope_size;
2236
2237            // Zero reserved fields.
2238            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2239
2240            // Safety:
2241            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2242            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2243            //   envelope_size bytes, there is always sufficient room.
2244            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
2245                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
2246                encoder,
2247                offset + cur_offset,
2248                depth,
2249            )?;
2250
2251            _prev_end_offset = cur_offset + envelope_size;
2252            if 5 > max_ordinal {
2253                return Ok(());
2254            }
2255
2256            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2257            // are envelope_size bytes.
2258            let cur_offset: usize = (5 - 1) * envelope_size;
2259
2260            // Zero reserved fields.
2261            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2262
2263            // Safety:
2264            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2265            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2266            //   envelope_size bytes, there is always sufficient room.
2267            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>, D>(
2268            self.instances.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance> as fidl::encoding::ValueTypeMarker>::borrow),
2269            encoder, offset + cur_offset, depth
2270        )?;
2271
2272            _prev_end_offset = cur_offset + envelope_size;
2273
2274            Ok(())
2275        }
2276    }
2277
2278    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AnonymizedAggregate {
2279        #[inline(always)]
2280        fn new_empty() -> Self {
2281            Self::default()
2282        }
2283
2284        unsafe fn decode(
2285            &mut self,
2286            decoder: &mut fidl::encoding::Decoder<'_, D>,
2287            offset: usize,
2288            mut depth: fidl::encoding::Depth,
2289        ) -> fidl::Result<()> {
2290            decoder.debug_check_bounds::<Self>(offset);
2291            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2292                None => return Err(fidl::Error::NotNullable),
2293                Some(len) => len,
2294            };
2295            // Calling decoder.out_of_line_offset(0) is not allowed.
2296            if len == 0 {
2297                return Ok(());
2298            };
2299            depth.increment()?;
2300            let envelope_size = 8;
2301            let bytes_len = len * envelope_size;
2302            let offset = decoder.out_of_line_offset(bytes_len)?;
2303            // Decode the envelope for each type.
2304            let mut _next_ordinal_to_read = 0;
2305            let mut next_offset = offset;
2306            let end_offset = offset + bytes_len;
2307            _next_ordinal_to_read += 1;
2308            if next_offset >= end_offset {
2309                return Ok(());
2310            }
2311
2312            // Decode unknown envelopes for gaps in ordinals.
2313            while _next_ordinal_to_read < 1 {
2314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2315                _next_ordinal_to_read += 1;
2316                next_offset += envelope_size;
2317            }
2318
2319            let next_out_of_line = decoder.next_out_of_line();
2320            let handles_before = decoder.remaining_handles();
2321            if let Some((inlined, num_bytes, num_handles)) =
2322                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2323            {
2324                let member_inline_size =
2325                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
2326                        decoder.context,
2327                    );
2328                if inlined != (member_inline_size <= 4) {
2329                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2330                }
2331                let inner_offset;
2332                let mut inner_depth = depth.clone();
2333                if inlined {
2334                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2335                    inner_offset = next_offset;
2336                } else {
2337                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2338                    inner_depth.increment()?;
2339                }
2340                let val_ref =
2341                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
2342                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2343                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2344                {
2345                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2346                }
2347                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2348                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2349                }
2350            }
2351
2352            next_offset += envelope_size;
2353            _next_ordinal_to_read += 1;
2354            if next_offset >= end_offset {
2355                return Ok(());
2356            }
2357
2358            // Decode unknown envelopes for gaps in ordinals.
2359            while _next_ordinal_to_read < 2 {
2360                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2361                _next_ordinal_to_read += 1;
2362                next_offset += envelope_size;
2363            }
2364
2365            let next_out_of_line = decoder.next_out_of_line();
2366            let handles_before = decoder.remaining_handles();
2367            if let Some((inlined, num_bytes, num_handles)) =
2368                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2369            {
2370                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2371                if inlined != (member_inline_size <= 4) {
2372                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2373                }
2374                let inner_offset;
2375                let mut inner_depth = depth.clone();
2376                if inlined {
2377                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2378                    inner_offset = next_offset;
2379                } else {
2380                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2381                    inner_depth.increment()?;
2382                }
2383                let val_ref = self.moniker.get_or_insert_with(|| {
2384                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2385                });
2386                fidl::decode!(
2387                    fidl::encoding::BoundedString<4096>,
2388                    D,
2389                    val_ref,
2390                    decoder,
2391                    inner_offset,
2392                    inner_depth
2393                )?;
2394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2395                {
2396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2397                }
2398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2400                }
2401            }
2402
2403            next_offset += envelope_size;
2404            _next_ordinal_to_read += 1;
2405            if next_offset >= end_offset {
2406                return Ok(());
2407            }
2408
2409            // Decode unknown envelopes for gaps in ordinals.
2410            while _next_ordinal_to_read < 3 {
2411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2412                _next_ordinal_to_read += 1;
2413                next_offset += envelope_size;
2414            }
2415
2416            let next_out_of_line = decoder.next_out_of_line();
2417            let handles_before = decoder.remaining_handles();
2418            if let Some((inlined, num_bytes, num_handles)) =
2419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2420            {
2421                let member_inline_size = <fidl::encoding::UnboundedVector<AggregateMember> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2422                if inlined != (member_inline_size <= 4) {
2423                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2424                }
2425                let inner_offset;
2426                let mut inner_depth = depth.clone();
2427                if inlined {
2428                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2429                    inner_offset = next_offset;
2430                } else {
2431                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2432                    inner_depth.increment()?;
2433                }
2434                let val_ref = self.members.get_or_insert_with(|| {
2435                    fidl::new_empty!(fidl::encoding::UnboundedVector<AggregateMember>, D)
2436                });
2437                fidl::decode!(
2438                    fidl::encoding::UnboundedVector<AggregateMember>,
2439                    D,
2440                    val_ref,
2441                    decoder,
2442                    inner_offset,
2443                    inner_depth
2444                )?;
2445                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2446                {
2447                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2448                }
2449                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2450                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2451                }
2452            }
2453
2454            next_offset += envelope_size;
2455            _next_ordinal_to_read += 1;
2456            if next_offset >= end_offset {
2457                return Ok(());
2458            }
2459
2460            // Decode unknown envelopes for gaps in ordinals.
2461            while _next_ordinal_to_read < 4 {
2462                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2463                _next_ordinal_to_read += 1;
2464                next_offset += envelope_size;
2465            }
2466
2467            let next_out_of_line = decoder.next_out_of_line();
2468            let handles_before = decoder.remaining_handles();
2469            if let Some((inlined, num_bytes, num_handles)) =
2470                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2471            {
2472                let member_inline_size =
2473                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2474                if inlined != (member_inline_size <= 4) {
2475                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2476                }
2477                let inner_offset;
2478                let mut inner_depth = depth.clone();
2479                if inlined {
2480                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2481                    inner_offset = next_offset;
2482                } else {
2483                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2484                    inner_depth.increment()?;
2485                }
2486                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
2487                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
2488                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2489                {
2490                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2491                }
2492                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2493                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2494                }
2495            }
2496
2497            next_offset += envelope_size;
2498            _next_ordinal_to_read += 1;
2499            if next_offset >= end_offset {
2500                return Ok(());
2501            }
2502
2503            // Decode unknown envelopes for gaps in ordinals.
2504            while _next_ordinal_to_read < 5 {
2505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2506                _next_ordinal_to_read += 1;
2507                next_offset += envelope_size;
2508            }
2509
2510            let next_out_of_line = decoder.next_out_of_line();
2511            let handles_before = decoder.remaining_handles();
2512            if let Some((inlined, num_bytes, num_handles)) =
2513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2514            {
2515                let member_inline_size = <fidl::encoding::UnboundedVector<
2516                    fidl_fuchsia_sys2__common::ServiceInstance,
2517                > as fidl::encoding::TypeMarker>::inline_size(
2518                    decoder.context
2519                );
2520                if inlined != (member_inline_size <= 4) {
2521                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2522                }
2523                let inner_offset;
2524                let mut inner_depth = depth.clone();
2525                if inlined {
2526                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2527                    inner_offset = next_offset;
2528                } else {
2529                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2530                    inner_depth.increment()?;
2531                }
2532                let val_ref = self.instances.get_or_insert_with(|| {
2533                    fidl::new_empty!(
2534                        fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2535                        D
2536                    )
2537                });
2538                fidl::decode!(
2539                    fidl::encoding::UnboundedVector<fidl_fuchsia_sys2__common::ServiceInstance>,
2540                    D,
2541                    val_ref,
2542                    decoder,
2543                    inner_offset,
2544                    inner_depth
2545                )?;
2546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2547                {
2548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2549                }
2550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2552                }
2553            }
2554
2555            next_offset += envelope_size;
2556
2557            // Decode the remaining unknown envelopes.
2558            while next_offset < end_offset {
2559                _next_ordinal_to_read += 1;
2560                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2561                next_offset += envelope_size;
2562            }
2563
2564            Ok(())
2565        }
2566    }
2567
2568    impl Builtin {
2569        #[inline(always)]
2570        fn max_ordinal_present(&self) -> u64 {
2571            if let Some(_) = self.capability {
2572                return 1;
2573            }
2574            0
2575        }
2576    }
2577
2578    impl fidl::encoding::ValueTypeMarker for Builtin {
2579        type Borrowed<'a> = &'a Self;
2580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2581            value
2582        }
2583    }
2584
2585    unsafe impl fidl::encoding::TypeMarker for Builtin {
2586        type Owned = Self;
2587
2588        #[inline(always)]
2589        fn inline_align(_context: fidl::encoding::Context) -> usize {
2590            8
2591        }
2592
2593        #[inline(always)]
2594        fn inline_size(_context: fidl::encoding::Context) -> usize {
2595            16
2596        }
2597    }
2598
2599    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Builtin, D> for &Builtin {
2600        unsafe fn encode(
2601            self,
2602            encoder: &mut fidl::encoding::Encoder<'_, D>,
2603            offset: usize,
2604            mut depth: fidl::encoding::Depth,
2605        ) -> fidl::Result<()> {
2606            encoder.debug_check_bounds::<Builtin>(offset);
2607            // Vector header
2608            let max_ordinal: u64 = self.max_ordinal_present();
2609            encoder.write_num(max_ordinal, offset);
2610            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2611            // Calling encoder.out_of_line_offset(0) is not allowed.
2612            if max_ordinal == 0 {
2613                return Ok(());
2614            }
2615            depth.increment()?;
2616            let envelope_size = 8;
2617            let bytes_len = max_ordinal as usize * envelope_size;
2618            #[allow(unused_variables)]
2619            let offset = encoder.out_of_line_offset(bytes_len);
2620            let mut _prev_end_offset: usize = 0;
2621            if 1 > max_ordinal {
2622                return Ok(());
2623            }
2624
2625            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2626            // are envelope_size bytes.
2627            let cur_offset: usize = (1 - 1) * envelope_size;
2628
2629            // Zero reserved fields.
2630            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2631
2632            // Safety:
2633            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2634            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2635            //   envelope_size bytes, there is always sufficient room.
2636            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
2637                self.capability
2638                    .as_ref()
2639                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
2640                encoder,
2641                offset + cur_offset,
2642                depth,
2643            )?;
2644
2645            _prev_end_offset = cur_offset + envelope_size;
2646
2647            Ok(())
2648        }
2649    }
2650
2651    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Builtin {
2652        #[inline(always)]
2653        fn new_empty() -> Self {
2654            Self::default()
2655        }
2656
2657        unsafe fn decode(
2658            &mut self,
2659            decoder: &mut fidl::encoding::Decoder<'_, D>,
2660            offset: usize,
2661            mut depth: fidl::encoding::Depth,
2662        ) -> fidl::Result<()> {
2663            decoder.debug_check_bounds::<Self>(offset);
2664            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2665                None => return Err(fidl::Error::NotNullable),
2666                Some(len) => len,
2667            };
2668            // Calling decoder.out_of_line_offset(0) is not allowed.
2669            if len == 0 {
2670                return Ok(());
2671            };
2672            depth.increment()?;
2673            let envelope_size = 8;
2674            let bytes_len = len * envelope_size;
2675            let offset = decoder.out_of_line_offset(bytes_len)?;
2676            // Decode the envelope for each type.
2677            let mut _next_ordinal_to_read = 0;
2678            let mut next_offset = offset;
2679            let end_offset = offset + bytes_len;
2680            _next_ordinal_to_read += 1;
2681            if next_offset >= end_offset {
2682                return Ok(());
2683            }
2684
2685            // Decode unknown envelopes for gaps in ordinals.
2686            while _next_ordinal_to_read < 1 {
2687                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2688                _next_ordinal_to_read += 1;
2689                next_offset += envelope_size;
2690            }
2691
2692            let next_out_of_line = decoder.next_out_of_line();
2693            let handles_before = decoder.remaining_handles();
2694            if let Some((inlined, num_bytes, num_handles)) =
2695                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2696            {
2697                let member_inline_size =
2698                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
2699                        decoder.context,
2700                    );
2701                if inlined != (member_inline_size <= 4) {
2702                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2703                }
2704                let inner_offset;
2705                let mut inner_depth = depth.clone();
2706                if inlined {
2707                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2708                    inner_offset = next_offset;
2709                } else {
2710                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2711                    inner_depth.increment()?;
2712                }
2713                let val_ref =
2714                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
2715                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2716                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2717                {
2718                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2719                }
2720                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2721                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2722                }
2723            }
2724
2725            next_offset += envelope_size;
2726
2727            // Decode the remaining unknown envelopes.
2728            while next_offset < end_offset {
2729                _next_ordinal_to_read += 1;
2730                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2731                next_offset += envelope_size;
2732            }
2733
2734            Ok(())
2735        }
2736    }
2737
2738    impl Capability {
2739        #[inline(always)]
2740        fn max_ordinal_present(&self) -> u64 {
2741            if let Some(_) = self.moniker {
2742                return 2;
2743            }
2744            if let Some(_) = self.source_capability {
2745                return 1;
2746            }
2747            0
2748        }
2749    }
2750
2751    impl fidl::encoding::ValueTypeMarker for Capability {
2752        type Borrowed<'a> = &'a Self;
2753        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2754            value
2755        }
2756    }
2757
2758    unsafe impl fidl::encoding::TypeMarker for Capability {
2759        type Owned = Self;
2760
2761        #[inline(always)]
2762        fn inline_align(_context: fidl::encoding::Context) -> usize {
2763            8
2764        }
2765
2766        #[inline(always)]
2767        fn inline_size(_context: fidl::encoding::Context) -> usize {
2768            16
2769        }
2770    }
2771
2772    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
2773        for &Capability
2774    {
2775        unsafe fn encode(
2776            self,
2777            encoder: &mut fidl::encoding::Encoder<'_, D>,
2778            offset: usize,
2779            mut depth: fidl::encoding::Depth,
2780        ) -> fidl::Result<()> {
2781            encoder.debug_check_bounds::<Capability>(offset);
2782            // Vector header
2783            let max_ordinal: u64 = self.max_ordinal_present();
2784            encoder.write_num(max_ordinal, offset);
2785            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2786            // Calling encoder.out_of_line_offset(0) is not allowed.
2787            if max_ordinal == 0 {
2788                return Ok(());
2789            }
2790            depth.increment()?;
2791            let envelope_size = 8;
2792            let bytes_len = max_ordinal as usize * envelope_size;
2793            #[allow(unused_variables)]
2794            let offset = encoder.out_of_line_offset(bytes_len);
2795            let mut _prev_end_offset: usize = 0;
2796            if 1 > max_ordinal {
2797                return Ok(());
2798            }
2799
2800            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2801            // are envelope_size bytes.
2802            let cur_offset: usize = (1 - 1) * envelope_size;
2803
2804            // Zero reserved fields.
2805            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2806
2807            // Safety:
2808            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2809            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2810            //   envelope_size bytes, there is always sufficient room.
2811            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
2812                self.source_capability
2813                    .as_ref()
2814                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
2815                encoder,
2816                offset + cur_offset,
2817                depth,
2818            )?;
2819
2820            _prev_end_offset = cur_offset + envelope_size;
2821            if 2 > max_ordinal {
2822                return Ok(());
2823            }
2824
2825            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2826            // are envelope_size bytes.
2827            let cur_offset: usize = (2 - 1) * envelope_size;
2828
2829            // Zero reserved fields.
2830            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2831
2832            // Safety:
2833            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2834            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2835            //   envelope_size bytes, there is always sufficient room.
2836            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2837            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2838            encoder, offset + cur_offset, depth
2839        )?;
2840
2841            _prev_end_offset = cur_offset + envelope_size;
2842
2843            Ok(())
2844        }
2845    }
2846
2847    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
2848        #[inline(always)]
2849        fn new_empty() -> Self {
2850            Self::default()
2851        }
2852
2853        unsafe fn decode(
2854            &mut self,
2855            decoder: &mut fidl::encoding::Decoder<'_, D>,
2856            offset: usize,
2857            mut depth: fidl::encoding::Depth,
2858        ) -> fidl::Result<()> {
2859            decoder.debug_check_bounds::<Self>(offset);
2860            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2861                None => return Err(fidl::Error::NotNullable),
2862                Some(len) => len,
2863            };
2864            // Calling decoder.out_of_line_offset(0) is not allowed.
2865            if len == 0 {
2866                return Ok(());
2867            };
2868            depth.increment()?;
2869            let envelope_size = 8;
2870            let bytes_len = len * envelope_size;
2871            let offset = decoder.out_of_line_offset(bytes_len)?;
2872            // Decode the envelope for each type.
2873            let mut _next_ordinal_to_read = 0;
2874            let mut next_offset = offset;
2875            let end_offset = offset + bytes_len;
2876            _next_ordinal_to_read += 1;
2877            if next_offset >= end_offset {
2878                return Ok(());
2879            }
2880
2881            // Decode unknown envelopes for gaps in ordinals.
2882            while _next_ordinal_to_read < 1 {
2883                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2884                _next_ordinal_to_read += 1;
2885                next_offset += envelope_size;
2886            }
2887
2888            let next_out_of_line = decoder.next_out_of_line();
2889            let handles_before = decoder.remaining_handles();
2890            if let Some((inlined, num_bytes, num_handles)) =
2891                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2892            {
2893                let member_inline_size =
2894                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
2895                        decoder.context,
2896                    );
2897                if inlined != (member_inline_size <= 4) {
2898                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2899                }
2900                let inner_offset;
2901                let mut inner_depth = depth.clone();
2902                if inlined {
2903                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2904                    inner_offset = next_offset;
2905                } else {
2906                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2907                    inner_depth.increment()?;
2908                }
2909                let val_ref = self
2910                    .source_capability
2911                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
2912                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
2913                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2914                {
2915                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2916                }
2917                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2918                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2919                }
2920            }
2921
2922            next_offset += envelope_size;
2923            _next_ordinal_to_read += 1;
2924            if next_offset >= end_offset {
2925                return Ok(());
2926            }
2927
2928            // Decode unknown envelopes for gaps in ordinals.
2929            while _next_ordinal_to_read < 2 {
2930                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2931                _next_ordinal_to_read += 1;
2932                next_offset += envelope_size;
2933            }
2934
2935            let next_out_of_line = decoder.next_out_of_line();
2936            let handles_before = decoder.remaining_handles();
2937            if let Some((inlined, num_bytes, num_handles)) =
2938                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2939            {
2940                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2941                if inlined != (member_inline_size <= 4) {
2942                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2943                }
2944                let inner_offset;
2945                let mut inner_depth = depth.clone();
2946                if inlined {
2947                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2948                    inner_offset = next_offset;
2949                } else {
2950                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2951                    inner_depth.increment()?;
2952                }
2953                let val_ref = self.moniker.get_or_insert_with(|| {
2954                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2955                });
2956                fidl::decode!(
2957                    fidl::encoding::BoundedString<4096>,
2958                    D,
2959                    val_ref,
2960                    decoder,
2961                    inner_offset,
2962                    inner_depth
2963                )?;
2964                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2965                {
2966                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2967                }
2968                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2969                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2970                }
2971            }
2972
2973            next_offset += envelope_size;
2974
2975            // Decode the remaining unknown envelopes.
2976            while next_offset < end_offset {
2977                _next_ordinal_to_read += 1;
2978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2979                next_offset += envelope_size;
2980            }
2981
2982            Ok(())
2983        }
2984    }
2985
2986    impl CapabilityAllowlistEntry {
2987        #[inline(always)]
2988        fn max_ordinal_present(&self) -> u64 {
2989            if let Some(_) = self.source {
2990                return 5;
2991            }
2992            if let Some(_) = self.target_monikers {
2993                return 4;
2994            }
2995            if let Some(_) = self.capability {
2996                return 3;
2997            }
2998            if let Some(_) = self.source_name {
2999                return 2;
3000            }
3001            if let Some(_) = self.source_moniker {
3002                return 1;
3003            }
3004            0
3005        }
3006    }
3007
3008    impl fidl::encoding::ValueTypeMarker for CapabilityAllowlistEntry {
3009        type Borrowed<'a> = &'a Self;
3010        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3011            value
3012        }
3013    }
3014
3015    unsafe impl fidl::encoding::TypeMarker for CapabilityAllowlistEntry {
3016        type Owned = Self;
3017
3018        #[inline(always)]
3019        fn inline_align(_context: fidl::encoding::Context) -> usize {
3020            8
3021        }
3022
3023        #[inline(always)]
3024        fn inline_size(_context: fidl::encoding::Context) -> usize {
3025            16
3026        }
3027    }
3028
3029    unsafe impl<D: fidl::encoding::ResourceDialect>
3030        fidl::encoding::Encode<CapabilityAllowlistEntry, D> for &CapabilityAllowlistEntry
3031    {
3032        unsafe fn encode(
3033            self,
3034            encoder: &mut fidl::encoding::Encoder<'_, D>,
3035            offset: usize,
3036            mut depth: fidl::encoding::Depth,
3037        ) -> fidl::Result<()> {
3038            encoder.debug_check_bounds::<CapabilityAllowlistEntry>(offset);
3039            // Vector header
3040            let max_ordinal: u64 = self.max_ordinal_present();
3041            encoder.write_num(max_ordinal, offset);
3042            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3043            // Calling encoder.out_of_line_offset(0) is not allowed.
3044            if max_ordinal == 0 {
3045                return Ok(());
3046            }
3047            depth.increment()?;
3048            let envelope_size = 8;
3049            let bytes_len = max_ordinal as usize * envelope_size;
3050            #[allow(unused_variables)]
3051            let offset = encoder.out_of_line_offset(bytes_len);
3052            let mut _prev_end_offset: usize = 0;
3053            if 1 > max_ordinal {
3054                return Ok(());
3055            }
3056
3057            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3058            // are envelope_size bytes.
3059            let cur_offset: usize = (1 - 1) * envelope_size;
3060
3061            // Zero reserved fields.
3062            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3063
3064            // Safety:
3065            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3066            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3067            //   envelope_size bytes, there is always sufficient room.
3068            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3069            self.source_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3070            encoder, offset + cur_offset, depth
3071        )?;
3072
3073            _prev_end_offset = cur_offset + envelope_size;
3074            if 2 > max_ordinal {
3075                return Ok(());
3076            }
3077
3078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3079            // are envelope_size bytes.
3080            let cur_offset: usize = (2 - 1) * envelope_size;
3081
3082            // Zero reserved fields.
3083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3084
3085            // Safety:
3086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3088            //   envelope_size bytes, there is always sufficient room.
3089            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
3090                self.source_name.as_ref().map(
3091                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3092                ),
3093                encoder,
3094                offset + cur_offset,
3095                depth,
3096            )?;
3097
3098            _prev_end_offset = cur_offset + envelope_size;
3099            if 3 > max_ordinal {
3100                return Ok(());
3101            }
3102
3103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3104            // are envelope_size bytes.
3105            let cur_offset: usize = (3 - 1) * envelope_size;
3106
3107            // Zero reserved fields.
3108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3109
3110            // Safety:
3111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3113            //   envelope_size bytes, there is always sufficient room.
3114            fidl::encoding::encode_in_envelope_optional::<AllowlistedCapability, D>(
3115                self.capability
3116                    .as_ref()
3117                    .map(<AllowlistedCapability as fidl::encoding::ValueTypeMarker>::borrow),
3118                encoder,
3119                offset + cur_offset,
3120                depth,
3121            )?;
3122
3123            _prev_end_offset = cur_offset + envelope_size;
3124            if 4 > max_ordinal {
3125                return Ok(());
3126            }
3127
3128            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3129            // are envelope_size bytes.
3130            let cur_offset: usize = (4 - 1) * envelope_size;
3131
3132            // Zero reserved fields.
3133            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3134
3135            // Safety:
3136            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3137            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3138            //   envelope_size bytes, there is always sufficient room.
3139            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3140            self.target_monikers.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3141            encoder, offset + cur_offset, depth
3142        )?;
3143
3144            _prev_end_offset = cur_offset + envelope_size;
3145            if 5 > max_ordinal {
3146                return Ok(());
3147            }
3148
3149            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3150            // are envelope_size bytes.
3151            let cur_offset: usize = (5 - 1) * envelope_size;
3152
3153            // Zero reserved fields.
3154            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3155
3156            // Safety:
3157            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3158            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3159            //   envelope_size bytes, there is always sufficient room.
3160            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
3161            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
3162            encoder, offset + cur_offset, depth
3163        )?;
3164
3165            _prev_end_offset = cur_offset + envelope_size;
3166
3167            Ok(())
3168        }
3169    }
3170
3171    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3172        for CapabilityAllowlistEntry
3173    {
3174        #[inline(always)]
3175        fn new_empty() -> Self {
3176            Self::default()
3177        }
3178
3179        unsafe fn decode(
3180            &mut self,
3181            decoder: &mut fidl::encoding::Decoder<'_, D>,
3182            offset: usize,
3183            mut depth: fidl::encoding::Depth,
3184        ) -> fidl::Result<()> {
3185            decoder.debug_check_bounds::<Self>(offset);
3186            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3187                None => return Err(fidl::Error::NotNullable),
3188                Some(len) => len,
3189            };
3190            // Calling decoder.out_of_line_offset(0) is not allowed.
3191            if len == 0 {
3192                return Ok(());
3193            };
3194            depth.increment()?;
3195            let envelope_size = 8;
3196            let bytes_len = len * envelope_size;
3197            let offset = decoder.out_of_line_offset(bytes_len)?;
3198            // Decode the envelope for each type.
3199            let mut _next_ordinal_to_read = 0;
3200            let mut next_offset = offset;
3201            let end_offset = offset + bytes_len;
3202            _next_ordinal_to_read += 1;
3203            if next_offset >= end_offset {
3204                return Ok(());
3205            }
3206
3207            // Decode unknown envelopes for gaps in ordinals.
3208            while _next_ordinal_to_read < 1 {
3209                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3210                _next_ordinal_to_read += 1;
3211                next_offset += envelope_size;
3212            }
3213
3214            let next_out_of_line = decoder.next_out_of_line();
3215            let handles_before = decoder.remaining_handles();
3216            if let Some((inlined, num_bytes, num_handles)) =
3217                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3218            {
3219                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3220                if inlined != (member_inline_size <= 4) {
3221                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3222                }
3223                let inner_offset;
3224                let mut inner_depth = depth.clone();
3225                if inlined {
3226                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3227                    inner_offset = next_offset;
3228                } else {
3229                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3230                    inner_depth.increment()?;
3231                }
3232                let val_ref = self.source_moniker.get_or_insert_with(|| {
3233                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3234                });
3235                fidl::decode!(
3236                    fidl::encoding::BoundedString<4096>,
3237                    D,
3238                    val_ref,
3239                    decoder,
3240                    inner_offset,
3241                    inner_depth
3242                )?;
3243                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3244                {
3245                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3246                }
3247                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3248                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3249                }
3250            }
3251
3252            next_offset += envelope_size;
3253            _next_ordinal_to_read += 1;
3254            if next_offset >= end_offset {
3255                return Ok(());
3256            }
3257
3258            // Decode unknown envelopes for gaps in ordinals.
3259            while _next_ordinal_to_read < 2 {
3260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3261                _next_ordinal_to_read += 1;
3262                next_offset += envelope_size;
3263            }
3264
3265            let next_out_of_line = decoder.next_out_of_line();
3266            let handles_before = decoder.remaining_handles();
3267            if let Some((inlined, num_bytes, num_handles)) =
3268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3269            {
3270                let member_inline_size =
3271                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3272                        decoder.context,
3273                    );
3274                if inlined != (member_inline_size <= 4) {
3275                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3276                }
3277                let inner_offset;
3278                let mut inner_depth = depth.clone();
3279                if inlined {
3280                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3281                    inner_offset = next_offset;
3282                } else {
3283                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3284                    inner_depth.increment()?;
3285                }
3286                let val_ref = self
3287                    .source_name
3288                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
3289                fidl::decode!(
3290                    fidl::encoding::BoundedString<255>,
3291                    D,
3292                    val_ref,
3293                    decoder,
3294                    inner_offset,
3295                    inner_depth
3296                )?;
3297                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3298                {
3299                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3300                }
3301                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3302                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3303                }
3304            }
3305
3306            next_offset += envelope_size;
3307            _next_ordinal_to_read += 1;
3308            if next_offset >= end_offset {
3309                return Ok(());
3310            }
3311
3312            // Decode unknown envelopes for gaps in ordinals.
3313            while _next_ordinal_to_read < 3 {
3314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3315                _next_ordinal_to_read += 1;
3316                next_offset += envelope_size;
3317            }
3318
3319            let next_out_of_line = decoder.next_out_of_line();
3320            let handles_before = decoder.remaining_handles();
3321            if let Some((inlined, num_bytes, num_handles)) =
3322                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3323            {
3324                let member_inline_size =
3325                    <AllowlistedCapability as fidl::encoding::TypeMarker>::inline_size(
3326                        decoder.context,
3327                    );
3328                if inlined != (member_inline_size <= 4) {
3329                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3330                }
3331                let inner_offset;
3332                let mut inner_depth = depth.clone();
3333                if inlined {
3334                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3335                    inner_offset = next_offset;
3336                } else {
3337                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3338                    inner_depth.increment()?;
3339                }
3340                let val_ref = self
3341                    .capability
3342                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedCapability, D));
3343                fidl::decode!(
3344                    AllowlistedCapability,
3345                    D,
3346                    val_ref,
3347                    decoder,
3348                    inner_offset,
3349                    inner_depth
3350                )?;
3351                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3352                {
3353                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3354                }
3355                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3356                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3357                }
3358            }
3359
3360            next_offset += envelope_size;
3361            _next_ordinal_to_read += 1;
3362            if next_offset >= end_offset {
3363                return Ok(());
3364            }
3365
3366            // Decode unknown envelopes for gaps in ordinals.
3367            while _next_ordinal_to_read < 4 {
3368                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3369                _next_ordinal_to_read += 1;
3370                next_offset += envelope_size;
3371            }
3372
3373            let next_out_of_line = decoder.next_out_of_line();
3374            let handles_before = decoder.remaining_handles();
3375            if let Some((inlined, num_bytes, num_handles)) =
3376                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3377            {
3378                let member_inline_size = <fidl::encoding::Vector<
3379                    fidl::encoding::BoundedString<4096>,
3380                    128,
3381                > as fidl::encoding::TypeMarker>::inline_size(
3382                    decoder.context
3383                );
3384                if inlined != (member_inline_size <= 4) {
3385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3386                }
3387                let inner_offset;
3388                let mut inner_depth = depth.clone();
3389                if inlined {
3390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3391                    inner_offset = next_offset;
3392                } else {
3393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3394                    inner_depth.increment()?;
3395                }
3396                let val_ref = self.target_monikers.get_or_insert_with(|| {
3397                    fidl::new_empty!(
3398                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3399                        D
3400                    )
3401                });
3402                fidl::decode!(
3403                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3404                    D,
3405                    val_ref,
3406                    decoder,
3407                    inner_offset,
3408                    inner_depth
3409                )?;
3410                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3411                {
3412                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3413                }
3414                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3415                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3416                }
3417            }
3418
3419            next_offset += envelope_size;
3420            _next_ordinal_to_read += 1;
3421            if next_offset >= end_offset {
3422                return Ok(());
3423            }
3424
3425            // Decode unknown envelopes for gaps in ordinals.
3426            while _next_ordinal_to_read < 5 {
3427                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3428                _next_ordinal_to_read += 1;
3429                next_offset += envelope_size;
3430            }
3431
3432            let next_out_of_line = decoder.next_out_of_line();
3433            let handles_before = decoder.remaining_handles();
3434            if let Some((inlined, num_bytes, num_handles)) =
3435                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3436            {
3437                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3438                if inlined != (member_inline_size <= 4) {
3439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3440                }
3441                let inner_offset;
3442                let mut inner_depth = depth.clone();
3443                if inlined {
3444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3445                    inner_offset = next_offset;
3446                } else {
3447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3448                    inner_depth.increment()?;
3449                }
3450                let val_ref = self.source.get_or_insert_with(|| {
3451                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
3452                });
3453                fidl::decode!(
3454                    fidl_fuchsia_component_decl__common::Ref,
3455                    D,
3456                    val_ref,
3457                    decoder,
3458                    inner_offset,
3459                    inner_depth
3460                )?;
3461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3462                {
3463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3464                }
3465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3467                }
3468            }
3469
3470            next_offset += envelope_size;
3471
3472            // Decode the remaining unknown envelopes.
3473            while next_offset < end_offset {
3474                _next_ordinal_to_read += 1;
3475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3476                next_offset += envelope_size;
3477            }
3478
3479            Ok(())
3480        }
3481    }
3482
3483    impl CapabilityPolicyAllowlists {
3484        #[inline(always)]
3485        fn max_ordinal_present(&self) -> u64 {
3486            if let Some(_) = self.allowlist {
3487                return 1;
3488            }
3489            0
3490        }
3491    }
3492
3493    impl fidl::encoding::ValueTypeMarker for CapabilityPolicyAllowlists {
3494        type Borrowed<'a> = &'a Self;
3495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3496            value
3497        }
3498    }
3499
3500    unsafe impl fidl::encoding::TypeMarker for CapabilityPolicyAllowlists {
3501        type Owned = Self;
3502
3503        #[inline(always)]
3504        fn inline_align(_context: fidl::encoding::Context) -> usize {
3505            8
3506        }
3507
3508        #[inline(always)]
3509        fn inline_size(_context: fidl::encoding::Context) -> usize {
3510            16
3511        }
3512    }
3513
3514    unsafe impl<D: fidl::encoding::ResourceDialect>
3515        fidl::encoding::Encode<CapabilityPolicyAllowlists, D> for &CapabilityPolicyAllowlists
3516    {
3517        unsafe fn encode(
3518            self,
3519            encoder: &mut fidl::encoding::Encoder<'_, D>,
3520            offset: usize,
3521            mut depth: fidl::encoding::Depth,
3522        ) -> fidl::Result<()> {
3523            encoder.debug_check_bounds::<CapabilityPolicyAllowlists>(offset);
3524            // Vector header
3525            let max_ordinal: u64 = self.max_ordinal_present();
3526            encoder.write_num(max_ordinal, offset);
3527            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3528            // Calling encoder.out_of_line_offset(0) is not allowed.
3529            if max_ordinal == 0 {
3530                return Ok(());
3531            }
3532            depth.increment()?;
3533            let envelope_size = 8;
3534            let bytes_len = max_ordinal as usize * envelope_size;
3535            #[allow(unused_variables)]
3536            let offset = encoder.out_of_line_offset(bytes_len);
3537            let mut _prev_end_offset: usize = 0;
3538            if 1 > max_ordinal {
3539                return Ok(());
3540            }
3541
3542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3543            // are envelope_size bytes.
3544            let cur_offset: usize = (1 - 1) * envelope_size;
3545
3546            // Zero reserved fields.
3547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3548
3549            // Safety:
3550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3552            //   envelope_size bytes, there is always sufficient room.
3553            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D>(
3554            self.allowlist.as_ref().map(<fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3555            encoder, offset + cur_offset, depth
3556        )?;
3557
3558            _prev_end_offset = cur_offset + envelope_size;
3559
3560            Ok(())
3561        }
3562    }
3563
3564    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3565        for CapabilityPolicyAllowlists
3566    {
3567        #[inline(always)]
3568        fn new_empty() -> Self {
3569            Self::default()
3570        }
3571
3572        unsafe fn decode(
3573            &mut self,
3574            decoder: &mut fidl::encoding::Decoder<'_, D>,
3575            offset: usize,
3576            mut depth: fidl::encoding::Depth,
3577        ) -> fidl::Result<()> {
3578            decoder.debug_check_bounds::<Self>(offset);
3579            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3580                None => return Err(fidl::Error::NotNullable),
3581                Some(len) => len,
3582            };
3583            // Calling decoder.out_of_line_offset(0) is not allowed.
3584            if len == 0 {
3585                return Ok(());
3586            };
3587            depth.increment()?;
3588            let envelope_size = 8;
3589            let bytes_len = len * envelope_size;
3590            let offset = decoder.out_of_line_offset(bytes_len)?;
3591            // Decode the envelope for each type.
3592            let mut _next_ordinal_to_read = 0;
3593            let mut next_offset = offset;
3594            let end_offset = offset + bytes_len;
3595            _next_ordinal_to_read += 1;
3596            if next_offset >= end_offset {
3597                return Ok(());
3598            }
3599
3600            // Decode unknown envelopes for gaps in ordinals.
3601            while _next_ordinal_to_read < 1 {
3602                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3603                _next_ordinal_to_read += 1;
3604                next_offset += envelope_size;
3605            }
3606
3607            let next_out_of_line = decoder.next_out_of_line();
3608            let handles_before = decoder.remaining_handles();
3609            if let Some((inlined, num_bytes, num_handles)) =
3610                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3611            {
3612                let member_inline_size = <fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3613                if inlined != (member_inline_size <= 4) {
3614                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3615                }
3616                let inner_offset;
3617                let mut inner_depth = depth.clone();
3618                if inlined {
3619                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3620                    inner_offset = next_offset;
3621                } else {
3622                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3623                    inner_depth.increment()?;
3624                }
3625                let val_ref = self.allowlist.get_or_insert_with(
3626                    || fidl::new_empty!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D),
3627                );
3628                fidl::decode!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
3629                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3630                {
3631                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3632                }
3633                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3634                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3635                }
3636            }
3637
3638            next_offset += envelope_size;
3639
3640            // Decode the remaining unknown envelopes.
3641            while next_offset < end_offset {
3642                _next_ordinal_to_read += 1;
3643                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3644                next_offset += envelope_size;
3645            }
3646
3647            Ok(())
3648        }
3649    }
3650
3651    impl ChildPolicyAllowlists {
3652        #[inline(always)]
3653        fn max_ordinal_present(&self) -> u64 {
3654            if let Some(_) = self.reboot_on_terminate {
3655                return 1;
3656            }
3657            0
3658        }
3659    }
3660
3661    impl fidl::encoding::ValueTypeMarker for ChildPolicyAllowlists {
3662        type Borrowed<'a> = &'a Self;
3663        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3664            value
3665        }
3666    }
3667
3668    unsafe impl fidl::encoding::TypeMarker for ChildPolicyAllowlists {
3669        type Owned = Self;
3670
3671        #[inline(always)]
3672        fn inline_align(_context: fidl::encoding::Context) -> usize {
3673            8
3674        }
3675
3676        #[inline(always)]
3677        fn inline_size(_context: fidl::encoding::Context) -> usize {
3678            16
3679        }
3680    }
3681
3682    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildPolicyAllowlists, D>
3683        for &ChildPolicyAllowlists
3684    {
3685        unsafe fn encode(
3686            self,
3687            encoder: &mut fidl::encoding::Encoder<'_, D>,
3688            offset: usize,
3689            mut depth: fidl::encoding::Depth,
3690        ) -> fidl::Result<()> {
3691            encoder.debug_check_bounds::<ChildPolicyAllowlists>(offset);
3692            // Vector header
3693            let max_ordinal: u64 = self.max_ordinal_present();
3694            encoder.write_num(max_ordinal, offset);
3695            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3696            // Calling encoder.out_of_line_offset(0) is not allowed.
3697            if max_ordinal == 0 {
3698                return Ok(());
3699            }
3700            depth.increment()?;
3701            let envelope_size = 8;
3702            let bytes_len = max_ordinal as usize * envelope_size;
3703            #[allow(unused_variables)]
3704            let offset = encoder.out_of_line_offset(bytes_len);
3705            let mut _prev_end_offset: usize = 0;
3706            if 1 > max_ordinal {
3707                return Ok(());
3708            }
3709
3710            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3711            // are envelope_size bytes.
3712            let cur_offset: usize = (1 - 1) * envelope_size;
3713
3714            // Zero reserved fields.
3715            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3716
3717            // Safety:
3718            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3719            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3720            //   envelope_size bytes, there is always sufficient room.
3721            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
3722            self.reboot_on_terminate.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
3723            encoder, offset + cur_offset, depth
3724        )?;
3725
3726            _prev_end_offset = cur_offset + envelope_size;
3727
3728            Ok(())
3729        }
3730    }
3731
3732    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildPolicyAllowlists {
3733        #[inline(always)]
3734        fn new_empty() -> Self {
3735            Self::default()
3736        }
3737
3738        unsafe fn decode(
3739            &mut self,
3740            decoder: &mut fidl::encoding::Decoder<'_, D>,
3741            offset: usize,
3742            mut depth: fidl::encoding::Depth,
3743        ) -> fidl::Result<()> {
3744            decoder.debug_check_bounds::<Self>(offset);
3745            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3746                None => return Err(fidl::Error::NotNullable),
3747                Some(len) => len,
3748            };
3749            // Calling decoder.out_of_line_offset(0) is not allowed.
3750            if len == 0 {
3751                return Ok(());
3752            };
3753            depth.increment()?;
3754            let envelope_size = 8;
3755            let bytes_len = len * envelope_size;
3756            let offset = decoder.out_of_line_offset(bytes_len)?;
3757            // Decode the envelope for each type.
3758            let mut _next_ordinal_to_read = 0;
3759            let mut next_offset = offset;
3760            let end_offset = offset + bytes_len;
3761            _next_ordinal_to_read += 1;
3762            if next_offset >= end_offset {
3763                return Ok(());
3764            }
3765
3766            // Decode unknown envelopes for gaps in ordinals.
3767            while _next_ordinal_to_read < 1 {
3768                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3769                _next_ordinal_to_read += 1;
3770                next_offset += envelope_size;
3771            }
3772
3773            let next_out_of_line = decoder.next_out_of_line();
3774            let handles_before = decoder.remaining_handles();
3775            if let Some((inlined, num_bytes, num_handles)) =
3776                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3777            {
3778                let member_inline_size = <fidl::encoding::Vector<
3779                    fidl::encoding::BoundedString<4096>,
3780                    128,
3781                > as fidl::encoding::TypeMarker>::inline_size(
3782                    decoder.context
3783                );
3784                if inlined != (member_inline_size <= 4) {
3785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3786                }
3787                let inner_offset;
3788                let mut inner_depth = depth.clone();
3789                if inlined {
3790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3791                    inner_offset = next_offset;
3792                } else {
3793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3794                    inner_depth.increment()?;
3795                }
3796                let val_ref = self.reboot_on_terminate.get_or_insert_with(|| {
3797                    fidl::new_empty!(
3798                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3799                        D
3800                    )
3801                });
3802                fidl::decode!(
3803                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
3804                    D,
3805                    val_ref,
3806                    decoder,
3807                    inner_offset,
3808                    inner_depth
3809                )?;
3810                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3811                {
3812                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3813                }
3814                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3815                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3816                }
3817            }
3818
3819            next_offset += envelope_size;
3820
3821            // Decode the remaining unknown envelopes.
3822            while next_offset < end_offset {
3823                _next_ordinal_to_read += 1;
3824                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3825                next_offset += envelope_size;
3826            }
3827
3828            Ok(())
3829        }
3830    }
3831
3832    impl Component {
3833        #[inline(always)]
3834        fn max_ordinal_present(&self) -> u64 {
3835            if let Some(_) = self.moniker {
3836                return 2;
3837            }
3838            if let Some(_) = self.capability {
3839                return 1;
3840            }
3841            0
3842        }
3843    }
3844
3845    impl fidl::encoding::ValueTypeMarker for Component {
3846        type Borrowed<'a> = &'a Self;
3847        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3848            value
3849        }
3850    }
3851
3852    unsafe impl fidl::encoding::TypeMarker for Component {
3853        type Owned = Self;
3854
3855        #[inline(always)]
3856        fn inline_align(_context: fidl::encoding::Context) -> usize {
3857            8
3858        }
3859
3860        #[inline(always)]
3861        fn inline_size(_context: fidl::encoding::Context) -> usize {
3862            16
3863        }
3864    }
3865
3866    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Component, D>
3867        for &Component
3868    {
3869        unsafe fn encode(
3870            self,
3871            encoder: &mut fidl::encoding::Encoder<'_, D>,
3872            offset: usize,
3873            mut depth: fidl::encoding::Depth,
3874        ) -> fidl::Result<()> {
3875            encoder.debug_check_bounds::<Component>(offset);
3876            // Vector header
3877            let max_ordinal: u64 = self.max_ordinal_present();
3878            encoder.write_num(max_ordinal, offset);
3879            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3880            // Calling encoder.out_of_line_offset(0) is not allowed.
3881            if max_ordinal == 0 {
3882                return Ok(());
3883            }
3884            depth.increment()?;
3885            let envelope_size = 8;
3886            let bytes_len = max_ordinal as usize * envelope_size;
3887            #[allow(unused_variables)]
3888            let offset = encoder.out_of_line_offset(bytes_len);
3889            let mut _prev_end_offset: usize = 0;
3890            if 1 > max_ordinal {
3891                return Ok(());
3892            }
3893
3894            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3895            // are envelope_size bytes.
3896            let cur_offset: usize = (1 - 1) * envelope_size;
3897
3898            // Zero reserved fields.
3899            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3900
3901            // Safety:
3902            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3903            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3904            //   envelope_size bytes, there is always sufficient room.
3905            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
3906                self.capability
3907                    .as_ref()
3908                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
3909                encoder,
3910                offset + cur_offset,
3911                depth,
3912            )?;
3913
3914            _prev_end_offset = cur_offset + envelope_size;
3915            if 2 > max_ordinal {
3916                return Ok(());
3917            }
3918
3919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3920            // are envelope_size bytes.
3921            let cur_offset: usize = (2 - 1) * envelope_size;
3922
3923            // Zero reserved fields.
3924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3925
3926            // Safety:
3927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3929            //   envelope_size bytes, there is always sufficient room.
3930            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3931            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3932            encoder, offset + cur_offset, depth
3933        )?;
3934
3935            _prev_end_offset = cur_offset + envelope_size;
3936
3937            Ok(())
3938        }
3939    }
3940
3941    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Component {
3942        #[inline(always)]
3943        fn new_empty() -> Self {
3944            Self::default()
3945        }
3946
3947        unsafe fn decode(
3948            &mut self,
3949            decoder: &mut fidl::encoding::Decoder<'_, D>,
3950            offset: usize,
3951            mut depth: fidl::encoding::Depth,
3952        ) -> fidl::Result<()> {
3953            decoder.debug_check_bounds::<Self>(offset);
3954            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3955                None => return Err(fidl::Error::NotNullable),
3956                Some(len) => len,
3957            };
3958            // Calling decoder.out_of_line_offset(0) is not allowed.
3959            if len == 0 {
3960                return Ok(());
3961            };
3962            depth.increment()?;
3963            let envelope_size = 8;
3964            let bytes_len = len * envelope_size;
3965            let offset = decoder.out_of_line_offset(bytes_len)?;
3966            // Decode the envelope for each type.
3967            let mut _next_ordinal_to_read = 0;
3968            let mut next_offset = offset;
3969            let end_offset = offset + bytes_len;
3970            _next_ordinal_to_read += 1;
3971            if next_offset >= end_offset {
3972                return Ok(());
3973            }
3974
3975            // Decode unknown envelopes for gaps in ordinals.
3976            while _next_ordinal_to_read < 1 {
3977                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3978                _next_ordinal_to_read += 1;
3979                next_offset += envelope_size;
3980            }
3981
3982            let next_out_of_line = decoder.next_out_of_line();
3983            let handles_before = decoder.remaining_handles();
3984            if let Some((inlined, num_bytes, num_handles)) =
3985                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3986            {
3987                let member_inline_size =
3988                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
3989                        decoder.context,
3990                    );
3991                if inlined != (member_inline_size <= 4) {
3992                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3993                }
3994                let inner_offset;
3995                let mut inner_depth = depth.clone();
3996                if inlined {
3997                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3998                    inner_offset = next_offset;
3999                } else {
4000                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4001                    inner_depth.increment()?;
4002                }
4003                let val_ref =
4004                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
4005                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
4006                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4007                {
4008                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4009                }
4010                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4011                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4012                }
4013            }
4014
4015            next_offset += envelope_size;
4016            _next_ordinal_to_read += 1;
4017            if next_offset >= end_offset {
4018                return Ok(());
4019            }
4020
4021            // Decode unknown envelopes for gaps in ordinals.
4022            while _next_ordinal_to_read < 2 {
4023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4024                _next_ordinal_to_read += 1;
4025                next_offset += envelope_size;
4026            }
4027
4028            let next_out_of_line = decoder.next_out_of_line();
4029            let handles_before = decoder.remaining_handles();
4030            if let Some((inlined, num_bytes, num_handles)) =
4031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4032            {
4033                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4034                if inlined != (member_inline_size <= 4) {
4035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4036                }
4037                let inner_offset;
4038                let mut inner_depth = depth.clone();
4039                if inlined {
4040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4041                    inner_offset = next_offset;
4042                } else {
4043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4044                    inner_depth.increment()?;
4045                }
4046                let val_ref = self.moniker.get_or_insert_with(|| {
4047                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4048                });
4049                fidl::decode!(
4050                    fidl::encoding::BoundedString<4096>,
4051                    D,
4052                    val_ref,
4053                    decoder,
4054                    inner_offset,
4055                    inner_depth
4056                )?;
4057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4058                {
4059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4060                }
4061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4063                }
4064            }
4065
4066            next_offset += envelope_size;
4067
4068            // Decode the remaining unknown envelopes.
4069            while next_offset < end_offset {
4070                _next_ordinal_to_read += 1;
4071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4072                next_offset += envelope_size;
4073            }
4074
4075            Ok(())
4076        }
4077    }
4078
4079    impl ComponentIdIndex {
4080        #[inline(always)]
4081        fn max_ordinal_present(&self) -> u64 {
4082            if let Some(_) = self.instances {
4083                return 2;
4084            }
4085            0
4086        }
4087    }
4088
4089    impl fidl::encoding::ValueTypeMarker for ComponentIdIndex {
4090        type Borrowed<'a> = &'a Self;
4091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4092            value
4093        }
4094    }
4095
4096    unsafe impl fidl::encoding::TypeMarker for ComponentIdIndex {
4097        type Owned = Self;
4098
4099        #[inline(always)]
4100        fn inline_align(_context: fidl::encoding::Context) -> usize {
4101            8
4102        }
4103
4104        #[inline(always)]
4105        fn inline_size(_context: fidl::encoding::Context) -> usize {
4106            16
4107        }
4108    }
4109
4110    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentIdIndex, D>
4111        for &ComponentIdIndex
4112    {
4113        unsafe fn encode(
4114            self,
4115            encoder: &mut fidl::encoding::Encoder<'_, D>,
4116            offset: usize,
4117            mut depth: fidl::encoding::Depth,
4118        ) -> fidl::Result<()> {
4119            encoder.debug_check_bounds::<ComponentIdIndex>(offset);
4120            // Vector header
4121            let max_ordinal: u64 = self.max_ordinal_present();
4122            encoder.write_num(max_ordinal, offset);
4123            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4124            // Calling encoder.out_of_line_offset(0) is not allowed.
4125            if max_ordinal == 0 {
4126                return Ok(());
4127            }
4128            depth.increment()?;
4129            let envelope_size = 8;
4130            let bytes_len = max_ordinal as usize * envelope_size;
4131            #[allow(unused_variables)]
4132            let offset = encoder.out_of_line_offset(bytes_len);
4133            let mut _prev_end_offset: usize = 0;
4134            if 2 > max_ordinal {
4135                return Ok(());
4136            }
4137
4138            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4139            // are envelope_size bytes.
4140            let cur_offset: usize = (2 - 1) * envelope_size;
4141
4142            // Zero reserved fields.
4143            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4144
4145            // Safety:
4146            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4147            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4148            //   envelope_size bytes, there is always sufficient room.
4149            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InstanceIdEntry, 1024>, D>(
4150            self.instances.as_ref().map(<fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
4151            encoder, offset + cur_offset, depth
4152        )?;
4153
4154            _prev_end_offset = cur_offset + envelope_size;
4155
4156            Ok(())
4157        }
4158    }
4159
4160    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentIdIndex {
4161        #[inline(always)]
4162        fn new_empty() -> Self {
4163            Self::default()
4164        }
4165
4166        unsafe fn decode(
4167            &mut self,
4168            decoder: &mut fidl::encoding::Decoder<'_, D>,
4169            offset: usize,
4170            mut depth: fidl::encoding::Depth,
4171        ) -> fidl::Result<()> {
4172            decoder.debug_check_bounds::<Self>(offset);
4173            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4174                None => return Err(fidl::Error::NotNullable),
4175                Some(len) => len,
4176            };
4177            // Calling decoder.out_of_line_offset(0) is not allowed.
4178            if len == 0 {
4179                return Ok(());
4180            };
4181            depth.increment()?;
4182            let envelope_size = 8;
4183            let bytes_len = len * envelope_size;
4184            let offset = decoder.out_of_line_offset(bytes_len)?;
4185            // Decode the envelope for each type.
4186            let mut _next_ordinal_to_read = 0;
4187            let mut next_offset = offset;
4188            let end_offset = offset + bytes_len;
4189            _next_ordinal_to_read += 1;
4190            if next_offset >= end_offset {
4191                return Ok(());
4192            }
4193
4194            // Decode unknown envelopes for gaps in ordinals.
4195            while _next_ordinal_to_read < 2 {
4196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4197                _next_ordinal_to_read += 1;
4198                next_offset += envelope_size;
4199            }
4200
4201            let next_out_of_line = decoder.next_out_of_line();
4202            let handles_before = decoder.remaining_handles();
4203            if let Some((inlined, num_bytes, num_handles)) =
4204                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4205            {
4206                let member_inline_size = <fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4207                if inlined != (member_inline_size <= 4) {
4208                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4209                }
4210                let inner_offset;
4211                let mut inner_depth = depth.clone();
4212                if inlined {
4213                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4214                    inner_offset = next_offset;
4215                } else {
4216                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4217                    inner_depth.increment()?;
4218                }
4219                let val_ref = self.instances.get_or_insert_with(
4220                    || fidl::new_empty!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D),
4221                );
4222                fidl::decode!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
4223                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4224                {
4225                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4226                }
4227                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4228                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4229                }
4230            }
4231
4232            next_offset += envelope_size;
4233
4234            // Decode the remaining unknown envelopes.
4235            while next_offset < end_offset {
4236                _next_ordinal_to_read += 1;
4237                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4238                next_offset += envelope_size;
4239            }
4240
4241            Ok(())
4242        }
4243    }
4244
4245    impl Config {
4246        #[inline(always)]
4247        fn max_ordinal_present(&self) -> u64 {
4248            if let Some(_) = self.scudo_options {
4249                return 24;
4250            }
4251            if let Some(_) = self.inject_capabilities {
4252                return 23;
4253            }
4254            if let Some(_) = self.trace_provider {
4255                return 22;
4256            }
4257            if let Some(_) = self.health_check {
4258                return 21;
4259            }
4260            if let Some(_) = self.vmex_source {
4261                return 20;
4262            }
4263            if let Some(_) = self.abi_revision_policy {
4264                return 19;
4265            }
4266            if let Some(_) = self.enable_introspection {
4267                return 18;
4268            }
4269            if let Some(_) = self.builtin_capabilities {
4270                return 17;
4271            }
4272            if let Some(_) = self.realm_builder_resolver_and_runner {
4273                return 16;
4274            }
4275            if let Some(_) = self.builtin_boot_resolver {
4276                return 14;
4277            }
4278            if let Some(_) = self.log_all_events {
4279                return 13;
4280            }
4281            if let Some(_) = self.log_destination {
4282                return 12;
4283            }
4284            if let Some(_) = self.component_id_index_path {
4285                return 11;
4286            }
4287            if let Some(_) = self.root_component_url {
4288                return 10;
4289            }
4290            if let Some(_) = self.num_threads {
4291                return 7;
4292            }
4293            if let Some(_) = self.maintain_utc_clock {
4294                return 6;
4295            }
4296            if let Some(_) = self.use_builtin_process_launcher {
4297                return 5;
4298            }
4299            if let Some(_) = self.namespace_capabilities {
4300                return 4;
4301            }
4302            if let Some(_) = self.security_policy {
4303                return 3;
4304            }
4305            if let Some(_) = self.list_children_batch_size {
4306                return 2;
4307            }
4308            if let Some(_) = self.debug {
4309                return 1;
4310            }
4311            0
4312        }
4313    }
4314
4315    impl fidl::encoding::ValueTypeMarker for Config {
4316        type Borrowed<'a> = &'a Self;
4317        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4318            value
4319        }
4320    }
4321
4322    unsafe impl fidl::encoding::TypeMarker for Config {
4323        type Owned = Self;
4324
4325        #[inline(always)]
4326        fn inline_align(_context: fidl::encoding::Context) -> usize {
4327            8
4328        }
4329
4330        #[inline(always)]
4331        fn inline_size(_context: fidl::encoding::Context) -> usize {
4332            16
4333        }
4334    }
4335
4336    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
4337        unsafe fn encode(
4338            self,
4339            encoder: &mut fidl::encoding::Encoder<'_, D>,
4340            offset: usize,
4341            mut depth: fidl::encoding::Depth,
4342        ) -> fidl::Result<()> {
4343            encoder.debug_check_bounds::<Config>(offset);
4344            // Vector header
4345            let max_ordinal: u64 = self.max_ordinal_present();
4346            encoder.write_num(max_ordinal, offset);
4347            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4348            // Calling encoder.out_of_line_offset(0) is not allowed.
4349            if max_ordinal == 0 {
4350                return Ok(());
4351            }
4352            depth.increment()?;
4353            let envelope_size = 8;
4354            let bytes_len = max_ordinal as usize * envelope_size;
4355            #[allow(unused_variables)]
4356            let offset = encoder.out_of_line_offset(bytes_len);
4357            let mut _prev_end_offset: usize = 0;
4358            if 1 > max_ordinal {
4359                return Ok(());
4360            }
4361
4362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4363            // are envelope_size bytes.
4364            let cur_offset: usize = (1 - 1) * envelope_size;
4365
4366            // Zero reserved fields.
4367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4368
4369            // Safety:
4370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4372            //   envelope_size bytes, there is always sufficient room.
4373            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4374                self.debug.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4375                encoder,
4376                offset + cur_offset,
4377                depth,
4378            )?;
4379
4380            _prev_end_offset = cur_offset + envelope_size;
4381            if 2 > max_ordinal {
4382                return Ok(());
4383            }
4384
4385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4386            // are envelope_size bytes.
4387            let cur_offset: usize = (2 - 1) * envelope_size;
4388
4389            // Zero reserved fields.
4390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4391
4392            // Safety:
4393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4395            //   envelope_size bytes, there is always sufficient room.
4396            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4397                self.list_children_batch_size
4398                    .as_ref()
4399                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4400                encoder,
4401                offset + cur_offset,
4402                depth,
4403            )?;
4404
4405            _prev_end_offset = cur_offset + envelope_size;
4406            if 3 > max_ordinal {
4407                return Ok(());
4408            }
4409
4410            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4411            // are envelope_size bytes.
4412            let cur_offset: usize = (3 - 1) * envelope_size;
4413
4414            // Zero reserved fields.
4415            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4416
4417            // Safety:
4418            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4419            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4420            //   envelope_size bytes, there is always sufficient room.
4421            fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
4422                self.security_policy
4423                    .as_ref()
4424                    .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4425                encoder,
4426                offset + cur_offset,
4427                depth,
4428            )?;
4429
4430            _prev_end_offset = cur_offset + envelope_size;
4431            if 4 > max_ordinal {
4432                return Ok(());
4433            }
4434
4435            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4436            // are envelope_size bytes.
4437            let cur_offset: usize = (4 - 1) * envelope_size;
4438
4439            // Zero reserved fields.
4440            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4441
4442            // Safety:
4443            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4444            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4445            //   envelope_size bytes, there is always sufficient room.
4446            fidl::encoding::encode_in_envelope_optional::<
4447                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4448                D,
4449            >(
4450                self.namespace_capabilities.as_ref().map(
4451                    <fidl::encoding::UnboundedVector<
4452                        fidl_fuchsia_component_decl__common::Capability,
4453                    > as fidl::encoding::ValueTypeMarker>::borrow,
4454                ),
4455                encoder,
4456                offset + cur_offset,
4457                depth,
4458            )?;
4459
4460            _prev_end_offset = cur_offset + envelope_size;
4461            if 5 > max_ordinal {
4462                return Ok(());
4463            }
4464
4465            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4466            // are envelope_size bytes.
4467            let cur_offset: usize = (5 - 1) * envelope_size;
4468
4469            // Zero reserved fields.
4470            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4471
4472            // Safety:
4473            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4474            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4475            //   envelope_size bytes, there is always sufficient room.
4476            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4477                self.use_builtin_process_launcher
4478                    .as_ref()
4479                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4480                encoder,
4481                offset + cur_offset,
4482                depth,
4483            )?;
4484
4485            _prev_end_offset = cur_offset + envelope_size;
4486            if 6 > max_ordinal {
4487                return Ok(());
4488            }
4489
4490            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4491            // are envelope_size bytes.
4492            let cur_offset: usize = (6 - 1) * envelope_size;
4493
4494            // Zero reserved fields.
4495            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4496
4497            // Safety:
4498            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4499            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4500            //   envelope_size bytes, there is always sufficient room.
4501            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4502                self.maintain_utc_clock
4503                    .as_ref()
4504                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4505                encoder,
4506                offset + cur_offset,
4507                depth,
4508            )?;
4509
4510            _prev_end_offset = cur_offset + envelope_size;
4511            if 7 > max_ordinal {
4512                return Ok(());
4513            }
4514
4515            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4516            // are envelope_size bytes.
4517            let cur_offset: usize = (7 - 1) * envelope_size;
4518
4519            // Zero reserved fields.
4520            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4521
4522            // Safety:
4523            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4524            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4525            //   envelope_size bytes, there is always sufficient room.
4526            fidl::encoding::encode_in_envelope_optional::<u8, D>(
4527                self.num_threads.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4528                encoder,
4529                offset + cur_offset,
4530                depth,
4531            )?;
4532
4533            _prev_end_offset = cur_offset + envelope_size;
4534            if 10 > max_ordinal {
4535                return Ok(());
4536            }
4537
4538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4539            // are envelope_size bytes.
4540            let cur_offset: usize = (10 - 1) * envelope_size;
4541
4542            // Zero reserved fields.
4543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4544
4545            // Safety:
4546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4548            //   envelope_size bytes, there is always sufficient room.
4549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4550            self.root_component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4551            encoder, offset + cur_offset, depth
4552        )?;
4553
4554            _prev_end_offset = cur_offset + envelope_size;
4555            if 11 > max_ordinal {
4556                return Ok(());
4557            }
4558
4559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4560            // are envelope_size bytes.
4561            let cur_offset: usize = (11 - 1) * envelope_size;
4562
4563            // Zero reserved fields.
4564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4565
4566            // Safety:
4567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4569            //   envelope_size bytes, there is always sufficient room.
4570            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
4571            self.component_id_index_path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
4572            encoder, offset + cur_offset, depth
4573        )?;
4574
4575            _prev_end_offset = cur_offset + envelope_size;
4576            if 12 > max_ordinal {
4577                return Ok(());
4578            }
4579
4580            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4581            // are envelope_size bytes.
4582            let cur_offset: usize = (12 - 1) * envelope_size;
4583
4584            // Zero reserved fields.
4585            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4586
4587            // Safety:
4588            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4589            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4590            //   envelope_size bytes, there is always sufficient room.
4591            fidl::encoding::encode_in_envelope_optional::<LogDestination, D>(
4592                self.log_destination
4593                    .as_ref()
4594                    .map(<LogDestination as fidl::encoding::ValueTypeMarker>::borrow),
4595                encoder,
4596                offset + cur_offset,
4597                depth,
4598            )?;
4599
4600            _prev_end_offset = cur_offset + envelope_size;
4601            if 13 > max_ordinal {
4602                return Ok(());
4603            }
4604
4605            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4606            // are envelope_size bytes.
4607            let cur_offset: usize = (13 - 1) * envelope_size;
4608
4609            // Zero reserved fields.
4610            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4611
4612            // Safety:
4613            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4614            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4615            //   envelope_size bytes, there is always sufficient room.
4616            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4617                self.log_all_events.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4618                encoder,
4619                offset + cur_offset,
4620                depth,
4621            )?;
4622
4623            _prev_end_offset = cur_offset + envelope_size;
4624            if 14 > max_ordinal {
4625                return Ok(());
4626            }
4627
4628            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4629            // are envelope_size bytes.
4630            let cur_offset: usize = (14 - 1) * envelope_size;
4631
4632            // Zero reserved fields.
4633            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4634
4635            // Safety:
4636            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4637            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4638            //   envelope_size bytes, there is always sufficient room.
4639            fidl::encoding::encode_in_envelope_optional::<BuiltinBootResolver, D>(
4640                self.builtin_boot_resolver
4641                    .as_ref()
4642                    .map(<BuiltinBootResolver as fidl::encoding::ValueTypeMarker>::borrow),
4643                encoder,
4644                offset + cur_offset,
4645                depth,
4646            )?;
4647
4648            _prev_end_offset = cur_offset + envelope_size;
4649            if 16 > max_ordinal {
4650                return Ok(());
4651            }
4652
4653            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4654            // are envelope_size bytes.
4655            let cur_offset: usize = (16 - 1) * envelope_size;
4656
4657            // Zero reserved fields.
4658            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4659
4660            // Safety:
4661            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4662            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4663            //   envelope_size bytes, there is always sufficient room.
4664            fidl::encoding::encode_in_envelope_optional::<RealmBuilderResolverAndRunner, D>(
4665                self.realm_builder_resolver_and_runner.as_ref().map(
4666                    <RealmBuilderResolverAndRunner as fidl::encoding::ValueTypeMarker>::borrow,
4667                ),
4668                encoder,
4669                offset + cur_offset,
4670                depth,
4671            )?;
4672
4673            _prev_end_offset = cur_offset + envelope_size;
4674            if 17 > max_ordinal {
4675                return Ok(());
4676            }
4677
4678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4679            // are envelope_size bytes.
4680            let cur_offset: usize = (17 - 1) * envelope_size;
4681
4682            // Zero reserved fields.
4683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4684
4685            // Safety:
4686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4688            //   envelope_size bytes, there is always sufficient room.
4689            fidl::encoding::encode_in_envelope_optional::<
4690                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Capability>,
4691                D,
4692            >(
4693                self.builtin_capabilities.as_ref().map(
4694                    <fidl::encoding::UnboundedVector<
4695                        fidl_fuchsia_component_decl__common::Capability,
4696                    > as fidl::encoding::ValueTypeMarker>::borrow,
4697                ),
4698                encoder,
4699                offset + cur_offset,
4700                depth,
4701            )?;
4702
4703            _prev_end_offset = cur_offset + envelope_size;
4704            if 18 > max_ordinal {
4705                return Ok(());
4706            }
4707
4708            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4709            // are envelope_size bytes.
4710            let cur_offset: usize = (18 - 1) * envelope_size;
4711
4712            // Zero reserved fields.
4713            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4714
4715            // Safety:
4716            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4717            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4718            //   envelope_size bytes, there is always sufficient room.
4719            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4720                self.enable_introspection
4721                    .as_ref()
4722                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4723                encoder,
4724                offset + cur_offset,
4725                depth,
4726            )?;
4727
4728            _prev_end_offset = cur_offset + envelope_size;
4729            if 19 > max_ordinal {
4730                return Ok(());
4731            }
4732
4733            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4734            // are envelope_size bytes.
4735            let cur_offset: usize = (19 - 1) * envelope_size;
4736
4737            // Zero reserved fields.
4738            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4739
4740            // Safety:
4741            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4742            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4743            //   envelope_size bytes, there is always sufficient room.
4744            fidl::encoding::encode_in_envelope_optional::<AbiRevisionPolicy, D>(
4745                self.abi_revision_policy
4746                    .as_ref()
4747                    .map(<AbiRevisionPolicy as fidl::encoding::ValueTypeMarker>::borrow),
4748                encoder,
4749                offset + cur_offset,
4750                depth,
4751            )?;
4752
4753            _prev_end_offset = cur_offset + envelope_size;
4754            if 20 > max_ordinal {
4755                return Ok(());
4756            }
4757
4758            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4759            // are envelope_size bytes.
4760            let cur_offset: usize = (20 - 1) * envelope_size;
4761
4762            // Zero reserved fields.
4763            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4764
4765            // Safety:
4766            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4767            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4768            //   envelope_size bytes, there is always sufficient room.
4769            fidl::encoding::encode_in_envelope_optional::<VmexSource, D>(
4770                self.vmex_source
4771                    .as_ref()
4772                    .map(<VmexSource as fidl::encoding::ValueTypeMarker>::borrow),
4773                encoder,
4774                offset + cur_offset,
4775                depth,
4776            )?;
4777
4778            _prev_end_offset = cur_offset + envelope_size;
4779            if 21 > max_ordinal {
4780                return Ok(());
4781            }
4782
4783            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4784            // are envelope_size bytes.
4785            let cur_offset: usize = (21 - 1) * envelope_size;
4786
4787            // Zero reserved fields.
4788            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4789
4790            // Safety:
4791            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4792            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4793            //   envelope_size bytes, there is always sufficient room.
4794            fidl::encoding::encode_in_envelope_optional::<HealthCheck, D>(
4795                self.health_check
4796                    .as_ref()
4797                    .map(<HealthCheck as fidl::encoding::ValueTypeMarker>::borrow),
4798                encoder,
4799                offset + cur_offset,
4800                depth,
4801            )?;
4802
4803            _prev_end_offset = cur_offset + envelope_size;
4804            if 22 > max_ordinal {
4805                return Ok(());
4806            }
4807
4808            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4809            // are envelope_size bytes.
4810            let cur_offset: usize = (22 - 1) * envelope_size;
4811
4812            // Zero reserved fields.
4813            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4814
4815            // Safety:
4816            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4817            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4818            //   envelope_size bytes, there is always sufficient room.
4819            fidl::encoding::encode_in_envelope_optional::<TraceProvider, D>(
4820                self.trace_provider
4821                    .as_ref()
4822                    .map(<TraceProvider as fidl::encoding::ValueTypeMarker>::borrow),
4823                encoder,
4824                offset + cur_offset,
4825                depth,
4826            )?;
4827
4828            _prev_end_offset = cur_offset + envelope_size;
4829            if 23 > max_ordinal {
4830                return Ok(());
4831            }
4832
4833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4834            // are envelope_size bytes.
4835            let cur_offset: usize = (23 - 1) * envelope_size;
4836
4837            // Zero reserved fields.
4838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4839
4840            // Safety:
4841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4843            //   envelope_size bytes, there is always sufficient room.
4844            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedCapabilities>, D>(
4845            self.inject_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::ValueTypeMarker>::borrow),
4846            encoder, offset + cur_offset, depth
4847        )?;
4848
4849            _prev_end_offset = cur_offset + envelope_size;
4850            if 24 > max_ordinal {
4851                return Ok(());
4852            }
4853
4854            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4855            // are envelope_size bytes.
4856            let cur_offset: usize = (24 - 1) * envelope_size;
4857
4858            // Zero reserved fields.
4859            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4860
4861            // Safety:
4862            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4863            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4864            //   envelope_size bytes, there is always sufficient room.
4865            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4866                self.scudo_options.as_ref().map(
4867                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4868                ),
4869                encoder,
4870                offset + cur_offset,
4871                depth,
4872            )?;
4873
4874            _prev_end_offset = cur_offset + envelope_size;
4875
4876            Ok(())
4877        }
4878    }
4879
4880    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
4881        #[inline(always)]
4882        fn new_empty() -> Self {
4883            Self::default()
4884        }
4885
4886        unsafe fn decode(
4887            &mut self,
4888            decoder: &mut fidl::encoding::Decoder<'_, D>,
4889            offset: usize,
4890            mut depth: fidl::encoding::Depth,
4891        ) -> fidl::Result<()> {
4892            decoder.debug_check_bounds::<Self>(offset);
4893            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4894                None => return Err(fidl::Error::NotNullable),
4895                Some(len) => len,
4896            };
4897            // Calling decoder.out_of_line_offset(0) is not allowed.
4898            if len == 0 {
4899                return Ok(());
4900            };
4901            depth.increment()?;
4902            let envelope_size = 8;
4903            let bytes_len = len * envelope_size;
4904            let offset = decoder.out_of_line_offset(bytes_len)?;
4905            // Decode the envelope for each type.
4906            let mut _next_ordinal_to_read = 0;
4907            let mut next_offset = offset;
4908            let end_offset = offset + bytes_len;
4909            _next_ordinal_to_read += 1;
4910            if next_offset >= end_offset {
4911                return Ok(());
4912            }
4913
4914            // Decode unknown envelopes for gaps in ordinals.
4915            while _next_ordinal_to_read < 1 {
4916                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4917                _next_ordinal_to_read += 1;
4918                next_offset += envelope_size;
4919            }
4920
4921            let next_out_of_line = decoder.next_out_of_line();
4922            let handles_before = decoder.remaining_handles();
4923            if let Some((inlined, num_bytes, num_handles)) =
4924                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4925            {
4926                let member_inline_size =
4927                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4928                if inlined != (member_inline_size <= 4) {
4929                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4930                }
4931                let inner_offset;
4932                let mut inner_depth = depth.clone();
4933                if inlined {
4934                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4935                    inner_offset = next_offset;
4936                } else {
4937                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4938                    inner_depth.increment()?;
4939                }
4940                let val_ref = self.debug.get_or_insert_with(|| fidl::new_empty!(bool, D));
4941                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4942                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4943                {
4944                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4945                }
4946                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4947                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4948                }
4949            }
4950
4951            next_offset += envelope_size;
4952            _next_ordinal_to_read += 1;
4953            if next_offset >= end_offset {
4954                return Ok(());
4955            }
4956
4957            // Decode unknown envelopes for gaps in ordinals.
4958            while _next_ordinal_to_read < 2 {
4959                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4960                _next_ordinal_to_read += 1;
4961                next_offset += envelope_size;
4962            }
4963
4964            let next_out_of_line = decoder.next_out_of_line();
4965            let handles_before = decoder.remaining_handles();
4966            if let Some((inlined, num_bytes, num_handles)) =
4967                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4968            {
4969                let member_inline_size =
4970                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4971                if inlined != (member_inline_size <= 4) {
4972                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4973                }
4974                let inner_offset;
4975                let mut inner_depth = depth.clone();
4976                if inlined {
4977                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4978                    inner_offset = next_offset;
4979                } else {
4980                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4981                    inner_depth.increment()?;
4982                }
4983                let val_ref =
4984                    self.list_children_batch_size.get_or_insert_with(|| fidl::new_empty!(u32, D));
4985                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4986                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4987                {
4988                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4989                }
4990                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4991                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4992                }
4993            }
4994
4995            next_offset += envelope_size;
4996            _next_ordinal_to_read += 1;
4997            if next_offset >= end_offset {
4998                return Ok(());
4999            }
5000
5001            // Decode unknown envelopes for gaps in ordinals.
5002            while _next_ordinal_to_read < 3 {
5003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5004                _next_ordinal_to_read += 1;
5005                next_offset += envelope_size;
5006            }
5007
5008            let next_out_of_line = decoder.next_out_of_line();
5009            let handles_before = decoder.remaining_handles();
5010            if let Some((inlined, num_bytes, num_handles)) =
5011                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5012            {
5013                let member_inline_size =
5014                    <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5015                if inlined != (member_inline_size <= 4) {
5016                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5017                }
5018                let inner_offset;
5019                let mut inner_depth = depth.clone();
5020                if inlined {
5021                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5022                    inner_offset = next_offset;
5023                } else {
5024                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5025                    inner_depth.increment()?;
5026                }
5027                let val_ref =
5028                    self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
5029                fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
5030                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5031                {
5032                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5033                }
5034                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5035                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5036                }
5037            }
5038
5039            next_offset += envelope_size;
5040            _next_ordinal_to_read += 1;
5041            if next_offset >= end_offset {
5042                return Ok(());
5043            }
5044
5045            // Decode unknown envelopes for gaps in ordinals.
5046            while _next_ordinal_to_read < 4 {
5047                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5048                _next_ordinal_to_read += 1;
5049                next_offset += envelope_size;
5050            }
5051
5052            let next_out_of_line = decoder.next_out_of_line();
5053            let handles_before = decoder.remaining_handles();
5054            if let Some((inlined, num_bytes, num_handles)) =
5055                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5056            {
5057                let member_inline_size = <fidl::encoding::UnboundedVector<
5058                    fidl_fuchsia_component_decl__common::Capability,
5059                > as fidl::encoding::TypeMarker>::inline_size(
5060                    decoder.context
5061                );
5062                if inlined != (member_inline_size <= 4) {
5063                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5064                }
5065                let inner_offset;
5066                let mut inner_depth = depth.clone();
5067                if inlined {
5068                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5069                    inner_offset = next_offset;
5070                } else {
5071                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5072                    inner_depth.increment()?;
5073                }
5074                let val_ref = self.namespace_capabilities.get_or_insert_with(|| {
5075                    fidl::new_empty!(
5076                        fidl::encoding::UnboundedVector<
5077                            fidl_fuchsia_component_decl__common::Capability,
5078                        >,
5079                        D
5080                    )
5081                });
5082                fidl::decode!(
5083                    fidl::encoding::UnboundedVector<
5084                        fidl_fuchsia_component_decl__common::Capability,
5085                    >,
5086                    D,
5087                    val_ref,
5088                    decoder,
5089                    inner_offset,
5090                    inner_depth
5091                )?;
5092                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5093                {
5094                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5095                }
5096                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5097                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5098                }
5099            }
5100
5101            next_offset += envelope_size;
5102            _next_ordinal_to_read += 1;
5103            if next_offset >= end_offset {
5104                return Ok(());
5105            }
5106
5107            // Decode unknown envelopes for gaps in ordinals.
5108            while _next_ordinal_to_read < 5 {
5109                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5110                _next_ordinal_to_read += 1;
5111                next_offset += envelope_size;
5112            }
5113
5114            let next_out_of_line = decoder.next_out_of_line();
5115            let handles_before = decoder.remaining_handles();
5116            if let Some((inlined, num_bytes, num_handles)) =
5117                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5118            {
5119                let member_inline_size =
5120                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5121                if inlined != (member_inline_size <= 4) {
5122                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5123                }
5124                let inner_offset;
5125                let mut inner_depth = depth.clone();
5126                if inlined {
5127                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5128                    inner_offset = next_offset;
5129                } else {
5130                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5131                    inner_depth.increment()?;
5132                }
5133                let val_ref = self
5134                    .use_builtin_process_launcher
5135                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
5136                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5137                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5138                {
5139                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5140                }
5141                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5142                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5143                }
5144            }
5145
5146            next_offset += envelope_size;
5147            _next_ordinal_to_read += 1;
5148            if next_offset >= end_offset {
5149                return Ok(());
5150            }
5151
5152            // Decode unknown envelopes for gaps in ordinals.
5153            while _next_ordinal_to_read < 6 {
5154                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5155                _next_ordinal_to_read += 1;
5156                next_offset += envelope_size;
5157            }
5158
5159            let next_out_of_line = decoder.next_out_of_line();
5160            let handles_before = decoder.remaining_handles();
5161            if let Some((inlined, num_bytes, num_handles)) =
5162                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5163            {
5164                let member_inline_size =
5165                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5166                if inlined != (member_inline_size <= 4) {
5167                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5168                }
5169                let inner_offset;
5170                let mut inner_depth = depth.clone();
5171                if inlined {
5172                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5173                    inner_offset = next_offset;
5174                } else {
5175                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5176                    inner_depth.increment()?;
5177                }
5178                let val_ref =
5179                    self.maintain_utc_clock.get_or_insert_with(|| fidl::new_empty!(bool, D));
5180                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5181                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5182                {
5183                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5184                }
5185                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5186                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5187                }
5188            }
5189
5190            next_offset += envelope_size;
5191            _next_ordinal_to_read += 1;
5192            if next_offset >= end_offset {
5193                return Ok(());
5194            }
5195
5196            // Decode unknown envelopes for gaps in ordinals.
5197            while _next_ordinal_to_read < 7 {
5198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5199                _next_ordinal_to_read += 1;
5200                next_offset += envelope_size;
5201            }
5202
5203            let next_out_of_line = decoder.next_out_of_line();
5204            let handles_before = decoder.remaining_handles();
5205            if let Some((inlined, num_bytes, num_handles)) =
5206                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5207            {
5208                let member_inline_size =
5209                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5210                if inlined != (member_inline_size <= 4) {
5211                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5212                }
5213                let inner_offset;
5214                let mut inner_depth = depth.clone();
5215                if inlined {
5216                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5217                    inner_offset = next_offset;
5218                } else {
5219                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5220                    inner_depth.increment()?;
5221                }
5222                let val_ref = self.num_threads.get_or_insert_with(|| fidl::new_empty!(u8, D));
5223                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5224                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5225                {
5226                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5227                }
5228                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5229                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5230                }
5231            }
5232
5233            next_offset += envelope_size;
5234            _next_ordinal_to_read += 1;
5235            if next_offset >= end_offset {
5236                return Ok(());
5237            }
5238
5239            // Decode unknown envelopes for gaps in ordinals.
5240            while _next_ordinal_to_read < 10 {
5241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5242                _next_ordinal_to_read += 1;
5243                next_offset += envelope_size;
5244            }
5245
5246            let next_out_of_line = decoder.next_out_of_line();
5247            let handles_before = decoder.remaining_handles();
5248            if let Some((inlined, num_bytes, num_handles)) =
5249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5250            {
5251                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5252                if inlined != (member_inline_size <= 4) {
5253                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5254                }
5255                let inner_offset;
5256                let mut inner_depth = depth.clone();
5257                if inlined {
5258                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5259                    inner_offset = next_offset;
5260                } else {
5261                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5262                    inner_depth.increment()?;
5263                }
5264                let val_ref = self.root_component_url.get_or_insert_with(|| {
5265                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5266                });
5267                fidl::decode!(
5268                    fidl::encoding::BoundedString<4096>,
5269                    D,
5270                    val_ref,
5271                    decoder,
5272                    inner_offset,
5273                    inner_depth
5274                )?;
5275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5276                {
5277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5278                }
5279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5281                }
5282            }
5283
5284            next_offset += envelope_size;
5285            _next_ordinal_to_read += 1;
5286            if next_offset >= end_offset {
5287                return Ok(());
5288            }
5289
5290            // Decode unknown envelopes for gaps in ordinals.
5291            while _next_ordinal_to_read < 11 {
5292                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5293                _next_ordinal_to_read += 1;
5294                next_offset += envelope_size;
5295            }
5296
5297            let next_out_of_line = decoder.next_out_of_line();
5298            let handles_before = decoder.remaining_handles();
5299            if let Some((inlined, num_bytes, num_handles)) =
5300                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5301            {
5302                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5303                if inlined != (member_inline_size <= 4) {
5304                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5305                }
5306                let inner_offset;
5307                let mut inner_depth = depth.clone();
5308                if inlined {
5309                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5310                    inner_offset = next_offset;
5311                } else {
5312                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5313                    inner_depth.increment()?;
5314                }
5315                let val_ref = self.component_id_index_path.get_or_insert_with(|| {
5316                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
5317                });
5318                fidl::decode!(
5319                    fidl::encoding::BoundedString<4095>,
5320                    D,
5321                    val_ref,
5322                    decoder,
5323                    inner_offset,
5324                    inner_depth
5325                )?;
5326                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5327                {
5328                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5329                }
5330                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5331                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5332                }
5333            }
5334
5335            next_offset += envelope_size;
5336            _next_ordinal_to_read += 1;
5337            if next_offset >= end_offset {
5338                return Ok(());
5339            }
5340
5341            // Decode unknown envelopes for gaps in ordinals.
5342            while _next_ordinal_to_read < 12 {
5343                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5344                _next_ordinal_to_read += 1;
5345                next_offset += envelope_size;
5346            }
5347
5348            let next_out_of_line = decoder.next_out_of_line();
5349            let handles_before = decoder.remaining_handles();
5350            if let Some((inlined, num_bytes, num_handles)) =
5351                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5352            {
5353                let member_inline_size =
5354                    <LogDestination as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5355                if inlined != (member_inline_size <= 4) {
5356                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5357                }
5358                let inner_offset;
5359                let mut inner_depth = depth.clone();
5360                if inlined {
5361                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5362                    inner_offset = next_offset;
5363                } else {
5364                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5365                    inner_depth.increment()?;
5366                }
5367                let val_ref =
5368                    self.log_destination.get_or_insert_with(|| fidl::new_empty!(LogDestination, D));
5369                fidl::decode!(LogDestination, D, val_ref, decoder, inner_offset, inner_depth)?;
5370                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5371                {
5372                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5373                }
5374                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5375                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5376                }
5377            }
5378
5379            next_offset += envelope_size;
5380            _next_ordinal_to_read += 1;
5381            if next_offset >= end_offset {
5382                return Ok(());
5383            }
5384
5385            // Decode unknown envelopes for gaps in ordinals.
5386            while _next_ordinal_to_read < 13 {
5387                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5388                _next_ordinal_to_read += 1;
5389                next_offset += envelope_size;
5390            }
5391
5392            let next_out_of_line = decoder.next_out_of_line();
5393            let handles_before = decoder.remaining_handles();
5394            if let Some((inlined, num_bytes, num_handles)) =
5395                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5396            {
5397                let member_inline_size =
5398                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5399                if inlined != (member_inline_size <= 4) {
5400                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5401                }
5402                let inner_offset;
5403                let mut inner_depth = depth.clone();
5404                if inlined {
5405                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5406                    inner_offset = next_offset;
5407                } else {
5408                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5409                    inner_depth.increment()?;
5410                }
5411                let val_ref = self.log_all_events.get_or_insert_with(|| fidl::new_empty!(bool, D));
5412                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5413                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5414                {
5415                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5416                }
5417                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5418                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5419                }
5420            }
5421
5422            next_offset += envelope_size;
5423            _next_ordinal_to_read += 1;
5424            if next_offset >= end_offset {
5425                return Ok(());
5426            }
5427
5428            // Decode unknown envelopes for gaps in ordinals.
5429            while _next_ordinal_to_read < 14 {
5430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5431                _next_ordinal_to_read += 1;
5432                next_offset += envelope_size;
5433            }
5434
5435            let next_out_of_line = decoder.next_out_of_line();
5436            let handles_before = decoder.remaining_handles();
5437            if let Some((inlined, num_bytes, num_handles)) =
5438                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5439            {
5440                let member_inline_size =
5441                    <BuiltinBootResolver as fidl::encoding::TypeMarker>::inline_size(
5442                        decoder.context,
5443                    );
5444                if inlined != (member_inline_size <= 4) {
5445                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5446                }
5447                let inner_offset;
5448                let mut inner_depth = depth.clone();
5449                if inlined {
5450                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5451                    inner_offset = next_offset;
5452                } else {
5453                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5454                    inner_depth.increment()?;
5455                }
5456                let val_ref = self
5457                    .builtin_boot_resolver
5458                    .get_or_insert_with(|| fidl::new_empty!(BuiltinBootResolver, D));
5459                fidl::decode!(BuiltinBootResolver, D, val_ref, decoder, inner_offset, inner_depth)?;
5460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5461                {
5462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5463                }
5464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5466                }
5467            }
5468
5469            next_offset += envelope_size;
5470            _next_ordinal_to_read += 1;
5471            if next_offset >= end_offset {
5472                return Ok(());
5473            }
5474
5475            // Decode unknown envelopes for gaps in ordinals.
5476            while _next_ordinal_to_read < 16 {
5477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5478                _next_ordinal_to_read += 1;
5479                next_offset += envelope_size;
5480            }
5481
5482            let next_out_of_line = decoder.next_out_of_line();
5483            let handles_before = decoder.remaining_handles();
5484            if let Some((inlined, num_bytes, num_handles)) =
5485                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5486            {
5487                let member_inline_size =
5488                    <RealmBuilderResolverAndRunner as fidl::encoding::TypeMarker>::inline_size(
5489                        decoder.context,
5490                    );
5491                if inlined != (member_inline_size <= 4) {
5492                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5493                }
5494                let inner_offset;
5495                let mut inner_depth = depth.clone();
5496                if inlined {
5497                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5498                    inner_offset = next_offset;
5499                } else {
5500                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5501                    inner_depth.increment()?;
5502                }
5503                let val_ref = self
5504                    .realm_builder_resolver_and_runner
5505                    .get_or_insert_with(|| fidl::new_empty!(RealmBuilderResolverAndRunner, D));
5506                fidl::decode!(
5507                    RealmBuilderResolverAndRunner,
5508                    D,
5509                    val_ref,
5510                    decoder,
5511                    inner_offset,
5512                    inner_depth
5513                )?;
5514                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5515                {
5516                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5517                }
5518                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5519                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5520                }
5521            }
5522
5523            next_offset += envelope_size;
5524            _next_ordinal_to_read += 1;
5525            if next_offset >= end_offset {
5526                return Ok(());
5527            }
5528
5529            // Decode unknown envelopes for gaps in ordinals.
5530            while _next_ordinal_to_read < 17 {
5531                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5532                _next_ordinal_to_read += 1;
5533                next_offset += envelope_size;
5534            }
5535
5536            let next_out_of_line = decoder.next_out_of_line();
5537            let handles_before = decoder.remaining_handles();
5538            if let Some((inlined, num_bytes, num_handles)) =
5539                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5540            {
5541                let member_inline_size = <fidl::encoding::UnboundedVector<
5542                    fidl_fuchsia_component_decl__common::Capability,
5543                > as fidl::encoding::TypeMarker>::inline_size(
5544                    decoder.context
5545                );
5546                if inlined != (member_inline_size <= 4) {
5547                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5548                }
5549                let inner_offset;
5550                let mut inner_depth = depth.clone();
5551                if inlined {
5552                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5553                    inner_offset = next_offset;
5554                } else {
5555                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5556                    inner_depth.increment()?;
5557                }
5558                let val_ref = self.builtin_capabilities.get_or_insert_with(|| {
5559                    fidl::new_empty!(
5560                        fidl::encoding::UnboundedVector<
5561                            fidl_fuchsia_component_decl__common::Capability,
5562                        >,
5563                        D
5564                    )
5565                });
5566                fidl::decode!(
5567                    fidl::encoding::UnboundedVector<
5568                        fidl_fuchsia_component_decl__common::Capability,
5569                    >,
5570                    D,
5571                    val_ref,
5572                    decoder,
5573                    inner_offset,
5574                    inner_depth
5575                )?;
5576                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5577                {
5578                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5579                }
5580                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5581                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5582                }
5583            }
5584
5585            next_offset += envelope_size;
5586            _next_ordinal_to_read += 1;
5587            if next_offset >= end_offset {
5588                return Ok(());
5589            }
5590
5591            // Decode unknown envelopes for gaps in ordinals.
5592            while _next_ordinal_to_read < 18 {
5593                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5594                _next_ordinal_to_read += 1;
5595                next_offset += envelope_size;
5596            }
5597
5598            let next_out_of_line = decoder.next_out_of_line();
5599            let handles_before = decoder.remaining_handles();
5600            if let Some((inlined, num_bytes, num_handles)) =
5601                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5602            {
5603                let member_inline_size =
5604                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5605                if inlined != (member_inline_size <= 4) {
5606                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5607                }
5608                let inner_offset;
5609                let mut inner_depth = depth.clone();
5610                if inlined {
5611                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5612                    inner_offset = next_offset;
5613                } else {
5614                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5615                    inner_depth.increment()?;
5616                }
5617                let val_ref =
5618                    self.enable_introspection.get_or_insert_with(|| fidl::new_empty!(bool, D));
5619                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5620                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5621                {
5622                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5623                }
5624                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5625                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5626                }
5627            }
5628
5629            next_offset += envelope_size;
5630            _next_ordinal_to_read += 1;
5631            if next_offset >= end_offset {
5632                return Ok(());
5633            }
5634
5635            // Decode unknown envelopes for gaps in ordinals.
5636            while _next_ordinal_to_read < 19 {
5637                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5638                _next_ordinal_to_read += 1;
5639                next_offset += envelope_size;
5640            }
5641
5642            let next_out_of_line = decoder.next_out_of_line();
5643            let handles_before = decoder.remaining_handles();
5644            if let Some((inlined, num_bytes, num_handles)) =
5645                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5646            {
5647                let member_inline_size =
5648                    <AbiRevisionPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5649                if inlined != (member_inline_size <= 4) {
5650                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5651                }
5652                let inner_offset;
5653                let mut inner_depth = depth.clone();
5654                if inlined {
5655                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5656                    inner_offset = next_offset;
5657                } else {
5658                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5659                    inner_depth.increment()?;
5660                }
5661                let val_ref = self
5662                    .abi_revision_policy
5663                    .get_or_insert_with(|| fidl::new_empty!(AbiRevisionPolicy, D));
5664                fidl::decode!(AbiRevisionPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
5665                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5666                {
5667                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5668                }
5669                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5670                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5671                }
5672            }
5673
5674            next_offset += envelope_size;
5675            _next_ordinal_to_read += 1;
5676            if next_offset >= end_offset {
5677                return Ok(());
5678            }
5679
5680            // Decode unknown envelopes for gaps in ordinals.
5681            while _next_ordinal_to_read < 20 {
5682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5683                _next_ordinal_to_read += 1;
5684                next_offset += envelope_size;
5685            }
5686
5687            let next_out_of_line = decoder.next_out_of_line();
5688            let handles_before = decoder.remaining_handles();
5689            if let Some((inlined, num_bytes, num_handles)) =
5690                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5691            {
5692                let member_inline_size =
5693                    <VmexSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5694                if inlined != (member_inline_size <= 4) {
5695                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5696                }
5697                let inner_offset;
5698                let mut inner_depth = depth.clone();
5699                if inlined {
5700                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5701                    inner_offset = next_offset;
5702                } else {
5703                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5704                    inner_depth.increment()?;
5705                }
5706                let val_ref =
5707                    self.vmex_source.get_or_insert_with(|| fidl::new_empty!(VmexSource, D));
5708                fidl::decode!(VmexSource, D, val_ref, decoder, inner_offset, inner_depth)?;
5709                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5710                {
5711                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5712                }
5713                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5714                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5715                }
5716            }
5717
5718            next_offset += envelope_size;
5719            _next_ordinal_to_read += 1;
5720            if next_offset >= end_offset {
5721                return Ok(());
5722            }
5723
5724            // Decode unknown envelopes for gaps in ordinals.
5725            while _next_ordinal_to_read < 21 {
5726                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5727                _next_ordinal_to_read += 1;
5728                next_offset += envelope_size;
5729            }
5730
5731            let next_out_of_line = decoder.next_out_of_line();
5732            let handles_before = decoder.remaining_handles();
5733            if let Some((inlined, num_bytes, num_handles)) =
5734                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5735            {
5736                let member_inline_size =
5737                    <HealthCheck as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5738                if inlined != (member_inline_size <= 4) {
5739                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5740                }
5741                let inner_offset;
5742                let mut inner_depth = depth.clone();
5743                if inlined {
5744                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5745                    inner_offset = next_offset;
5746                } else {
5747                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5748                    inner_depth.increment()?;
5749                }
5750                let val_ref =
5751                    self.health_check.get_or_insert_with(|| fidl::new_empty!(HealthCheck, D));
5752                fidl::decode!(HealthCheck, D, val_ref, decoder, inner_offset, inner_depth)?;
5753                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5754                {
5755                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5756                }
5757                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5758                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5759                }
5760            }
5761
5762            next_offset += envelope_size;
5763            _next_ordinal_to_read += 1;
5764            if next_offset >= end_offset {
5765                return Ok(());
5766            }
5767
5768            // Decode unknown envelopes for gaps in ordinals.
5769            while _next_ordinal_to_read < 22 {
5770                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5771                _next_ordinal_to_read += 1;
5772                next_offset += envelope_size;
5773            }
5774
5775            let next_out_of_line = decoder.next_out_of_line();
5776            let handles_before = decoder.remaining_handles();
5777            if let Some((inlined, num_bytes, num_handles)) =
5778                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5779            {
5780                let member_inline_size =
5781                    <TraceProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5782                if inlined != (member_inline_size <= 4) {
5783                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5784                }
5785                let inner_offset;
5786                let mut inner_depth = depth.clone();
5787                if inlined {
5788                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5789                    inner_offset = next_offset;
5790                } else {
5791                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5792                    inner_depth.increment()?;
5793                }
5794                let val_ref =
5795                    self.trace_provider.get_or_insert_with(|| fidl::new_empty!(TraceProvider, D));
5796                fidl::decode!(TraceProvider, D, val_ref, decoder, inner_offset, inner_depth)?;
5797                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5798                {
5799                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5800                }
5801                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5802                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5803                }
5804            }
5805
5806            next_offset += envelope_size;
5807            _next_ordinal_to_read += 1;
5808            if next_offset >= end_offset {
5809                return Ok(());
5810            }
5811
5812            // Decode unknown envelopes for gaps in ordinals.
5813            while _next_ordinal_to_read < 23 {
5814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5815                _next_ordinal_to_read += 1;
5816                next_offset += envelope_size;
5817            }
5818
5819            let next_out_of_line = decoder.next_out_of_line();
5820            let handles_before = decoder.remaining_handles();
5821            if let Some((inlined, num_bytes, num_handles)) =
5822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5823            {
5824                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5825                if inlined != (member_inline_size <= 4) {
5826                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5827                }
5828                let inner_offset;
5829                let mut inner_depth = depth.clone();
5830                if inlined {
5831                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5832                    inner_offset = next_offset;
5833                } else {
5834                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5835                    inner_depth.increment()?;
5836                }
5837                let val_ref = self.inject_capabilities.get_or_insert_with(|| {
5838                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedCapabilities>, D)
5839                });
5840                fidl::decode!(
5841                    fidl::encoding::UnboundedVector<InjectedCapabilities>,
5842                    D,
5843                    val_ref,
5844                    decoder,
5845                    inner_offset,
5846                    inner_depth
5847                )?;
5848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5849                {
5850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5851                }
5852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5854                }
5855            }
5856
5857            next_offset += envelope_size;
5858            _next_ordinal_to_read += 1;
5859            if next_offset >= end_offset {
5860                return Ok(());
5861            }
5862
5863            // Decode unknown envelopes for gaps in ordinals.
5864            while _next_ordinal_to_read < 24 {
5865                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5866                _next_ordinal_to_read += 1;
5867                next_offset += envelope_size;
5868            }
5869
5870            let next_out_of_line = decoder.next_out_of_line();
5871            let handles_before = decoder.remaining_handles();
5872            if let Some((inlined, num_bytes, num_handles)) =
5873                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5874            {
5875                let member_inline_size =
5876                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5877                        decoder.context,
5878                    );
5879                if inlined != (member_inline_size <= 4) {
5880                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5881                }
5882                let inner_offset;
5883                let mut inner_depth = depth.clone();
5884                if inlined {
5885                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5886                    inner_offset = next_offset;
5887                } else {
5888                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5889                    inner_depth.increment()?;
5890                }
5891                let val_ref = self
5892                    .scudo_options
5893                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5894                fidl::decode!(
5895                    fidl::encoding::UnboundedString,
5896                    D,
5897                    val_ref,
5898                    decoder,
5899                    inner_offset,
5900                    inner_depth
5901                )?;
5902                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5903                {
5904                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5905                }
5906                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5907                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5908                }
5909            }
5910
5911            next_offset += envelope_size;
5912
5913            // Decode the remaining unknown envelopes.
5914            while next_offset < end_offset {
5915                _next_ordinal_to_read += 1;
5916                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5917                next_offset += envelope_size;
5918            }
5919
5920            Ok(())
5921        }
5922    }
5923
5924    impl DebugRegistrationAllowlistEntry {
5925        #[inline(always)]
5926        fn max_ordinal_present(&self) -> u64 {
5927            if let Some(_) = self.environment_name {
5928                return 4;
5929            }
5930            if let Some(_) = self.moniker {
5931                return 3;
5932            }
5933            if let Some(_) = self.debug {
5934                return 2;
5935            }
5936            if let Some(_) = self.name {
5937                return 1;
5938            }
5939            0
5940        }
5941    }
5942
5943    impl fidl::encoding::ValueTypeMarker for DebugRegistrationAllowlistEntry {
5944        type Borrowed<'a> = &'a Self;
5945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5946            value
5947        }
5948    }
5949
5950    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationAllowlistEntry {
5951        type Owned = Self;
5952
5953        #[inline(always)]
5954        fn inline_align(_context: fidl::encoding::Context) -> usize {
5955            8
5956        }
5957
5958        #[inline(always)]
5959        fn inline_size(_context: fidl::encoding::Context) -> usize {
5960            16
5961        }
5962    }
5963
5964    unsafe impl<D: fidl::encoding::ResourceDialect>
5965        fidl::encoding::Encode<DebugRegistrationAllowlistEntry, D>
5966        for &DebugRegistrationAllowlistEntry
5967    {
5968        unsafe fn encode(
5969            self,
5970            encoder: &mut fidl::encoding::Encoder<'_, D>,
5971            offset: usize,
5972            mut depth: fidl::encoding::Depth,
5973        ) -> fidl::Result<()> {
5974            encoder.debug_check_bounds::<DebugRegistrationAllowlistEntry>(offset);
5975            // Vector header
5976            let max_ordinal: u64 = self.max_ordinal_present();
5977            encoder.write_num(max_ordinal, offset);
5978            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5979            // Calling encoder.out_of_line_offset(0) is not allowed.
5980            if max_ordinal == 0 {
5981                return Ok(());
5982            }
5983            depth.increment()?;
5984            let envelope_size = 8;
5985            let bytes_len = max_ordinal as usize * envelope_size;
5986            #[allow(unused_variables)]
5987            let offset = encoder.out_of_line_offset(bytes_len);
5988            let mut _prev_end_offset: usize = 0;
5989            if 1 > max_ordinal {
5990                return Ok(());
5991            }
5992
5993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5994            // are envelope_size bytes.
5995            let cur_offset: usize = (1 - 1) * envelope_size;
5996
5997            // Zero reserved fields.
5998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5999
6000            // Safety:
6001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6003            //   envelope_size bytes, there is always sufficient room.
6004            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6005                self.name.as_ref().map(
6006                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6007                ),
6008                encoder,
6009                offset + cur_offset,
6010                depth,
6011            )?;
6012
6013            _prev_end_offset = cur_offset + envelope_size;
6014            if 2 > max_ordinal {
6015                return Ok(());
6016            }
6017
6018            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6019            // are envelope_size bytes.
6020            let cur_offset: usize = (2 - 1) * envelope_size;
6021
6022            // Zero reserved fields.
6023            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6024
6025            // Safety:
6026            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6027            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6028            //   envelope_size bytes, there is always sufficient room.
6029            fidl::encoding::encode_in_envelope_optional::<AllowlistedDebugRegistration, D>(
6030                self.debug
6031                    .as_ref()
6032                    .map(<AllowlistedDebugRegistration as fidl::encoding::ValueTypeMarker>::borrow),
6033                encoder,
6034                offset + cur_offset,
6035                depth,
6036            )?;
6037
6038            _prev_end_offset = cur_offset + envelope_size;
6039            if 3 > max_ordinal {
6040                return Ok(());
6041            }
6042
6043            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6044            // are envelope_size bytes.
6045            let cur_offset: usize = (3 - 1) * envelope_size;
6046
6047            // Zero reserved fields.
6048            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6049
6050            // Safety:
6051            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6052            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6053            //   envelope_size bytes, there is always sufficient room.
6054            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6055            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6056            encoder, offset + cur_offset, depth
6057        )?;
6058
6059            _prev_end_offset = cur_offset + envelope_size;
6060            if 4 > max_ordinal {
6061                return Ok(());
6062            }
6063
6064            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6065            // are envelope_size bytes.
6066            let cur_offset: usize = (4 - 1) * envelope_size;
6067
6068            // Zero reserved fields.
6069            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6070
6071            // Safety:
6072            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6073            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6074            //   envelope_size bytes, there is always sufficient room.
6075            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
6076                self.environment_name.as_ref().map(
6077                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
6078                ),
6079                encoder,
6080                offset + cur_offset,
6081                depth,
6082            )?;
6083
6084            _prev_end_offset = cur_offset + envelope_size;
6085
6086            Ok(())
6087        }
6088    }
6089
6090    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6091        for DebugRegistrationAllowlistEntry
6092    {
6093        #[inline(always)]
6094        fn new_empty() -> Self {
6095            Self::default()
6096        }
6097
6098        unsafe fn decode(
6099            &mut self,
6100            decoder: &mut fidl::encoding::Decoder<'_, D>,
6101            offset: usize,
6102            mut depth: fidl::encoding::Depth,
6103        ) -> fidl::Result<()> {
6104            decoder.debug_check_bounds::<Self>(offset);
6105            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6106                None => return Err(fidl::Error::NotNullable),
6107                Some(len) => len,
6108            };
6109            // Calling decoder.out_of_line_offset(0) is not allowed.
6110            if len == 0 {
6111                return Ok(());
6112            };
6113            depth.increment()?;
6114            let envelope_size = 8;
6115            let bytes_len = len * envelope_size;
6116            let offset = decoder.out_of_line_offset(bytes_len)?;
6117            // Decode the envelope for each type.
6118            let mut _next_ordinal_to_read = 0;
6119            let mut next_offset = offset;
6120            let end_offset = offset + bytes_len;
6121            _next_ordinal_to_read += 1;
6122            if next_offset >= end_offset {
6123                return Ok(());
6124            }
6125
6126            // Decode unknown envelopes for gaps in ordinals.
6127            while _next_ordinal_to_read < 1 {
6128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6129                _next_ordinal_to_read += 1;
6130                next_offset += envelope_size;
6131            }
6132
6133            let next_out_of_line = decoder.next_out_of_line();
6134            let handles_before = decoder.remaining_handles();
6135            if let Some((inlined, num_bytes, num_handles)) =
6136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6137            {
6138                let member_inline_size =
6139                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6140                        decoder.context,
6141                    );
6142                if inlined != (member_inline_size <= 4) {
6143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6144                }
6145                let inner_offset;
6146                let mut inner_depth = depth.clone();
6147                if inlined {
6148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6149                    inner_offset = next_offset;
6150                } else {
6151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6152                    inner_depth.increment()?;
6153                }
6154                let val_ref = self
6155                    .name
6156                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6157                fidl::decode!(
6158                    fidl::encoding::BoundedString<255>,
6159                    D,
6160                    val_ref,
6161                    decoder,
6162                    inner_offset,
6163                    inner_depth
6164                )?;
6165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6166                {
6167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6168                }
6169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6171                }
6172            }
6173
6174            next_offset += envelope_size;
6175            _next_ordinal_to_read += 1;
6176            if next_offset >= end_offset {
6177                return Ok(());
6178            }
6179
6180            // Decode unknown envelopes for gaps in ordinals.
6181            while _next_ordinal_to_read < 2 {
6182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6183                _next_ordinal_to_read += 1;
6184                next_offset += envelope_size;
6185            }
6186
6187            let next_out_of_line = decoder.next_out_of_line();
6188            let handles_before = decoder.remaining_handles();
6189            if let Some((inlined, num_bytes, num_handles)) =
6190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6191            {
6192                let member_inline_size =
6193                    <AllowlistedDebugRegistration as fidl::encoding::TypeMarker>::inline_size(
6194                        decoder.context,
6195                    );
6196                if inlined != (member_inline_size <= 4) {
6197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6198                }
6199                let inner_offset;
6200                let mut inner_depth = depth.clone();
6201                if inlined {
6202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6203                    inner_offset = next_offset;
6204                } else {
6205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6206                    inner_depth.increment()?;
6207                }
6208                let val_ref = self
6209                    .debug
6210                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedDebugRegistration, D));
6211                fidl::decode!(
6212                    AllowlistedDebugRegistration,
6213                    D,
6214                    val_ref,
6215                    decoder,
6216                    inner_offset,
6217                    inner_depth
6218                )?;
6219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6220                {
6221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6222                }
6223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6225                }
6226            }
6227
6228            next_offset += envelope_size;
6229            _next_ordinal_to_read += 1;
6230            if next_offset >= end_offset {
6231                return Ok(());
6232            }
6233
6234            // Decode unknown envelopes for gaps in ordinals.
6235            while _next_ordinal_to_read < 3 {
6236                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6237                _next_ordinal_to_read += 1;
6238                next_offset += envelope_size;
6239            }
6240
6241            let next_out_of_line = decoder.next_out_of_line();
6242            let handles_before = decoder.remaining_handles();
6243            if let Some((inlined, num_bytes, num_handles)) =
6244                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6245            {
6246                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6247                if inlined != (member_inline_size <= 4) {
6248                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6249                }
6250                let inner_offset;
6251                let mut inner_depth = depth.clone();
6252                if inlined {
6253                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6254                    inner_offset = next_offset;
6255                } else {
6256                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6257                    inner_depth.increment()?;
6258                }
6259                let val_ref = self.moniker.get_or_insert_with(|| {
6260                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6261                });
6262                fidl::decode!(
6263                    fidl::encoding::BoundedString<4096>,
6264                    D,
6265                    val_ref,
6266                    decoder,
6267                    inner_offset,
6268                    inner_depth
6269                )?;
6270                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6271                {
6272                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6273                }
6274                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6275                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6276                }
6277            }
6278
6279            next_offset += envelope_size;
6280            _next_ordinal_to_read += 1;
6281            if next_offset >= end_offset {
6282                return Ok(());
6283            }
6284
6285            // Decode unknown envelopes for gaps in ordinals.
6286            while _next_ordinal_to_read < 4 {
6287                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6288                _next_ordinal_to_read += 1;
6289                next_offset += envelope_size;
6290            }
6291
6292            let next_out_of_line = decoder.next_out_of_line();
6293            let handles_before = decoder.remaining_handles();
6294            if let Some((inlined, num_bytes, num_handles)) =
6295                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6296            {
6297                let member_inline_size =
6298                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6299                        decoder.context,
6300                    );
6301                if inlined != (member_inline_size <= 4) {
6302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6303                }
6304                let inner_offset;
6305                let mut inner_depth = depth.clone();
6306                if inlined {
6307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6308                    inner_offset = next_offset;
6309                } else {
6310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6311                    inner_depth.increment()?;
6312                }
6313                let val_ref = self
6314                    .environment_name
6315                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
6316                fidl::decode!(
6317                    fidl::encoding::BoundedString<255>,
6318                    D,
6319                    val_ref,
6320                    decoder,
6321                    inner_offset,
6322                    inner_depth
6323                )?;
6324                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6325                {
6326                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6327                }
6328                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6329                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6330                }
6331            }
6332
6333            next_offset += envelope_size;
6334
6335            // Decode the remaining unknown envelopes.
6336            while next_offset < end_offset {
6337                _next_ordinal_to_read += 1;
6338                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6339                next_offset += envelope_size;
6340            }
6341
6342            Ok(())
6343        }
6344    }
6345
6346    impl DebugRegistrationPolicyAllowlists {
6347        #[inline(always)]
6348        fn max_ordinal_present(&self) -> u64 {
6349            if let Some(_) = self.allowlist {
6350                return 1;
6351            }
6352            0
6353        }
6354    }
6355
6356    impl fidl::encoding::ValueTypeMarker for DebugRegistrationPolicyAllowlists {
6357        type Borrowed<'a> = &'a Self;
6358        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6359            value
6360        }
6361    }
6362
6363    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationPolicyAllowlists {
6364        type Owned = Self;
6365
6366        #[inline(always)]
6367        fn inline_align(_context: fidl::encoding::Context) -> usize {
6368            8
6369        }
6370
6371        #[inline(always)]
6372        fn inline_size(_context: fidl::encoding::Context) -> usize {
6373            16
6374        }
6375    }
6376
6377    unsafe impl<D: fidl::encoding::ResourceDialect>
6378        fidl::encoding::Encode<DebugRegistrationPolicyAllowlists, D>
6379        for &DebugRegistrationPolicyAllowlists
6380    {
6381        unsafe fn encode(
6382            self,
6383            encoder: &mut fidl::encoding::Encoder<'_, D>,
6384            offset: usize,
6385            mut depth: fidl::encoding::Depth,
6386        ) -> fidl::Result<()> {
6387            encoder.debug_check_bounds::<DebugRegistrationPolicyAllowlists>(offset);
6388            // Vector header
6389            let max_ordinal: u64 = self.max_ordinal_present();
6390            encoder.write_num(max_ordinal, offset);
6391            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6392            // Calling encoder.out_of_line_offset(0) is not allowed.
6393            if max_ordinal == 0 {
6394                return Ok(());
6395            }
6396            depth.increment()?;
6397            let envelope_size = 8;
6398            let bytes_len = max_ordinal as usize * envelope_size;
6399            #[allow(unused_variables)]
6400            let offset = encoder.out_of_line_offset(bytes_len);
6401            let mut _prev_end_offset: usize = 0;
6402            if 1 > max_ordinal {
6403                return Ok(());
6404            }
6405
6406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6407            // are envelope_size bytes.
6408            let cur_offset: usize = (1 - 1) * envelope_size;
6409
6410            // Zero reserved fields.
6411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6412
6413            // Safety:
6414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6416            //   envelope_size bytes, there is always sufficient room.
6417            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D>(
6418            self.allowlist.as_ref().map(<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6419            encoder, offset + cur_offset, depth
6420        )?;
6421
6422            _prev_end_offset = cur_offset + envelope_size;
6423
6424            Ok(())
6425        }
6426    }
6427
6428    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6429        for DebugRegistrationPolicyAllowlists
6430    {
6431        #[inline(always)]
6432        fn new_empty() -> Self {
6433            Self::default()
6434        }
6435
6436        unsafe fn decode(
6437            &mut self,
6438            decoder: &mut fidl::encoding::Decoder<'_, D>,
6439            offset: usize,
6440            mut depth: fidl::encoding::Depth,
6441        ) -> fidl::Result<()> {
6442            decoder.debug_check_bounds::<Self>(offset);
6443            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6444                None => return Err(fidl::Error::NotNullable),
6445                Some(len) => len,
6446            };
6447            // Calling decoder.out_of_line_offset(0) is not allowed.
6448            if len == 0 {
6449                return Ok(());
6450            };
6451            depth.increment()?;
6452            let envelope_size = 8;
6453            let bytes_len = len * envelope_size;
6454            let offset = decoder.out_of_line_offset(bytes_len)?;
6455            // Decode the envelope for each type.
6456            let mut _next_ordinal_to_read = 0;
6457            let mut next_offset = offset;
6458            let end_offset = offset + bytes_len;
6459            _next_ordinal_to_read += 1;
6460            if next_offset >= end_offset {
6461                return Ok(());
6462            }
6463
6464            // Decode unknown envelopes for gaps in ordinals.
6465            while _next_ordinal_to_read < 1 {
6466                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6467                _next_ordinal_to_read += 1;
6468                next_offset += envelope_size;
6469            }
6470
6471            let next_out_of_line = decoder.next_out_of_line();
6472            let handles_before = decoder.remaining_handles();
6473            if let Some((inlined, num_bytes, num_handles)) =
6474                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6475            {
6476                let member_inline_size = <fidl::encoding::Vector<
6477                    DebugRegistrationAllowlistEntry,
6478                    128,
6479                > as fidl::encoding::TypeMarker>::inline_size(
6480                    decoder.context
6481                );
6482                if inlined != (member_inline_size <= 4) {
6483                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6484                }
6485                let inner_offset;
6486                let mut inner_depth = depth.clone();
6487                if inlined {
6488                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6489                    inner_offset = next_offset;
6490                } else {
6491                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6492                    inner_depth.increment()?;
6493                }
6494                let val_ref =
6495                self.allowlist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D));
6496                fidl::decode!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
6497                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6498                {
6499                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6500                }
6501                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6502                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6503                }
6504            }
6505
6506            next_offset += envelope_size;
6507
6508            // Decode the remaining unknown envelopes.
6509            while next_offset < end_offset {
6510                _next_ordinal_to_read += 1;
6511                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6512                next_offset += envelope_size;
6513            }
6514
6515            Ok(())
6516        }
6517    }
6518
6519    impl Environment {
6520        #[inline(always)]
6521        fn max_ordinal_present(&self) -> u64 {
6522            if let Some(_) = self.moniker {
6523                return 2;
6524            }
6525            if let Some(_) = self.capability {
6526                return 1;
6527            }
6528            0
6529        }
6530    }
6531
6532    impl fidl::encoding::ValueTypeMarker for Environment {
6533        type Borrowed<'a> = &'a Self;
6534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6535            value
6536        }
6537    }
6538
6539    unsafe impl fidl::encoding::TypeMarker for Environment {
6540        type Owned = Self;
6541
6542        #[inline(always)]
6543        fn inline_align(_context: fidl::encoding::Context) -> usize {
6544            8
6545        }
6546
6547        #[inline(always)]
6548        fn inline_size(_context: fidl::encoding::Context) -> usize {
6549            16
6550        }
6551    }
6552
6553    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Environment, D>
6554        for &Environment
6555    {
6556        unsafe fn encode(
6557            self,
6558            encoder: &mut fidl::encoding::Encoder<'_, D>,
6559            offset: usize,
6560            mut depth: fidl::encoding::Depth,
6561        ) -> fidl::Result<()> {
6562            encoder.debug_check_bounds::<Environment>(offset);
6563            // Vector header
6564            let max_ordinal: u64 = self.max_ordinal_present();
6565            encoder.write_num(max_ordinal, offset);
6566            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6567            // Calling encoder.out_of_line_offset(0) is not allowed.
6568            if max_ordinal == 0 {
6569                return Ok(());
6570            }
6571            depth.increment()?;
6572            let envelope_size = 8;
6573            let bytes_len = max_ordinal as usize * envelope_size;
6574            #[allow(unused_variables)]
6575            let offset = encoder.out_of_line_offset(bytes_len);
6576            let mut _prev_end_offset: usize = 0;
6577            if 1 > max_ordinal {
6578                return Ok(());
6579            }
6580
6581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6582            // are envelope_size bytes.
6583            let cur_offset: usize = (1 - 1) * envelope_size;
6584
6585            // Zero reserved fields.
6586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6587
6588            // Safety:
6589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6591            //   envelope_size bytes, there is always sufficient room.
6592            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
6593                self.capability
6594                    .as_ref()
6595                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
6596                encoder,
6597                offset + cur_offset,
6598                depth,
6599            )?;
6600
6601            _prev_end_offset = cur_offset + envelope_size;
6602            if 2 > max_ordinal {
6603                return Ok(());
6604            }
6605
6606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6607            // are envelope_size bytes.
6608            let cur_offset: usize = (2 - 1) * envelope_size;
6609
6610            // Zero reserved fields.
6611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6612
6613            // Safety:
6614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6616            //   envelope_size bytes, there is always sufficient room.
6617            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6618            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6619            encoder, offset + cur_offset, depth
6620        )?;
6621
6622            _prev_end_offset = cur_offset + envelope_size;
6623
6624            Ok(())
6625        }
6626    }
6627
6628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Environment {
6629        #[inline(always)]
6630        fn new_empty() -> Self {
6631            Self::default()
6632        }
6633
6634        unsafe fn decode(
6635            &mut self,
6636            decoder: &mut fidl::encoding::Decoder<'_, D>,
6637            offset: usize,
6638            mut depth: fidl::encoding::Depth,
6639        ) -> fidl::Result<()> {
6640            decoder.debug_check_bounds::<Self>(offset);
6641            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6642                None => return Err(fidl::Error::NotNullable),
6643                Some(len) => len,
6644            };
6645            // Calling decoder.out_of_line_offset(0) is not allowed.
6646            if len == 0 {
6647                return Ok(());
6648            };
6649            depth.increment()?;
6650            let envelope_size = 8;
6651            let bytes_len = len * envelope_size;
6652            let offset = decoder.out_of_line_offset(bytes_len)?;
6653            // Decode the envelope for each type.
6654            let mut _next_ordinal_to_read = 0;
6655            let mut next_offset = offset;
6656            let end_offset = offset + bytes_len;
6657            _next_ordinal_to_read += 1;
6658            if next_offset >= end_offset {
6659                return Ok(());
6660            }
6661
6662            // Decode unknown envelopes for gaps in ordinals.
6663            while _next_ordinal_to_read < 1 {
6664                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6665                _next_ordinal_to_read += 1;
6666                next_offset += envelope_size;
6667            }
6668
6669            let next_out_of_line = decoder.next_out_of_line();
6670            let handles_before = decoder.remaining_handles();
6671            if let Some((inlined, num_bytes, num_handles)) =
6672                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6673            {
6674                let member_inline_size =
6675                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
6676                        decoder.context,
6677                    );
6678                if inlined != (member_inline_size <= 4) {
6679                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6680                }
6681                let inner_offset;
6682                let mut inner_depth = depth.clone();
6683                if inlined {
6684                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6685                    inner_offset = next_offset;
6686                } else {
6687                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6688                    inner_depth.increment()?;
6689                }
6690                let val_ref =
6691                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
6692                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
6693                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6694                {
6695                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6696                }
6697                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6698                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6699                }
6700            }
6701
6702            next_offset += envelope_size;
6703            _next_ordinal_to_read += 1;
6704            if next_offset >= end_offset {
6705                return Ok(());
6706            }
6707
6708            // Decode unknown envelopes for gaps in ordinals.
6709            while _next_ordinal_to_read < 2 {
6710                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6711                _next_ordinal_to_read += 1;
6712                next_offset += envelope_size;
6713            }
6714
6715            let next_out_of_line = decoder.next_out_of_line();
6716            let handles_before = decoder.remaining_handles();
6717            if let Some((inlined, num_bytes, num_handles)) =
6718                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6719            {
6720                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6721                if inlined != (member_inline_size <= 4) {
6722                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6723                }
6724                let inner_offset;
6725                let mut inner_depth = depth.clone();
6726                if inlined {
6727                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6728                    inner_offset = next_offset;
6729                } else {
6730                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6731                    inner_depth.increment()?;
6732                }
6733                let val_ref = self.moniker.get_or_insert_with(|| {
6734                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6735                });
6736                fidl::decode!(
6737                    fidl::encoding::BoundedString<4096>,
6738                    D,
6739                    val_ref,
6740                    decoder,
6741                    inner_offset,
6742                    inner_depth
6743                )?;
6744                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6745                {
6746                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6747                }
6748                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6749                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6750                }
6751            }
6752
6753            next_offset += envelope_size;
6754
6755            // Decode the remaining unknown envelopes.
6756            while next_offset < end_offset {
6757                _next_ordinal_to_read += 1;
6758                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6759                next_offset += envelope_size;
6760            }
6761
6762            Ok(())
6763        }
6764    }
6765
6766    impl EnvironmentSource {
6767        #[inline(always)]
6768        fn max_ordinal_present(&self) -> u64 {
6769            if let Some(_) = self.source {
6770                return 2;
6771            }
6772            if let Some(_) = self.source_name {
6773                return 1;
6774            }
6775            0
6776        }
6777    }
6778
6779    impl fidl::encoding::ValueTypeMarker for EnvironmentSource {
6780        type Borrowed<'a> = &'a Self;
6781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6782            value
6783        }
6784    }
6785
6786    unsafe impl fidl::encoding::TypeMarker for EnvironmentSource {
6787        type Owned = Self;
6788
6789        #[inline(always)]
6790        fn inline_align(_context: fidl::encoding::Context) -> usize {
6791            8
6792        }
6793
6794        #[inline(always)]
6795        fn inline_size(_context: fidl::encoding::Context) -> usize {
6796            16
6797        }
6798    }
6799
6800    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentSource, D>
6801        for &EnvironmentSource
6802    {
6803        unsafe fn encode(
6804            self,
6805            encoder: &mut fidl::encoding::Encoder<'_, D>,
6806            offset: usize,
6807            mut depth: fidl::encoding::Depth,
6808        ) -> fidl::Result<()> {
6809            encoder.debug_check_bounds::<EnvironmentSource>(offset);
6810            // Vector header
6811            let max_ordinal: u64 = self.max_ordinal_present();
6812            encoder.write_num(max_ordinal, offset);
6813            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6814            // Calling encoder.out_of_line_offset(0) is not allowed.
6815            if max_ordinal == 0 {
6816                return Ok(());
6817            }
6818            depth.increment()?;
6819            let envelope_size = 8;
6820            let bytes_len = max_ordinal as usize * envelope_size;
6821            #[allow(unused_variables)]
6822            let offset = encoder.out_of_line_offset(bytes_len);
6823            let mut _prev_end_offset: usize = 0;
6824            if 1 > max_ordinal {
6825                return Ok(());
6826            }
6827
6828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6829            // are envelope_size bytes.
6830            let cur_offset: usize = (1 - 1) * envelope_size;
6831
6832            // Zero reserved fields.
6833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6834
6835            // Safety:
6836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6838            //   envelope_size bytes, there is always sufficient room.
6839            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
6840            self.source_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
6841            encoder, offset + cur_offset, depth
6842        )?;
6843
6844            _prev_end_offset = cur_offset + envelope_size;
6845            if 2 > max_ordinal {
6846                return Ok(());
6847            }
6848
6849            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6850            // are envelope_size bytes.
6851            let cur_offset: usize = (2 - 1) * envelope_size;
6852
6853            // Zero reserved fields.
6854            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6855
6856            // Safety:
6857            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6858            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6859            //   envelope_size bytes, there is always sufficient room.
6860            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::Ref, D>(
6861            self.source.as_ref().map(<fidl_fuchsia_component_decl__common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
6862            encoder, offset + cur_offset, depth
6863        )?;
6864
6865            _prev_end_offset = cur_offset + envelope_size;
6866
6867            Ok(())
6868        }
6869    }
6870
6871    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentSource {
6872        #[inline(always)]
6873        fn new_empty() -> Self {
6874            Self::default()
6875        }
6876
6877        unsafe fn decode(
6878            &mut self,
6879            decoder: &mut fidl::encoding::Decoder<'_, D>,
6880            offset: usize,
6881            mut depth: fidl::encoding::Depth,
6882        ) -> fidl::Result<()> {
6883            decoder.debug_check_bounds::<Self>(offset);
6884            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6885                None => return Err(fidl::Error::NotNullable),
6886                Some(len) => len,
6887            };
6888            // Calling decoder.out_of_line_offset(0) is not allowed.
6889            if len == 0 {
6890                return Ok(());
6891            };
6892            depth.increment()?;
6893            let envelope_size = 8;
6894            let bytes_len = len * envelope_size;
6895            let offset = decoder.out_of_line_offset(bytes_len)?;
6896            // Decode the envelope for each type.
6897            let mut _next_ordinal_to_read = 0;
6898            let mut next_offset = offset;
6899            let end_offset = offset + bytes_len;
6900            _next_ordinal_to_read += 1;
6901            if next_offset >= end_offset {
6902                return Ok(());
6903            }
6904
6905            // Decode unknown envelopes for gaps in ordinals.
6906            while _next_ordinal_to_read < 1 {
6907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6908                _next_ordinal_to_read += 1;
6909                next_offset += envelope_size;
6910            }
6911
6912            let next_out_of_line = decoder.next_out_of_line();
6913            let handles_before = decoder.remaining_handles();
6914            if let Some((inlined, num_bytes, num_handles)) =
6915                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6916            {
6917                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6918                if inlined != (member_inline_size <= 4) {
6919                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6920                }
6921                let inner_offset;
6922                let mut inner_depth = depth.clone();
6923                if inlined {
6924                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6925                    inner_offset = next_offset;
6926                } else {
6927                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6928                    inner_depth.increment()?;
6929                }
6930                let val_ref = self.source_name.get_or_insert_with(|| {
6931                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6932                });
6933                fidl::decode!(
6934                    fidl::encoding::BoundedString<1024>,
6935                    D,
6936                    val_ref,
6937                    decoder,
6938                    inner_offset,
6939                    inner_depth
6940                )?;
6941                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6942                {
6943                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6944                }
6945                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6946                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6947                }
6948            }
6949
6950            next_offset += envelope_size;
6951            _next_ordinal_to_read += 1;
6952            if next_offset >= end_offset {
6953                return Ok(());
6954            }
6955
6956            // Decode unknown envelopes for gaps in ordinals.
6957            while _next_ordinal_to_read < 2 {
6958                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6959                _next_ordinal_to_read += 1;
6960                next_offset += envelope_size;
6961            }
6962
6963            let next_out_of_line = decoder.next_out_of_line();
6964            let handles_before = decoder.remaining_handles();
6965            if let Some((inlined, num_bytes, num_handles)) =
6966                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6967            {
6968                let member_inline_size = <fidl_fuchsia_component_decl__common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6969                if inlined != (member_inline_size <= 4) {
6970                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6971                }
6972                let inner_offset;
6973                let mut inner_depth = depth.clone();
6974                if inlined {
6975                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6976                    inner_offset = next_offset;
6977                } else {
6978                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6979                    inner_depth.increment()?;
6980                }
6981                let val_ref = self.source.get_or_insert_with(|| {
6982                    fidl::new_empty!(fidl_fuchsia_component_decl__common::Ref, D)
6983                });
6984                fidl::decode!(
6985                    fidl_fuchsia_component_decl__common::Ref,
6986                    D,
6987                    val_ref,
6988                    decoder,
6989                    inner_offset,
6990                    inner_depth
6991                )?;
6992                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6993                {
6994                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6995                }
6996                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6997                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6998                }
6999            }
7000
7001            next_offset += envelope_size;
7002
7003            // Decode the remaining unknown envelopes.
7004            while next_offset < end_offset {
7005                _next_ordinal_to_read += 1;
7006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7007                next_offset += envelope_size;
7008            }
7009
7010            Ok(())
7011        }
7012    }
7013
7014    impl EventStreamRouteMetadata {
7015        #[inline(always)]
7016        fn max_ordinal_present(&self) -> u64 {
7017            if let Some(_) = self.scope {
7018                return 2;
7019            }
7020            if let Some(_) = self.scope_moniker {
7021                return 1;
7022            }
7023            0
7024        }
7025    }
7026
7027    impl fidl::encoding::ValueTypeMarker for EventStreamRouteMetadata {
7028        type Borrowed<'a> = &'a Self;
7029        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7030            value
7031        }
7032    }
7033
7034    unsafe impl fidl::encoding::TypeMarker for EventStreamRouteMetadata {
7035        type Owned = Self;
7036
7037        #[inline(always)]
7038        fn inline_align(_context: fidl::encoding::Context) -> usize {
7039            8
7040        }
7041
7042        #[inline(always)]
7043        fn inline_size(_context: fidl::encoding::Context) -> usize {
7044            16
7045        }
7046    }
7047
7048    unsafe impl<D: fidl::encoding::ResourceDialect>
7049        fidl::encoding::Encode<EventStreamRouteMetadata, D> for &EventStreamRouteMetadata
7050    {
7051        unsafe fn encode(
7052            self,
7053            encoder: &mut fidl::encoding::Encoder<'_, D>,
7054            offset: usize,
7055            mut depth: fidl::encoding::Depth,
7056        ) -> fidl::Result<()> {
7057            encoder.debug_check_bounds::<EventStreamRouteMetadata>(offset);
7058            // Vector header
7059            let max_ordinal: u64 = self.max_ordinal_present();
7060            encoder.write_num(max_ordinal, offset);
7061            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7062            // Calling encoder.out_of_line_offset(0) is not allowed.
7063            if max_ordinal == 0 {
7064                return Ok(());
7065            }
7066            depth.increment()?;
7067            let envelope_size = 8;
7068            let bytes_len = max_ordinal as usize * envelope_size;
7069            #[allow(unused_variables)]
7070            let offset = encoder.out_of_line_offset(bytes_len);
7071            let mut _prev_end_offset: usize = 0;
7072            if 1 > max_ordinal {
7073                return Ok(());
7074            }
7075
7076            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7077            // are envelope_size bytes.
7078            let cur_offset: usize = (1 - 1) * envelope_size;
7079
7080            // Zero reserved fields.
7081            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7082
7083            // Safety:
7084            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7085            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7086            //   envelope_size bytes, there is always sufficient room.
7087            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7088            self.scope_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7089            encoder, offset + cur_offset, depth
7090        )?;
7091
7092            _prev_end_offset = cur_offset + envelope_size;
7093            if 2 > max_ordinal {
7094                return Ok(());
7095            }
7096
7097            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7098            // are envelope_size bytes.
7099            let cur_offset: usize = (2 - 1) * envelope_size;
7100
7101            // Zero reserved fields.
7102            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7103
7104            // Safety:
7105            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7106            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7107            //   envelope_size bytes, there is always sufficient room.
7108            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>, D>(
7109            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
7110            encoder, offset + cur_offset, depth
7111        )?;
7112
7113            _prev_end_offset = cur_offset + envelope_size;
7114
7115            Ok(())
7116        }
7117    }
7118
7119    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7120        for EventStreamRouteMetadata
7121    {
7122        #[inline(always)]
7123        fn new_empty() -> Self {
7124            Self::default()
7125        }
7126
7127        unsafe fn decode(
7128            &mut self,
7129            decoder: &mut fidl::encoding::Decoder<'_, D>,
7130            offset: usize,
7131            mut depth: fidl::encoding::Depth,
7132        ) -> fidl::Result<()> {
7133            decoder.debug_check_bounds::<Self>(offset);
7134            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7135                None => return Err(fidl::Error::NotNullable),
7136                Some(len) => len,
7137            };
7138            // Calling decoder.out_of_line_offset(0) is not allowed.
7139            if len == 0 {
7140                return Ok(());
7141            };
7142            depth.increment()?;
7143            let envelope_size = 8;
7144            let bytes_len = len * envelope_size;
7145            let offset = decoder.out_of_line_offset(bytes_len)?;
7146            // Decode the envelope for each type.
7147            let mut _next_ordinal_to_read = 0;
7148            let mut next_offset = offset;
7149            let end_offset = offset + bytes_len;
7150            _next_ordinal_to_read += 1;
7151            if next_offset >= end_offset {
7152                return Ok(());
7153            }
7154
7155            // Decode unknown envelopes for gaps in ordinals.
7156            while _next_ordinal_to_read < 1 {
7157                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7158                _next_ordinal_to_read += 1;
7159                next_offset += envelope_size;
7160            }
7161
7162            let next_out_of_line = decoder.next_out_of_line();
7163            let handles_before = decoder.remaining_handles();
7164            if let Some((inlined, num_bytes, num_handles)) =
7165                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7166            {
7167                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7168                if inlined != (member_inline_size <= 4) {
7169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7170                }
7171                let inner_offset;
7172                let mut inner_depth = depth.clone();
7173                if inlined {
7174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7175                    inner_offset = next_offset;
7176                } else {
7177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7178                    inner_depth.increment()?;
7179                }
7180                let val_ref = self.scope_moniker.get_or_insert_with(|| {
7181                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7182                });
7183                fidl::decode!(
7184                    fidl::encoding::BoundedString<4096>,
7185                    D,
7186                    val_ref,
7187                    decoder,
7188                    inner_offset,
7189                    inner_depth
7190                )?;
7191                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7192                {
7193                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7194                }
7195                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7196                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7197                }
7198            }
7199
7200            next_offset += envelope_size;
7201            _next_ordinal_to_read += 1;
7202            if next_offset >= end_offset {
7203                return Ok(());
7204            }
7205
7206            // Decode unknown envelopes for gaps in ordinals.
7207            while _next_ordinal_to_read < 2 {
7208                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7209                _next_ordinal_to_read += 1;
7210                next_offset += envelope_size;
7211            }
7212
7213            let next_out_of_line = decoder.next_out_of_line();
7214            let handles_before = decoder.remaining_handles();
7215            if let Some((inlined, num_bytes, num_handles)) =
7216                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7217            {
7218                let member_inline_size = <fidl::encoding::UnboundedVector<
7219                    fidl_fuchsia_component_decl__common::Ref,
7220                > as fidl::encoding::TypeMarker>::inline_size(
7221                    decoder.context
7222                );
7223                if inlined != (member_inline_size <= 4) {
7224                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7225                }
7226                let inner_offset;
7227                let mut inner_depth = depth.clone();
7228                if inlined {
7229                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7230                    inner_offset = next_offset;
7231                } else {
7232                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7233                    inner_depth.increment()?;
7234                }
7235                let val_ref = self.scope.get_or_insert_with(|| {
7236                    fidl::new_empty!(
7237                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
7238                        D
7239                    )
7240                });
7241                fidl::decode!(
7242                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Ref>,
7243                    D,
7244                    val_ref,
7245                    decoder,
7246                    inner_offset,
7247                    inner_depth
7248                )?;
7249                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7250                {
7251                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7252                }
7253                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7254                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7255                }
7256            }
7257
7258            next_offset += envelope_size;
7259
7260            // Decode the remaining unknown envelopes.
7261            while next_offset < end_offset {
7262                _next_ordinal_to_read += 1;
7263                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7264                next_offset += envelope_size;
7265            }
7266
7267            Ok(())
7268        }
7269    }
7270
7271    impl FilteredAggregateProvider {
7272        #[inline(always)]
7273        fn max_ordinal_present(&self) -> u64 {
7274            if let Some(_) = self.sources {
7275                return 4;
7276            }
7277            if let Some(_) = self.offer_service_decls {
7278                return 3;
7279            }
7280            if let Some(_) = self.moniker {
7281                return 2;
7282            }
7283            if let Some(_) = self.capability {
7284                return 1;
7285            }
7286            0
7287        }
7288    }
7289
7290    impl fidl::encoding::ValueTypeMarker for FilteredAggregateProvider {
7291        type Borrowed<'a> = &'a Self;
7292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7293            value
7294        }
7295    }
7296
7297    unsafe impl fidl::encoding::TypeMarker for FilteredAggregateProvider {
7298        type Owned = Self;
7299
7300        #[inline(always)]
7301        fn inline_align(_context: fidl::encoding::Context) -> usize {
7302            8
7303        }
7304
7305        #[inline(always)]
7306        fn inline_size(_context: fidl::encoding::Context) -> usize {
7307            16
7308        }
7309    }
7310
7311    unsafe impl<D: fidl::encoding::ResourceDialect>
7312        fidl::encoding::Encode<FilteredAggregateProvider, D> for &FilteredAggregateProvider
7313    {
7314        unsafe fn encode(
7315            self,
7316            encoder: &mut fidl::encoding::Encoder<'_, D>,
7317            offset: usize,
7318            mut depth: fidl::encoding::Depth,
7319        ) -> fidl::Result<()> {
7320            encoder.debug_check_bounds::<FilteredAggregateProvider>(offset);
7321            // Vector header
7322            let max_ordinal: u64 = self.max_ordinal_present();
7323            encoder.write_num(max_ordinal, offset);
7324            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7325            // Calling encoder.out_of_line_offset(0) is not allowed.
7326            if max_ordinal == 0 {
7327                return Ok(());
7328            }
7329            depth.increment()?;
7330            let envelope_size = 8;
7331            let bytes_len = max_ordinal as usize * envelope_size;
7332            #[allow(unused_variables)]
7333            let offset = encoder.out_of_line_offset(bytes_len);
7334            let mut _prev_end_offset: usize = 0;
7335            if 1 > max_ordinal {
7336                return Ok(());
7337            }
7338
7339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7340            // are envelope_size bytes.
7341            let cur_offset: usize = (1 - 1) * envelope_size;
7342
7343            // Zero reserved fields.
7344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7345
7346            // Safety:
7347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7349            //   envelope_size bytes, there is always sufficient room.
7350            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7351                self.capability
7352                    .as_ref()
7353                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7354                encoder,
7355                offset + cur_offset,
7356                depth,
7357            )?;
7358
7359            _prev_end_offset = cur_offset + envelope_size;
7360            if 2 > max_ordinal {
7361                return Ok(());
7362            }
7363
7364            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7365            // are envelope_size bytes.
7366            let cur_offset: usize = (2 - 1) * envelope_size;
7367
7368            // Zero reserved fields.
7369            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7370
7371            // Safety:
7372            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7373            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7374            //   envelope_size bytes, there is always sufficient room.
7375            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7376            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7377            encoder, offset + cur_offset, depth
7378        )?;
7379
7380            _prev_end_offset = cur_offset + envelope_size;
7381            if 3 > max_ordinal {
7382                return Ok(());
7383            }
7384
7385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7386            // are envelope_size bytes.
7387            let cur_offset: usize = (3 - 1) * envelope_size;
7388
7389            // Zero reserved fields.
7390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7391
7392            // Safety:
7393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7395            //   envelope_size bytes, there is always sufficient room.
7396            fidl::encoding::encode_in_envelope_optional::<
7397                fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::OfferService>,
7398                D,
7399            >(
7400                self.offer_service_decls.as_ref().map(
7401                    <fidl::encoding::UnboundedVector<
7402                        fidl_fuchsia_component_decl__common::OfferService,
7403                    > as fidl::encoding::ValueTypeMarker>::borrow,
7404                ),
7405                encoder,
7406                offset + cur_offset,
7407                depth,
7408            )?;
7409
7410            _prev_end_offset = cur_offset + envelope_size;
7411            if 4 > max_ordinal {
7412                return Ok(());
7413            }
7414
7415            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7416            // are envelope_size bytes.
7417            let cur_offset: usize = (4 - 1) * envelope_size;
7418
7419            // Zero reserved fields.
7420            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7421
7422            // Safety:
7423            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7424            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7425            //   envelope_size bytes, there is always sufficient room.
7426            fidl::encoding::encode_in_envelope_optional::<Sources, D>(
7427                self.sources.as_ref().map(<Sources as fidl::encoding::ValueTypeMarker>::borrow),
7428                encoder,
7429                offset + cur_offset,
7430                depth,
7431            )?;
7432
7433            _prev_end_offset = cur_offset + envelope_size;
7434
7435            Ok(())
7436        }
7437    }
7438
7439    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7440        for FilteredAggregateProvider
7441    {
7442        #[inline(always)]
7443        fn new_empty() -> Self {
7444            Self::default()
7445        }
7446
7447        unsafe fn decode(
7448            &mut self,
7449            decoder: &mut fidl::encoding::Decoder<'_, D>,
7450            offset: usize,
7451            mut depth: fidl::encoding::Depth,
7452        ) -> fidl::Result<()> {
7453            decoder.debug_check_bounds::<Self>(offset);
7454            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7455                None => return Err(fidl::Error::NotNullable),
7456                Some(len) => len,
7457            };
7458            // Calling decoder.out_of_line_offset(0) is not allowed.
7459            if len == 0 {
7460                return Ok(());
7461            };
7462            depth.increment()?;
7463            let envelope_size = 8;
7464            let bytes_len = len * envelope_size;
7465            let offset = decoder.out_of_line_offset(bytes_len)?;
7466            // Decode the envelope for each type.
7467            let mut _next_ordinal_to_read = 0;
7468            let mut next_offset = offset;
7469            let end_offset = offset + bytes_len;
7470            _next_ordinal_to_read += 1;
7471            if next_offset >= end_offset {
7472                return Ok(());
7473            }
7474
7475            // Decode unknown envelopes for gaps in ordinals.
7476            while _next_ordinal_to_read < 1 {
7477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7478                _next_ordinal_to_read += 1;
7479                next_offset += envelope_size;
7480            }
7481
7482            let next_out_of_line = decoder.next_out_of_line();
7483            let handles_before = decoder.remaining_handles();
7484            if let Some((inlined, num_bytes, num_handles)) =
7485                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7486            {
7487                let member_inline_size =
7488                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7489                        decoder.context,
7490                    );
7491                if inlined != (member_inline_size <= 4) {
7492                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7493                }
7494                let inner_offset;
7495                let mut inner_depth = depth.clone();
7496                if inlined {
7497                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7498                    inner_offset = next_offset;
7499                } else {
7500                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7501                    inner_depth.increment()?;
7502                }
7503                let val_ref =
7504                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7505                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7506                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7507                {
7508                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7509                }
7510                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7511                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7512                }
7513            }
7514
7515            next_offset += envelope_size;
7516            _next_ordinal_to_read += 1;
7517            if next_offset >= end_offset {
7518                return Ok(());
7519            }
7520
7521            // Decode unknown envelopes for gaps in ordinals.
7522            while _next_ordinal_to_read < 2 {
7523                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7524                _next_ordinal_to_read += 1;
7525                next_offset += envelope_size;
7526            }
7527
7528            let next_out_of_line = decoder.next_out_of_line();
7529            let handles_before = decoder.remaining_handles();
7530            if let Some((inlined, num_bytes, num_handles)) =
7531                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7532            {
7533                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7534                if inlined != (member_inline_size <= 4) {
7535                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7536                }
7537                let inner_offset;
7538                let mut inner_depth = depth.clone();
7539                if inlined {
7540                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7541                    inner_offset = next_offset;
7542                } else {
7543                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7544                    inner_depth.increment()?;
7545                }
7546                let val_ref = self.moniker.get_or_insert_with(|| {
7547                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7548                });
7549                fidl::decode!(
7550                    fidl::encoding::BoundedString<4096>,
7551                    D,
7552                    val_ref,
7553                    decoder,
7554                    inner_offset,
7555                    inner_depth
7556                )?;
7557                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7558                {
7559                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7560                }
7561                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7562                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7563                }
7564            }
7565
7566            next_offset += envelope_size;
7567            _next_ordinal_to_read += 1;
7568            if next_offset >= end_offset {
7569                return Ok(());
7570            }
7571
7572            // Decode unknown envelopes for gaps in ordinals.
7573            while _next_ordinal_to_read < 3 {
7574                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7575                _next_ordinal_to_read += 1;
7576                next_offset += envelope_size;
7577            }
7578
7579            let next_out_of_line = decoder.next_out_of_line();
7580            let handles_before = decoder.remaining_handles();
7581            if let Some((inlined, num_bytes, num_handles)) =
7582                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7583            {
7584                let member_inline_size = <fidl::encoding::UnboundedVector<
7585                    fidl_fuchsia_component_decl__common::OfferService,
7586                > as fidl::encoding::TypeMarker>::inline_size(
7587                    decoder.context
7588                );
7589                if inlined != (member_inline_size <= 4) {
7590                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7591                }
7592                let inner_offset;
7593                let mut inner_depth = depth.clone();
7594                if inlined {
7595                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7596                    inner_offset = next_offset;
7597                } else {
7598                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7599                    inner_depth.increment()?;
7600                }
7601                let val_ref = self.offer_service_decls.get_or_insert_with(|| {
7602                    fidl::new_empty!(
7603                        fidl::encoding::UnboundedVector<
7604                            fidl_fuchsia_component_decl__common::OfferService,
7605                        >,
7606                        D
7607                    )
7608                });
7609                fidl::decode!(
7610                    fidl::encoding::UnboundedVector<
7611                        fidl_fuchsia_component_decl__common::OfferService,
7612                    >,
7613                    D,
7614                    val_ref,
7615                    decoder,
7616                    inner_offset,
7617                    inner_depth
7618                )?;
7619                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7620                {
7621                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7622                }
7623                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7624                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7625                }
7626            }
7627
7628            next_offset += envelope_size;
7629            _next_ordinal_to_read += 1;
7630            if next_offset >= end_offset {
7631                return Ok(());
7632            }
7633
7634            // Decode unknown envelopes for gaps in ordinals.
7635            while _next_ordinal_to_read < 4 {
7636                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7637                _next_ordinal_to_read += 1;
7638                next_offset += envelope_size;
7639            }
7640
7641            let next_out_of_line = decoder.next_out_of_line();
7642            let handles_before = decoder.remaining_handles();
7643            if let Some((inlined, num_bytes, num_handles)) =
7644                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7645            {
7646                let member_inline_size =
7647                    <Sources as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7648                if inlined != (member_inline_size <= 4) {
7649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7650                }
7651                let inner_offset;
7652                let mut inner_depth = depth.clone();
7653                if inlined {
7654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7655                    inner_offset = next_offset;
7656                } else {
7657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7658                    inner_depth.increment()?;
7659                }
7660                let val_ref = self.sources.get_or_insert_with(|| fidl::new_empty!(Sources, D));
7661                fidl::decode!(Sources, D, val_ref, decoder, inner_offset, inner_depth)?;
7662                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7663                {
7664                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7665                }
7666                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7667                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7668                }
7669            }
7670
7671            next_offset += envelope_size;
7672
7673            // Decode the remaining unknown envelopes.
7674            while next_offset < end_offset {
7675                _next_ordinal_to_read += 1;
7676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7677                next_offset += envelope_size;
7678            }
7679
7680            Ok(())
7681        }
7682    }
7683
7684    impl FilteredProvider {
7685        #[inline(always)]
7686        fn max_ordinal_present(&self) -> u64 {
7687            if let Some(_) = self.offer_service_decl {
7688                return 4;
7689            }
7690            if let Some(_) = self.service_capability {
7691                return 3;
7692            }
7693            if let Some(_) = self.moniker {
7694                return 2;
7695            }
7696            if let Some(_) = self.capability {
7697                return 1;
7698            }
7699            0
7700        }
7701    }
7702
7703    impl fidl::encoding::ValueTypeMarker for FilteredProvider {
7704        type Borrowed<'a> = &'a Self;
7705        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7706            value
7707        }
7708    }
7709
7710    unsafe impl fidl::encoding::TypeMarker for FilteredProvider {
7711        type Owned = Self;
7712
7713        #[inline(always)]
7714        fn inline_align(_context: fidl::encoding::Context) -> usize {
7715            8
7716        }
7717
7718        #[inline(always)]
7719        fn inline_size(_context: fidl::encoding::Context) -> usize {
7720            16
7721        }
7722    }
7723
7724    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FilteredProvider, D>
7725        for &FilteredProvider
7726    {
7727        unsafe fn encode(
7728            self,
7729            encoder: &mut fidl::encoding::Encoder<'_, D>,
7730            offset: usize,
7731            mut depth: fidl::encoding::Depth,
7732        ) -> fidl::Result<()> {
7733            encoder.debug_check_bounds::<FilteredProvider>(offset);
7734            // Vector header
7735            let max_ordinal: u64 = self.max_ordinal_present();
7736            encoder.write_num(max_ordinal, offset);
7737            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7738            // Calling encoder.out_of_line_offset(0) is not allowed.
7739            if max_ordinal == 0 {
7740                return Ok(());
7741            }
7742            depth.increment()?;
7743            let envelope_size = 8;
7744            let bytes_len = max_ordinal as usize * envelope_size;
7745            #[allow(unused_variables)]
7746            let offset = encoder.out_of_line_offset(bytes_len);
7747            let mut _prev_end_offset: usize = 0;
7748            if 1 > max_ordinal {
7749                return Ok(());
7750            }
7751
7752            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7753            // are envelope_size bytes.
7754            let cur_offset: usize = (1 - 1) * envelope_size;
7755
7756            // Zero reserved fields.
7757            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7758
7759            // Safety:
7760            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7761            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7762            //   envelope_size bytes, there is always sufficient room.
7763            fidl::encoding::encode_in_envelope_optional::<AggregateCapability, D>(
7764                self.capability
7765                    .as_ref()
7766                    .map(<AggregateCapability as fidl::encoding::ValueTypeMarker>::borrow),
7767                encoder,
7768                offset + cur_offset,
7769                depth,
7770            )?;
7771
7772            _prev_end_offset = cur_offset + envelope_size;
7773            if 2 > max_ordinal {
7774                return Ok(());
7775            }
7776
7777            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7778            // are envelope_size bytes.
7779            let cur_offset: usize = (2 - 1) * envelope_size;
7780
7781            // Zero reserved fields.
7782            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7783
7784            // Safety:
7785            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7786            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7787            //   envelope_size bytes, there is always sufficient room.
7788            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
7789            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7790            encoder, offset + cur_offset, depth
7791        )?;
7792
7793            _prev_end_offset = cur_offset + envelope_size;
7794            if 3 > max_ordinal {
7795                return Ok(());
7796            }
7797
7798            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7799            // are envelope_size bytes.
7800            let cur_offset: usize = (3 - 1) * envelope_size;
7801
7802            // Zero reserved fields.
7803            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7804
7805            // Safety:
7806            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7807            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7808            //   envelope_size bytes, there is always sufficient room.
7809            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
7810                self.service_capability
7811                    .as_ref()
7812                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
7813                encoder,
7814                offset + cur_offset,
7815                depth,
7816            )?;
7817
7818            _prev_end_offset = cur_offset + envelope_size;
7819            if 4 > max_ordinal {
7820                return Ok(());
7821            }
7822
7823            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7824            // are envelope_size bytes.
7825            let cur_offset: usize = (4 - 1) * envelope_size;
7826
7827            // Zero reserved fields.
7828            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7829
7830            // Safety:
7831            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7832            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7833            //   envelope_size bytes, there is always sufficient room.
7834            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl__common::OfferService, D>(
7835            self.offer_service_decl.as_ref().map(<fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::ValueTypeMarker>::borrow),
7836            encoder, offset + cur_offset, depth
7837        )?;
7838
7839            _prev_end_offset = cur_offset + envelope_size;
7840
7841            Ok(())
7842        }
7843    }
7844
7845    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilteredProvider {
7846        #[inline(always)]
7847        fn new_empty() -> Self {
7848            Self::default()
7849        }
7850
7851        unsafe fn decode(
7852            &mut self,
7853            decoder: &mut fidl::encoding::Decoder<'_, D>,
7854            offset: usize,
7855            mut depth: fidl::encoding::Depth,
7856        ) -> fidl::Result<()> {
7857            decoder.debug_check_bounds::<Self>(offset);
7858            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7859                None => return Err(fidl::Error::NotNullable),
7860                Some(len) => len,
7861            };
7862            // Calling decoder.out_of_line_offset(0) is not allowed.
7863            if len == 0 {
7864                return Ok(());
7865            };
7866            depth.increment()?;
7867            let envelope_size = 8;
7868            let bytes_len = len * envelope_size;
7869            let offset = decoder.out_of_line_offset(bytes_len)?;
7870            // Decode the envelope for each type.
7871            let mut _next_ordinal_to_read = 0;
7872            let mut next_offset = offset;
7873            let end_offset = offset + bytes_len;
7874            _next_ordinal_to_read += 1;
7875            if next_offset >= end_offset {
7876                return Ok(());
7877            }
7878
7879            // Decode unknown envelopes for gaps in ordinals.
7880            while _next_ordinal_to_read < 1 {
7881                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7882                _next_ordinal_to_read += 1;
7883                next_offset += envelope_size;
7884            }
7885
7886            let next_out_of_line = decoder.next_out_of_line();
7887            let handles_before = decoder.remaining_handles();
7888            if let Some((inlined, num_bytes, num_handles)) =
7889                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7890            {
7891                let member_inline_size =
7892                    <AggregateCapability as fidl::encoding::TypeMarker>::inline_size(
7893                        decoder.context,
7894                    );
7895                if inlined != (member_inline_size <= 4) {
7896                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7897                }
7898                let inner_offset;
7899                let mut inner_depth = depth.clone();
7900                if inlined {
7901                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7902                    inner_offset = next_offset;
7903                } else {
7904                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7905                    inner_depth.increment()?;
7906                }
7907                let val_ref =
7908                    self.capability.get_or_insert_with(|| fidl::new_empty!(AggregateCapability, D));
7909                fidl::decode!(AggregateCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
7910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7911                {
7912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7913                }
7914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7916                }
7917            }
7918
7919            next_offset += envelope_size;
7920            _next_ordinal_to_read += 1;
7921            if next_offset >= end_offset {
7922                return Ok(());
7923            }
7924
7925            // Decode unknown envelopes for gaps in ordinals.
7926            while _next_ordinal_to_read < 2 {
7927                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7928                _next_ordinal_to_read += 1;
7929                next_offset += envelope_size;
7930            }
7931
7932            let next_out_of_line = decoder.next_out_of_line();
7933            let handles_before = decoder.remaining_handles();
7934            if let Some((inlined, num_bytes, num_handles)) =
7935                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7936            {
7937                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7938                if inlined != (member_inline_size <= 4) {
7939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7940                }
7941                let inner_offset;
7942                let mut inner_depth = depth.clone();
7943                if inlined {
7944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7945                    inner_offset = next_offset;
7946                } else {
7947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7948                    inner_depth.increment()?;
7949                }
7950                let val_ref = self.moniker.get_or_insert_with(|| {
7951                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7952                });
7953                fidl::decode!(
7954                    fidl::encoding::BoundedString<4096>,
7955                    D,
7956                    val_ref,
7957                    decoder,
7958                    inner_offset,
7959                    inner_depth
7960                )?;
7961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7962                {
7963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7964                }
7965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7967                }
7968            }
7969
7970            next_offset += envelope_size;
7971            _next_ordinal_to_read += 1;
7972            if next_offset >= end_offset {
7973                return Ok(());
7974            }
7975
7976            // Decode unknown envelopes for gaps in ordinals.
7977            while _next_ordinal_to_read < 3 {
7978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7979                _next_ordinal_to_read += 1;
7980                next_offset += envelope_size;
7981            }
7982
7983            let next_out_of_line = decoder.next_out_of_line();
7984            let handles_before = decoder.remaining_handles();
7985            if let Some((inlined, num_bytes, num_handles)) =
7986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7987            {
7988                let member_inline_size =
7989                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
7990                        decoder.context,
7991                    );
7992                if inlined != (member_inline_size <= 4) {
7993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7994                }
7995                let inner_offset;
7996                let mut inner_depth = depth.clone();
7997                if inlined {
7998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7999                    inner_offset = next_offset;
8000                } else {
8001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8002                    inner_depth.increment()?;
8003                }
8004                let val_ref = self
8005                    .service_capability
8006                    .get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
8007                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
8008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8009                {
8010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8011                }
8012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8014                }
8015            }
8016
8017            next_offset += envelope_size;
8018            _next_ordinal_to_read += 1;
8019            if next_offset >= end_offset {
8020                return Ok(());
8021            }
8022
8023            // Decode unknown envelopes for gaps in ordinals.
8024            while _next_ordinal_to_read < 4 {
8025                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8026                _next_ordinal_to_read += 1;
8027                next_offset += envelope_size;
8028            }
8029
8030            let next_out_of_line = decoder.next_out_of_line();
8031            let handles_before = decoder.remaining_handles();
8032            if let Some((inlined, num_bytes, num_handles)) =
8033                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8034            {
8035                let member_inline_size = <fidl_fuchsia_component_decl__common::OfferService as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8036                if inlined != (member_inline_size <= 4) {
8037                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8038                }
8039                let inner_offset;
8040                let mut inner_depth = depth.clone();
8041                if inlined {
8042                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8043                    inner_offset = next_offset;
8044                } else {
8045                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8046                    inner_depth.increment()?;
8047                }
8048                let val_ref = self.offer_service_decl.get_or_insert_with(|| {
8049                    fidl::new_empty!(fidl_fuchsia_component_decl__common::OfferService, D)
8050                });
8051                fidl::decode!(
8052                    fidl_fuchsia_component_decl__common::OfferService,
8053                    D,
8054                    val_ref,
8055                    decoder,
8056                    inner_offset,
8057                    inner_depth
8058                )?;
8059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8060                {
8061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8062                }
8063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8065                }
8066            }
8067
8068            next_offset += envelope_size;
8069
8070            // Decode the remaining unknown envelopes.
8071            while next_offset < end_offset {
8072                _next_ordinal_to_read += 1;
8073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8074                next_offset += envelope_size;
8075            }
8076
8077            Ok(())
8078        }
8079    }
8080
8081    impl Framework {
8082        #[inline(always)]
8083        fn max_ordinal_present(&self) -> u64 {
8084            if let Some(_) = self.moniker {
8085                return 2;
8086            }
8087            if let Some(_) = self.capability {
8088                return 1;
8089            }
8090            0
8091        }
8092    }
8093
8094    impl fidl::encoding::ValueTypeMarker for Framework {
8095        type Borrowed<'a> = &'a Self;
8096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8097            value
8098        }
8099    }
8100
8101    unsafe impl fidl::encoding::TypeMarker for Framework {
8102        type Owned = Self;
8103
8104        #[inline(always)]
8105        fn inline_align(_context: fidl::encoding::Context) -> usize {
8106            8
8107        }
8108
8109        #[inline(always)]
8110        fn inline_size(_context: fidl::encoding::Context) -> usize {
8111            16
8112        }
8113    }
8114
8115    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Framework, D>
8116        for &Framework
8117    {
8118        unsafe fn encode(
8119            self,
8120            encoder: &mut fidl::encoding::Encoder<'_, D>,
8121            offset: usize,
8122            mut depth: fidl::encoding::Depth,
8123        ) -> fidl::Result<()> {
8124            encoder.debug_check_bounds::<Framework>(offset);
8125            // Vector header
8126            let max_ordinal: u64 = self.max_ordinal_present();
8127            encoder.write_num(max_ordinal, offset);
8128            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8129            // Calling encoder.out_of_line_offset(0) is not allowed.
8130            if max_ordinal == 0 {
8131                return Ok(());
8132            }
8133            depth.increment()?;
8134            let envelope_size = 8;
8135            let bytes_len = max_ordinal as usize * envelope_size;
8136            #[allow(unused_variables)]
8137            let offset = encoder.out_of_line_offset(bytes_len);
8138            let mut _prev_end_offset: usize = 0;
8139            if 1 > max_ordinal {
8140                return Ok(());
8141            }
8142
8143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8144            // are envelope_size bytes.
8145            let cur_offset: usize = (1 - 1) * envelope_size;
8146
8147            // Zero reserved fields.
8148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8149
8150            // Safety:
8151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8153            //   envelope_size bytes, there is always sufficient room.
8154            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
8155                self.capability
8156                    .as_ref()
8157                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
8158                encoder,
8159                offset + cur_offset,
8160                depth,
8161            )?;
8162
8163            _prev_end_offset = cur_offset + envelope_size;
8164            if 2 > max_ordinal {
8165                return Ok(());
8166            }
8167
8168            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8169            // are envelope_size bytes.
8170            let cur_offset: usize = (2 - 1) * envelope_size;
8171
8172            // Zero reserved fields.
8173            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8174
8175            // Safety:
8176            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8177            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8178            //   envelope_size bytes, there is always sufficient room.
8179            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
8180            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
8181            encoder, offset + cur_offset, depth
8182        )?;
8183
8184            _prev_end_offset = cur_offset + envelope_size;
8185
8186            Ok(())
8187        }
8188    }
8189
8190    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Framework {
8191        #[inline(always)]
8192        fn new_empty() -> Self {
8193            Self::default()
8194        }
8195
8196        unsafe fn decode(
8197            &mut self,
8198            decoder: &mut fidl::encoding::Decoder<'_, D>,
8199            offset: usize,
8200            mut depth: fidl::encoding::Depth,
8201        ) -> fidl::Result<()> {
8202            decoder.debug_check_bounds::<Self>(offset);
8203            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8204                None => return Err(fidl::Error::NotNullable),
8205                Some(len) => len,
8206            };
8207            // Calling decoder.out_of_line_offset(0) is not allowed.
8208            if len == 0 {
8209                return Ok(());
8210            };
8211            depth.increment()?;
8212            let envelope_size = 8;
8213            let bytes_len = len * envelope_size;
8214            let offset = decoder.out_of_line_offset(bytes_len)?;
8215            // Decode the envelope for each type.
8216            let mut _next_ordinal_to_read = 0;
8217            let mut next_offset = offset;
8218            let end_offset = offset + bytes_len;
8219            _next_ordinal_to_read += 1;
8220            if next_offset >= end_offset {
8221                return Ok(());
8222            }
8223
8224            // Decode unknown envelopes for gaps in ordinals.
8225            while _next_ordinal_to_read < 1 {
8226                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8227                _next_ordinal_to_read += 1;
8228                next_offset += envelope_size;
8229            }
8230
8231            let next_out_of_line = decoder.next_out_of_line();
8232            let handles_before = decoder.remaining_handles();
8233            if let Some((inlined, num_bytes, num_handles)) =
8234                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8235            {
8236                let member_inline_size =
8237                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
8238                        decoder.context,
8239                    );
8240                if inlined != (member_inline_size <= 4) {
8241                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8242                }
8243                let inner_offset;
8244                let mut inner_depth = depth.clone();
8245                if inlined {
8246                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8247                    inner_offset = next_offset;
8248                } else {
8249                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8250                    inner_depth.increment()?;
8251                }
8252                let val_ref =
8253                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
8254                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
8255                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8256                {
8257                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8258                }
8259                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8260                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8261                }
8262            }
8263
8264            next_offset += envelope_size;
8265            _next_ordinal_to_read += 1;
8266            if next_offset >= end_offset {
8267                return Ok(());
8268            }
8269
8270            // Decode unknown envelopes for gaps in ordinals.
8271            while _next_ordinal_to_read < 2 {
8272                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8273                _next_ordinal_to_read += 1;
8274                next_offset += envelope_size;
8275            }
8276
8277            let next_out_of_line = decoder.next_out_of_line();
8278            let handles_before = decoder.remaining_handles();
8279            if let Some((inlined, num_bytes, num_handles)) =
8280                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8281            {
8282                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8283                if inlined != (member_inline_size <= 4) {
8284                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8285                }
8286                let inner_offset;
8287                let mut inner_depth = depth.clone();
8288                if inlined {
8289                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8290                    inner_offset = next_offset;
8291                } else {
8292                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8293                    inner_depth.increment()?;
8294                }
8295                let val_ref = self.moniker.get_or_insert_with(|| {
8296                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
8297                });
8298                fidl::decode!(
8299                    fidl::encoding::BoundedString<4096>,
8300                    D,
8301                    val_ref,
8302                    decoder,
8303                    inner_offset,
8304                    inner_depth
8305                )?;
8306                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8307                {
8308                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8309                }
8310                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8311                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8312                }
8313            }
8314
8315            next_offset += envelope_size;
8316
8317            // Decode the remaining unknown envelopes.
8318            while next_offset < end_offset {
8319                _next_ordinal_to_read += 1;
8320                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8321                next_offset += envelope_size;
8322            }
8323
8324            Ok(())
8325        }
8326    }
8327
8328    impl HealthCheck {
8329        #[inline(always)]
8330        fn max_ordinal_present(&self) -> u64 {
8331            if let Some(_) = self.monikers {
8332                return 1;
8333            }
8334            0
8335        }
8336    }
8337
8338    impl fidl::encoding::ValueTypeMarker for HealthCheck {
8339        type Borrowed<'a> = &'a Self;
8340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8341            value
8342        }
8343    }
8344
8345    unsafe impl fidl::encoding::TypeMarker for HealthCheck {
8346        type Owned = Self;
8347
8348        #[inline(always)]
8349        fn inline_align(_context: fidl::encoding::Context) -> usize {
8350            8
8351        }
8352
8353        #[inline(always)]
8354        fn inline_size(_context: fidl::encoding::Context) -> usize {
8355            16
8356        }
8357    }
8358
8359    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheck, D>
8360        for &HealthCheck
8361    {
8362        unsafe fn encode(
8363            self,
8364            encoder: &mut fidl::encoding::Encoder<'_, D>,
8365            offset: usize,
8366            mut depth: fidl::encoding::Depth,
8367        ) -> fidl::Result<()> {
8368            encoder.debug_check_bounds::<HealthCheck>(offset);
8369            // Vector header
8370            let max_ordinal: u64 = self.max_ordinal_present();
8371            encoder.write_num(max_ordinal, offset);
8372            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8373            // Calling encoder.out_of_line_offset(0) is not allowed.
8374            if max_ordinal == 0 {
8375                return Ok(());
8376            }
8377            depth.increment()?;
8378            let envelope_size = 8;
8379            let bytes_len = max_ordinal as usize * envelope_size;
8380            #[allow(unused_variables)]
8381            let offset = encoder.out_of_line_offset(bytes_len);
8382            let mut _prev_end_offset: usize = 0;
8383            if 1 > max_ordinal {
8384                return Ok(());
8385            }
8386
8387            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8388            // are envelope_size bytes.
8389            let cur_offset: usize = (1 - 1) * envelope_size;
8390
8391            // Zero reserved fields.
8392            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8393
8394            // Safety:
8395            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8396            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8397            //   envelope_size bytes, there is always sufficient room.
8398            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, D>(
8399            self.monikers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
8400            encoder, offset + cur_offset, depth
8401        )?;
8402
8403            _prev_end_offset = cur_offset + envelope_size;
8404
8405            Ok(())
8406        }
8407    }
8408
8409    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheck {
8410        #[inline(always)]
8411        fn new_empty() -> Self {
8412            Self::default()
8413        }
8414
8415        unsafe fn decode(
8416            &mut self,
8417            decoder: &mut fidl::encoding::Decoder<'_, D>,
8418            offset: usize,
8419            mut depth: fidl::encoding::Depth,
8420        ) -> fidl::Result<()> {
8421            decoder.debug_check_bounds::<Self>(offset);
8422            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8423                None => return Err(fidl::Error::NotNullable),
8424                Some(len) => len,
8425            };
8426            // Calling decoder.out_of_line_offset(0) is not allowed.
8427            if len == 0 {
8428                return Ok(());
8429            };
8430            depth.increment()?;
8431            let envelope_size = 8;
8432            let bytes_len = len * envelope_size;
8433            let offset = decoder.out_of_line_offset(bytes_len)?;
8434            // Decode the envelope for each type.
8435            let mut _next_ordinal_to_read = 0;
8436            let mut next_offset = offset;
8437            let end_offset = offset + bytes_len;
8438            _next_ordinal_to_read += 1;
8439            if next_offset >= end_offset {
8440                return Ok(());
8441            }
8442
8443            // Decode unknown envelopes for gaps in ordinals.
8444            while _next_ordinal_to_read < 1 {
8445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8446                _next_ordinal_to_read += 1;
8447                next_offset += envelope_size;
8448            }
8449
8450            let next_out_of_line = decoder.next_out_of_line();
8451            let handles_before = decoder.remaining_handles();
8452            if let Some((inlined, num_bytes, num_handles)) =
8453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8454            {
8455                let member_inline_size = <fidl::encoding::UnboundedVector<
8456                    fidl::encoding::BoundedString<255>,
8457                > as fidl::encoding::TypeMarker>::inline_size(
8458                    decoder.context
8459                );
8460                if inlined != (member_inline_size <= 4) {
8461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8462                }
8463                let inner_offset;
8464                let mut inner_depth = depth.clone();
8465                if inlined {
8466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8467                    inner_offset = next_offset;
8468                } else {
8469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8470                    inner_depth.increment()?;
8471                }
8472                let val_ref = self.monikers.get_or_insert_with(|| {
8473                    fidl::new_empty!(
8474                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8475                        D
8476                    )
8477                });
8478                fidl::decode!(
8479                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
8480                    D,
8481                    val_ref,
8482                    decoder,
8483                    inner_offset,
8484                    inner_depth
8485                )?;
8486                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8487                {
8488                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8489                }
8490                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8491                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8492                }
8493            }
8494
8495            next_offset += envelope_size;
8496
8497            // Decode the remaining unknown envelopes.
8498            while next_offset < end_offset {
8499                _next_ordinal_to_read += 1;
8500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8501                next_offset += envelope_size;
8502            }
8503
8504            Ok(())
8505        }
8506    }
8507
8508    impl InjectedCapabilities {
8509        #[inline(always)]
8510        fn max_ordinal_present(&self) -> u64 {
8511            if let Some(_) = self.use_ {
8512                return 2;
8513            }
8514            if let Some(_) = self.components {
8515                return 1;
8516            }
8517            0
8518        }
8519    }
8520
8521    impl fidl::encoding::ValueTypeMarker for InjectedCapabilities {
8522        type Borrowed<'a> = &'a Self;
8523        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8524            value
8525        }
8526    }
8527
8528    unsafe impl fidl::encoding::TypeMarker for InjectedCapabilities {
8529        type Owned = Self;
8530
8531        #[inline(always)]
8532        fn inline_align(_context: fidl::encoding::Context) -> usize {
8533            8
8534        }
8535
8536        #[inline(always)]
8537        fn inline_size(_context: fidl::encoding::Context) -> usize {
8538            16
8539        }
8540    }
8541
8542    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedCapabilities, D>
8543        for &InjectedCapabilities
8544    {
8545        unsafe fn encode(
8546            self,
8547            encoder: &mut fidl::encoding::Encoder<'_, D>,
8548            offset: usize,
8549            mut depth: fidl::encoding::Depth,
8550        ) -> fidl::Result<()> {
8551            encoder.debug_check_bounds::<InjectedCapabilities>(offset);
8552            // Vector header
8553            let max_ordinal: u64 = self.max_ordinal_present();
8554            encoder.write_num(max_ordinal, offset);
8555            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8556            // Calling encoder.out_of_line_offset(0) is not allowed.
8557            if max_ordinal == 0 {
8558                return Ok(());
8559            }
8560            depth.increment()?;
8561            let envelope_size = 8;
8562            let bytes_len = max_ordinal as usize * envelope_size;
8563            #[allow(unused_variables)]
8564            let offset = encoder.out_of_line_offset(bytes_len);
8565            let mut _prev_end_offset: usize = 0;
8566            if 1 > max_ordinal {
8567                return Ok(());
8568            }
8569
8570            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8571            // are envelope_size bytes.
8572            let cur_offset: usize = (1 - 1) * envelope_size;
8573
8574            // Zero reserved fields.
8575            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8576
8577            // Safety:
8578            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8579            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8580            //   envelope_size bytes, there is always sufficient room.
8581            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
8582            self.components.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8583            encoder, offset + cur_offset, depth
8584        )?;
8585
8586            _prev_end_offset = cur_offset + envelope_size;
8587            if 2 > max_ordinal {
8588                return Ok(());
8589            }
8590
8591            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8592            // are envelope_size bytes.
8593            let cur_offset: usize = (2 - 1) * envelope_size;
8594
8595            // Zero reserved fields.
8596            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8597
8598            // Safety:
8599            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8600            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8601            //   envelope_size bytes, there is always sufficient room.
8602            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedUse>, D>(
8603            self.use_.as_ref().map(<fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::ValueTypeMarker>::borrow),
8604            encoder, offset + cur_offset, depth
8605        )?;
8606
8607            _prev_end_offset = cur_offset + envelope_size;
8608
8609            Ok(())
8610        }
8611    }
8612
8613    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedCapabilities {
8614        #[inline(always)]
8615        fn new_empty() -> Self {
8616            Self::default()
8617        }
8618
8619        unsafe fn decode(
8620            &mut self,
8621            decoder: &mut fidl::encoding::Decoder<'_, D>,
8622            offset: usize,
8623            mut depth: fidl::encoding::Depth,
8624        ) -> fidl::Result<()> {
8625            decoder.debug_check_bounds::<Self>(offset);
8626            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8627                None => return Err(fidl::Error::NotNullable),
8628                Some(len) => len,
8629            };
8630            // Calling decoder.out_of_line_offset(0) is not allowed.
8631            if len == 0 {
8632                return Ok(());
8633            };
8634            depth.increment()?;
8635            let envelope_size = 8;
8636            let bytes_len = len * envelope_size;
8637            let offset = decoder.out_of_line_offset(bytes_len)?;
8638            // Decode the envelope for each type.
8639            let mut _next_ordinal_to_read = 0;
8640            let mut next_offset = offset;
8641            let end_offset = offset + bytes_len;
8642            _next_ordinal_to_read += 1;
8643            if next_offset >= end_offset {
8644                return Ok(());
8645            }
8646
8647            // Decode unknown envelopes for gaps in ordinals.
8648            while _next_ordinal_to_read < 1 {
8649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8650                _next_ordinal_to_read += 1;
8651                next_offset += envelope_size;
8652            }
8653
8654            let next_out_of_line = decoder.next_out_of_line();
8655            let handles_before = decoder.remaining_handles();
8656            if let Some((inlined, num_bytes, num_handles)) =
8657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8658            {
8659                let member_inline_size = <fidl::encoding::Vector<
8660                    fidl::encoding::BoundedString<4096>,
8661                    128,
8662                > as fidl::encoding::TypeMarker>::inline_size(
8663                    decoder.context
8664                );
8665                if inlined != (member_inline_size <= 4) {
8666                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8667                }
8668                let inner_offset;
8669                let mut inner_depth = depth.clone();
8670                if inlined {
8671                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8672                    inner_offset = next_offset;
8673                } else {
8674                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8675                    inner_depth.increment()?;
8676                }
8677                let val_ref = self.components.get_or_insert_with(|| {
8678                    fidl::new_empty!(
8679                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8680                        D
8681                    )
8682                });
8683                fidl::decode!(
8684                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
8685                    D,
8686                    val_ref,
8687                    decoder,
8688                    inner_offset,
8689                    inner_depth
8690                )?;
8691                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8692                {
8693                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8694                }
8695                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8696                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8697                }
8698            }
8699
8700            next_offset += envelope_size;
8701            _next_ordinal_to_read += 1;
8702            if next_offset >= end_offset {
8703                return Ok(());
8704            }
8705
8706            // Decode unknown envelopes for gaps in ordinals.
8707            while _next_ordinal_to_read < 2 {
8708                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8709                _next_ordinal_to_read += 1;
8710                next_offset += envelope_size;
8711            }
8712
8713            let next_out_of_line = decoder.next_out_of_line();
8714            let handles_before = decoder.remaining_handles();
8715            if let Some((inlined, num_bytes, num_handles)) =
8716                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8717            {
8718                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8719                if inlined != (member_inline_size <= 4) {
8720                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8721                }
8722                let inner_offset;
8723                let mut inner_depth = depth.clone();
8724                if inlined {
8725                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8726                    inner_offset = next_offset;
8727                } else {
8728                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8729                    inner_depth.increment()?;
8730                }
8731                let val_ref = self.use_.get_or_insert_with(|| {
8732                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedUse>, D)
8733                });
8734                fidl::decode!(
8735                    fidl::encoding::UnboundedVector<InjectedUse>,
8736                    D,
8737                    val_ref,
8738                    decoder,
8739                    inner_offset,
8740                    inner_depth
8741                )?;
8742                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8743                {
8744                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8745                }
8746                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8747                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8748                }
8749            }
8750
8751            next_offset += envelope_size;
8752
8753            // Decode the remaining unknown envelopes.
8754            while next_offset < end_offset {
8755                _next_ordinal_to_read += 1;
8756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8757                next_offset += envelope_size;
8758            }
8759
8760            Ok(())
8761        }
8762    }
8763
8764    impl InjectedUseProtocol {
8765        #[inline(always)]
8766        fn max_ordinal_present(&self) -> u64 {
8767            if let Some(_) = self.target_path {
8768                return 2;
8769            }
8770            if let Some(_) = self.source_name {
8771                return 1;
8772            }
8773            0
8774        }
8775    }
8776
8777    impl fidl::encoding::ValueTypeMarker for InjectedUseProtocol {
8778        type Borrowed<'a> = &'a Self;
8779        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8780            value
8781        }
8782    }
8783
8784    unsafe impl fidl::encoding::TypeMarker for InjectedUseProtocol {
8785        type Owned = Self;
8786
8787        #[inline(always)]
8788        fn inline_align(_context: fidl::encoding::Context) -> usize {
8789            8
8790        }
8791
8792        #[inline(always)]
8793        fn inline_size(_context: fidl::encoding::Context) -> usize {
8794            16
8795        }
8796    }
8797
8798    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUseProtocol, D>
8799        for &InjectedUseProtocol
8800    {
8801        unsafe fn encode(
8802            self,
8803            encoder: &mut fidl::encoding::Encoder<'_, D>,
8804            offset: usize,
8805            mut depth: fidl::encoding::Depth,
8806        ) -> fidl::Result<()> {
8807            encoder.debug_check_bounds::<InjectedUseProtocol>(offset);
8808            // Vector header
8809            let max_ordinal: u64 = self.max_ordinal_present();
8810            encoder.write_num(max_ordinal, offset);
8811            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8812            // Calling encoder.out_of_line_offset(0) is not allowed.
8813            if max_ordinal == 0 {
8814                return Ok(());
8815            }
8816            depth.increment()?;
8817            let envelope_size = 8;
8818            let bytes_len = max_ordinal as usize * envelope_size;
8819            #[allow(unused_variables)]
8820            let offset = encoder.out_of_line_offset(bytes_len);
8821            let mut _prev_end_offset: usize = 0;
8822            if 1 > max_ordinal {
8823                return Ok(());
8824            }
8825
8826            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8827            // are envelope_size bytes.
8828            let cur_offset: usize = (1 - 1) * envelope_size;
8829
8830            // Zero reserved fields.
8831            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8832
8833            // Safety:
8834            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8835            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8836            //   envelope_size bytes, there is always sufficient room.
8837            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
8838                self.source_name.as_ref().map(
8839                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
8840                ),
8841                encoder,
8842                offset + cur_offset,
8843                depth,
8844            )?;
8845
8846            _prev_end_offset = cur_offset + envelope_size;
8847            if 2 > max_ordinal {
8848                return Ok(());
8849            }
8850
8851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8852            // are envelope_size bytes.
8853            let cur_offset: usize = (2 - 1) * envelope_size;
8854
8855            // Zero reserved fields.
8856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8857
8858            // Safety:
8859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8861            //   envelope_size bytes, there is always sufficient room.
8862            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
8863            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
8864            encoder, offset + cur_offset, depth
8865        )?;
8866
8867            _prev_end_offset = cur_offset + envelope_size;
8868
8869            Ok(())
8870        }
8871    }
8872
8873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUseProtocol {
8874        #[inline(always)]
8875        fn new_empty() -> Self {
8876            Self::default()
8877        }
8878
8879        unsafe fn decode(
8880            &mut self,
8881            decoder: &mut fidl::encoding::Decoder<'_, D>,
8882            offset: usize,
8883            mut depth: fidl::encoding::Depth,
8884        ) -> fidl::Result<()> {
8885            decoder.debug_check_bounds::<Self>(offset);
8886            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8887                None => return Err(fidl::Error::NotNullable),
8888                Some(len) => len,
8889            };
8890            // Calling decoder.out_of_line_offset(0) is not allowed.
8891            if len == 0 {
8892                return Ok(());
8893            };
8894            depth.increment()?;
8895            let envelope_size = 8;
8896            let bytes_len = len * envelope_size;
8897            let offset = decoder.out_of_line_offset(bytes_len)?;
8898            // Decode the envelope for each type.
8899            let mut _next_ordinal_to_read = 0;
8900            let mut next_offset = offset;
8901            let end_offset = offset + bytes_len;
8902            _next_ordinal_to_read += 1;
8903            if next_offset >= end_offset {
8904                return Ok(());
8905            }
8906
8907            // Decode unknown envelopes for gaps in ordinals.
8908            while _next_ordinal_to_read < 1 {
8909                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8910                _next_ordinal_to_read += 1;
8911                next_offset += envelope_size;
8912            }
8913
8914            let next_out_of_line = decoder.next_out_of_line();
8915            let handles_before = decoder.remaining_handles();
8916            if let Some((inlined, num_bytes, num_handles)) =
8917                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8918            {
8919                let member_inline_size =
8920                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
8921                        decoder.context,
8922                    );
8923                if inlined != (member_inline_size <= 4) {
8924                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8925                }
8926                let inner_offset;
8927                let mut inner_depth = depth.clone();
8928                if inlined {
8929                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8930                    inner_offset = next_offset;
8931                } else {
8932                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8933                    inner_depth.increment()?;
8934                }
8935                let val_ref = self
8936                    .source_name
8937                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
8938                fidl::decode!(
8939                    fidl::encoding::BoundedString<100>,
8940                    D,
8941                    val_ref,
8942                    decoder,
8943                    inner_offset,
8944                    inner_depth
8945                )?;
8946                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8947                {
8948                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8949                }
8950                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8951                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8952                }
8953            }
8954
8955            next_offset += envelope_size;
8956            _next_ordinal_to_read += 1;
8957            if next_offset >= end_offset {
8958                return Ok(());
8959            }
8960
8961            // Decode unknown envelopes for gaps in ordinals.
8962            while _next_ordinal_to_read < 2 {
8963                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8964                _next_ordinal_to_read += 1;
8965                next_offset += envelope_size;
8966            }
8967
8968            let next_out_of_line = decoder.next_out_of_line();
8969            let handles_before = decoder.remaining_handles();
8970            if let Some((inlined, num_bytes, num_handles)) =
8971                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8972            {
8973                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8974                if inlined != (member_inline_size <= 4) {
8975                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8976                }
8977                let inner_offset;
8978                let mut inner_depth = depth.clone();
8979                if inlined {
8980                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8981                    inner_offset = next_offset;
8982                } else {
8983                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8984                    inner_depth.increment()?;
8985                }
8986                let val_ref = self.target_path.get_or_insert_with(|| {
8987                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
8988                });
8989                fidl::decode!(
8990                    fidl::encoding::BoundedString<1024>,
8991                    D,
8992                    val_ref,
8993                    decoder,
8994                    inner_offset,
8995                    inner_depth
8996                )?;
8997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8998                {
8999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9000                }
9001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9003                }
9004            }
9005
9006            next_offset += envelope_size;
9007
9008            // Decode the remaining unknown envelopes.
9009            while next_offset < end_offset {
9010                _next_ordinal_to_read += 1;
9011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9012                next_offset += envelope_size;
9013            }
9014
9015            Ok(())
9016        }
9017    }
9018
9019    impl InstanceIdEntry {
9020        #[inline(always)]
9021        fn max_ordinal_present(&self) -> u64 {
9022            if let Some(_) = self.moniker {
9023                return 3;
9024            }
9025            if let Some(_) = self.instance_id {
9026                return 1;
9027            }
9028            0
9029        }
9030    }
9031
9032    impl fidl::encoding::ValueTypeMarker for InstanceIdEntry {
9033        type Borrowed<'a> = &'a Self;
9034        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9035            value
9036        }
9037    }
9038
9039    unsafe impl fidl::encoding::TypeMarker for InstanceIdEntry {
9040        type Owned = Self;
9041
9042        #[inline(always)]
9043        fn inline_align(_context: fidl::encoding::Context) -> usize {
9044            8
9045        }
9046
9047        #[inline(always)]
9048        fn inline_size(_context: fidl::encoding::Context) -> usize {
9049            16
9050        }
9051    }
9052
9053    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstanceIdEntry, D>
9054        for &InstanceIdEntry
9055    {
9056        unsafe fn encode(
9057            self,
9058            encoder: &mut fidl::encoding::Encoder<'_, D>,
9059            offset: usize,
9060            mut depth: fidl::encoding::Depth,
9061        ) -> fidl::Result<()> {
9062            encoder.debug_check_bounds::<InstanceIdEntry>(offset);
9063            // Vector header
9064            let max_ordinal: u64 = self.max_ordinal_present();
9065            encoder.write_num(max_ordinal, offset);
9066            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9067            // Calling encoder.out_of_line_offset(0) is not allowed.
9068            if max_ordinal == 0 {
9069                return Ok(());
9070            }
9071            depth.increment()?;
9072            let envelope_size = 8;
9073            let bytes_len = max_ordinal as usize * envelope_size;
9074            #[allow(unused_variables)]
9075            let offset = encoder.out_of_line_offset(bytes_len);
9076            let mut _prev_end_offset: usize = 0;
9077            if 1 > max_ordinal {
9078                return Ok(());
9079            }
9080
9081            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9082            // are envelope_size bytes.
9083            let cur_offset: usize = (1 - 1) * envelope_size;
9084
9085            // Zero reserved fields.
9086            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9087
9088            // Safety:
9089            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9090            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9091            //   envelope_size bytes, there is always sufficient room.
9092            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
9093                self.instance_id.as_ref().map(
9094                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
9095                ),
9096                encoder,
9097                offset + cur_offset,
9098                depth,
9099            )?;
9100
9101            _prev_end_offset = cur_offset + envelope_size;
9102            if 3 > max_ordinal {
9103                return Ok(());
9104            }
9105
9106            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9107            // are envelope_size bytes.
9108            let cur_offset: usize = (3 - 1) * envelope_size;
9109
9110            // Zero reserved fields.
9111            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9112
9113            // Safety:
9114            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9115            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9116            //   envelope_size bytes, there is always sufficient room.
9117            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
9118            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
9119            encoder, offset + cur_offset, depth
9120        )?;
9121
9122            _prev_end_offset = cur_offset + envelope_size;
9123
9124            Ok(())
9125        }
9126    }
9127
9128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstanceIdEntry {
9129        #[inline(always)]
9130        fn new_empty() -> Self {
9131            Self::default()
9132        }
9133
9134        unsafe fn decode(
9135            &mut self,
9136            decoder: &mut fidl::encoding::Decoder<'_, D>,
9137            offset: usize,
9138            mut depth: fidl::encoding::Depth,
9139        ) -> fidl::Result<()> {
9140            decoder.debug_check_bounds::<Self>(offset);
9141            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9142                None => return Err(fidl::Error::NotNullable),
9143                Some(len) => len,
9144            };
9145            // Calling decoder.out_of_line_offset(0) is not allowed.
9146            if len == 0 {
9147                return Ok(());
9148            };
9149            depth.increment()?;
9150            let envelope_size = 8;
9151            let bytes_len = len * envelope_size;
9152            let offset = decoder.out_of_line_offset(bytes_len)?;
9153            // Decode the envelope for each type.
9154            let mut _next_ordinal_to_read = 0;
9155            let mut next_offset = offset;
9156            let end_offset = offset + bytes_len;
9157            _next_ordinal_to_read += 1;
9158            if next_offset >= end_offset {
9159                return Ok(());
9160            }
9161
9162            // Decode unknown envelopes for gaps in ordinals.
9163            while _next_ordinal_to_read < 1 {
9164                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9165                _next_ordinal_to_read += 1;
9166                next_offset += envelope_size;
9167            }
9168
9169            let next_out_of_line = decoder.next_out_of_line();
9170            let handles_before = decoder.remaining_handles();
9171            if let Some((inlined, num_bytes, num_handles)) =
9172                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9173            {
9174                let member_inline_size =
9175                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
9176                        decoder.context,
9177                    );
9178                if inlined != (member_inline_size <= 4) {
9179                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9180                }
9181                let inner_offset;
9182                let mut inner_depth = depth.clone();
9183                if inlined {
9184                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9185                    inner_offset = next_offset;
9186                } else {
9187                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9188                    inner_depth.increment()?;
9189                }
9190                let val_ref = self
9191                    .instance_id
9192                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
9193                fidl::decode!(
9194                    fidl::encoding::BoundedString<64>,
9195                    D,
9196                    val_ref,
9197                    decoder,
9198                    inner_offset,
9199                    inner_depth
9200                )?;
9201                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9202                {
9203                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9204                }
9205                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9206                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9207                }
9208            }
9209
9210            next_offset += envelope_size;
9211            _next_ordinal_to_read += 1;
9212            if next_offset >= end_offset {
9213                return Ok(());
9214            }
9215
9216            // Decode unknown envelopes for gaps in ordinals.
9217            while _next_ordinal_to_read < 3 {
9218                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9219                _next_ordinal_to_read += 1;
9220                next_offset += envelope_size;
9221            }
9222
9223            let next_out_of_line = decoder.next_out_of_line();
9224            let handles_before = decoder.remaining_handles();
9225            if let Some((inlined, num_bytes, num_handles)) =
9226                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9227            {
9228                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9229                if inlined != (member_inline_size <= 4) {
9230                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9231                }
9232                let inner_offset;
9233                let mut inner_depth = depth.clone();
9234                if inlined {
9235                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9236                    inner_offset = next_offset;
9237                } else {
9238                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9239                    inner_depth.increment()?;
9240                }
9241                let val_ref = self.moniker.get_or_insert_with(|| {
9242                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
9243                });
9244                fidl::decode!(
9245                    fidl::encoding::BoundedString<4096>,
9246                    D,
9247                    val_ref,
9248                    decoder,
9249                    inner_offset,
9250                    inner_depth
9251                )?;
9252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9253                {
9254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9255                }
9256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9258                }
9259            }
9260
9261            next_offset += envelope_size;
9262
9263            // Decode the remaining unknown envelopes.
9264            while next_offset < end_offset {
9265                _next_ordinal_to_read += 1;
9266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9267                next_offset += envelope_size;
9268            }
9269
9270            Ok(())
9271        }
9272    }
9273
9274    impl JobPolicyAllowlists {
9275        #[inline(always)]
9276        fn max_ordinal_present(&self) -> u64 {
9277            if let Some(_) = self.create_raw_processes {
9278                return 3;
9279            }
9280            if let Some(_) = self.main_process_critical {
9281                return 2;
9282            }
9283            if let Some(_) = self.ambient_mark_vmo_exec {
9284                return 1;
9285            }
9286            0
9287        }
9288    }
9289
9290    impl fidl::encoding::ValueTypeMarker for JobPolicyAllowlists {
9291        type Borrowed<'a> = &'a Self;
9292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9293            value
9294        }
9295    }
9296
9297    unsafe impl fidl::encoding::TypeMarker for JobPolicyAllowlists {
9298        type Owned = Self;
9299
9300        #[inline(always)]
9301        fn inline_align(_context: fidl::encoding::Context) -> usize {
9302            8
9303        }
9304
9305        #[inline(always)]
9306        fn inline_size(_context: fidl::encoding::Context) -> usize {
9307            16
9308        }
9309    }
9310
9311    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JobPolicyAllowlists, D>
9312        for &JobPolicyAllowlists
9313    {
9314        unsafe fn encode(
9315            self,
9316            encoder: &mut fidl::encoding::Encoder<'_, D>,
9317            offset: usize,
9318            mut depth: fidl::encoding::Depth,
9319        ) -> fidl::Result<()> {
9320            encoder.debug_check_bounds::<JobPolicyAllowlists>(offset);
9321            // Vector header
9322            let max_ordinal: u64 = self.max_ordinal_present();
9323            encoder.write_num(max_ordinal, offset);
9324            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9325            // Calling encoder.out_of_line_offset(0) is not allowed.
9326            if max_ordinal == 0 {
9327                return Ok(());
9328            }
9329            depth.increment()?;
9330            let envelope_size = 8;
9331            let bytes_len = max_ordinal as usize * envelope_size;
9332            #[allow(unused_variables)]
9333            let offset = encoder.out_of_line_offset(bytes_len);
9334            let mut _prev_end_offset: usize = 0;
9335            if 1 > max_ordinal {
9336                return Ok(());
9337            }
9338
9339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9340            // are envelope_size bytes.
9341            let cur_offset: usize = (1 - 1) * envelope_size;
9342
9343            // Zero reserved fields.
9344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9345
9346            // Safety:
9347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9349            //   envelope_size bytes, there is always sufficient room.
9350            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9351            self.ambient_mark_vmo_exec.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9352            encoder, offset + cur_offset, depth
9353        )?;
9354
9355            _prev_end_offset = cur_offset + envelope_size;
9356            if 2 > max_ordinal {
9357                return Ok(());
9358            }
9359
9360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9361            // are envelope_size bytes.
9362            let cur_offset: usize = (2 - 1) * envelope_size;
9363
9364            // Zero reserved fields.
9365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9366
9367            // Safety:
9368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9370            //   envelope_size bytes, there is always sufficient room.
9371            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9372            self.main_process_critical.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9373            encoder, offset + cur_offset, depth
9374        )?;
9375
9376            _prev_end_offset = cur_offset + envelope_size;
9377            if 3 > max_ordinal {
9378                return Ok(());
9379            }
9380
9381            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9382            // are envelope_size bytes.
9383            let cur_offset: usize = (3 - 1) * envelope_size;
9384
9385            // Zero reserved fields.
9386            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9387
9388            // Safety:
9389            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9390            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9391            //   envelope_size bytes, there is always sufficient room.
9392            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
9393            self.create_raw_processes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
9394            encoder, offset + cur_offset, depth
9395        )?;
9396
9397            _prev_end_offset = cur_offset + envelope_size;
9398
9399            Ok(())
9400        }
9401    }
9402
9403    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JobPolicyAllowlists {
9404        #[inline(always)]
9405        fn new_empty() -> Self {
9406            Self::default()
9407        }
9408
9409        unsafe fn decode(
9410            &mut self,
9411            decoder: &mut fidl::encoding::Decoder<'_, D>,
9412            offset: usize,
9413            mut depth: fidl::encoding::Depth,
9414        ) -> fidl::Result<()> {
9415            decoder.debug_check_bounds::<Self>(offset);
9416            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9417                None => return Err(fidl::Error::NotNullable),
9418                Some(len) => len,
9419            };
9420            // Calling decoder.out_of_line_offset(0) is not allowed.
9421            if len == 0 {
9422                return Ok(());
9423            };
9424            depth.increment()?;
9425            let envelope_size = 8;
9426            let bytes_len = len * envelope_size;
9427            let offset = decoder.out_of_line_offset(bytes_len)?;
9428            // Decode the envelope for each type.
9429            let mut _next_ordinal_to_read = 0;
9430            let mut next_offset = offset;
9431            let end_offset = offset + bytes_len;
9432            _next_ordinal_to_read += 1;
9433            if next_offset >= end_offset {
9434                return Ok(());
9435            }
9436
9437            // Decode unknown envelopes for gaps in ordinals.
9438            while _next_ordinal_to_read < 1 {
9439                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9440                _next_ordinal_to_read += 1;
9441                next_offset += envelope_size;
9442            }
9443
9444            let next_out_of_line = decoder.next_out_of_line();
9445            let handles_before = decoder.remaining_handles();
9446            if let Some((inlined, num_bytes, num_handles)) =
9447                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9448            {
9449                let member_inline_size = <fidl::encoding::Vector<
9450                    fidl::encoding::BoundedString<4096>,
9451                    128,
9452                > as fidl::encoding::TypeMarker>::inline_size(
9453                    decoder.context
9454                );
9455                if inlined != (member_inline_size <= 4) {
9456                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9457                }
9458                let inner_offset;
9459                let mut inner_depth = depth.clone();
9460                if inlined {
9461                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9462                    inner_offset = next_offset;
9463                } else {
9464                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9465                    inner_depth.increment()?;
9466                }
9467                let val_ref = self.ambient_mark_vmo_exec.get_or_insert_with(|| {
9468                    fidl::new_empty!(
9469                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9470                        D
9471                    )
9472                });
9473                fidl::decode!(
9474                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9475                    D,
9476                    val_ref,
9477                    decoder,
9478                    inner_offset,
9479                    inner_depth
9480                )?;
9481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9482                {
9483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9484                }
9485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9487                }
9488            }
9489
9490            next_offset += envelope_size;
9491            _next_ordinal_to_read += 1;
9492            if next_offset >= end_offset {
9493                return Ok(());
9494            }
9495
9496            // Decode unknown envelopes for gaps in ordinals.
9497            while _next_ordinal_to_read < 2 {
9498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9499                _next_ordinal_to_read += 1;
9500                next_offset += envelope_size;
9501            }
9502
9503            let next_out_of_line = decoder.next_out_of_line();
9504            let handles_before = decoder.remaining_handles();
9505            if let Some((inlined, num_bytes, num_handles)) =
9506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9507            {
9508                let member_inline_size = <fidl::encoding::Vector<
9509                    fidl::encoding::BoundedString<4096>,
9510                    128,
9511                > as fidl::encoding::TypeMarker>::inline_size(
9512                    decoder.context
9513                );
9514                if inlined != (member_inline_size <= 4) {
9515                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9516                }
9517                let inner_offset;
9518                let mut inner_depth = depth.clone();
9519                if inlined {
9520                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9521                    inner_offset = next_offset;
9522                } else {
9523                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9524                    inner_depth.increment()?;
9525                }
9526                let val_ref = self.main_process_critical.get_or_insert_with(|| {
9527                    fidl::new_empty!(
9528                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9529                        D
9530                    )
9531                });
9532                fidl::decode!(
9533                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9534                    D,
9535                    val_ref,
9536                    decoder,
9537                    inner_offset,
9538                    inner_depth
9539                )?;
9540                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9541                {
9542                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9543                }
9544                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9545                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9546                }
9547            }
9548
9549            next_offset += envelope_size;
9550            _next_ordinal_to_read += 1;
9551            if next_offset >= end_offset {
9552                return Ok(());
9553            }
9554
9555            // Decode unknown envelopes for gaps in ordinals.
9556            while _next_ordinal_to_read < 3 {
9557                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9558                _next_ordinal_to_read += 1;
9559                next_offset += envelope_size;
9560            }
9561
9562            let next_out_of_line = decoder.next_out_of_line();
9563            let handles_before = decoder.remaining_handles();
9564            if let Some((inlined, num_bytes, num_handles)) =
9565                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9566            {
9567                let member_inline_size = <fidl::encoding::Vector<
9568                    fidl::encoding::BoundedString<4096>,
9569                    128,
9570                > as fidl::encoding::TypeMarker>::inline_size(
9571                    decoder.context
9572                );
9573                if inlined != (member_inline_size <= 4) {
9574                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9575                }
9576                let inner_offset;
9577                let mut inner_depth = depth.clone();
9578                if inlined {
9579                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9580                    inner_offset = next_offset;
9581                } else {
9582                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9583                    inner_depth.increment()?;
9584                }
9585                let val_ref = self.create_raw_processes.get_or_insert_with(|| {
9586                    fidl::new_empty!(
9587                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9588                        D
9589                    )
9590                });
9591                fidl::decode!(
9592                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
9593                    D,
9594                    val_ref,
9595                    decoder,
9596                    inner_offset,
9597                    inner_depth
9598                )?;
9599                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9600                {
9601                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9602                }
9603                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9604                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9605                }
9606            }
9607
9608            next_offset += envelope_size;
9609
9610            // Decode the remaining unknown envelopes.
9611            while next_offset < end_offset {
9612                _next_ordinal_to_read += 1;
9613                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9614                next_offset += envelope_size;
9615            }
9616
9617            Ok(())
9618        }
9619    }
9620
9621    impl Namespace {
9622        #[inline(always)]
9623        fn max_ordinal_present(&self) -> u64 {
9624            if let Some(_) = self.capability {
9625                return 1;
9626            }
9627            0
9628        }
9629    }
9630
9631    impl fidl::encoding::ValueTypeMarker for Namespace {
9632        type Borrowed<'a> = &'a Self;
9633        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9634            value
9635        }
9636    }
9637
9638    unsafe impl fidl::encoding::TypeMarker for Namespace {
9639        type Owned = Self;
9640
9641        #[inline(always)]
9642        fn inline_align(_context: fidl::encoding::Context) -> usize {
9643            8
9644        }
9645
9646        #[inline(always)]
9647        fn inline_size(_context: fidl::encoding::Context) -> usize {
9648            16
9649        }
9650    }
9651
9652    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Namespace, D>
9653        for &Namespace
9654    {
9655        unsafe fn encode(
9656            self,
9657            encoder: &mut fidl::encoding::Encoder<'_, D>,
9658            offset: usize,
9659            mut depth: fidl::encoding::Depth,
9660        ) -> fidl::Result<()> {
9661            encoder.debug_check_bounds::<Namespace>(offset);
9662            // Vector header
9663            let max_ordinal: u64 = self.max_ordinal_present();
9664            encoder.write_num(max_ordinal, offset);
9665            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9666            // Calling encoder.out_of_line_offset(0) is not allowed.
9667            if max_ordinal == 0 {
9668                return Ok(());
9669            }
9670            depth.increment()?;
9671            let envelope_size = 8;
9672            let bytes_len = max_ordinal as usize * envelope_size;
9673            #[allow(unused_variables)]
9674            let offset = encoder.out_of_line_offset(bytes_len);
9675            let mut _prev_end_offset: usize = 0;
9676            if 1 > max_ordinal {
9677                return Ok(());
9678            }
9679
9680            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9681            // are envelope_size bytes.
9682            let cur_offset: usize = (1 - 1) * envelope_size;
9683
9684            // Zero reserved fields.
9685            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9686
9687            // Safety:
9688            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9689            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9690            //   envelope_size bytes, there is always sufficient room.
9691            fidl::encoding::encode_in_envelope_optional::<ComponentCapability, D>(
9692                self.capability
9693                    .as_ref()
9694                    .map(<ComponentCapability as fidl::encoding::ValueTypeMarker>::borrow),
9695                encoder,
9696                offset + cur_offset,
9697                depth,
9698            )?;
9699
9700            _prev_end_offset = cur_offset + envelope_size;
9701
9702            Ok(())
9703        }
9704    }
9705
9706    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Namespace {
9707        #[inline(always)]
9708        fn new_empty() -> Self {
9709            Self::default()
9710        }
9711
9712        unsafe fn decode(
9713            &mut self,
9714            decoder: &mut fidl::encoding::Decoder<'_, D>,
9715            offset: usize,
9716            mut depth: fidl::encoding::Depth,
9717        ) -> fidl::Result<()> {
9718            decoder.debug_check_bounds::<Self>(offset);
9719            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9720                None => return Err(fidl::Error::NotNullable),
9721                Some(len) => len,
9722            };
9723            // Calling decoder.out_of_line_offset(0) is not allowed.
9724            if len == 0 {
9725                return Ok(());
9726            };
9727            depth.increment()?;
9728            let envelope_size = 8;
9729            let bytes_len = len * envelope_size;
9730            let offset = decoder.out_of_line_offset(bytes_len)?;
9731            // Decode the envelope for each type.
9732            let mut _next_ordinal_to_read = 0;
9733            let mut next_offset = offset;
9734            let end_offset = offset + bytes_len;
9735            _next_ordinal_to_read += 1;
9736            if next_offset >= end_offset {
9737                return Ok(());
9738            }
9739
9740            // Decode unknown envelopes for gaps in ordinals.
9741            while _next_ordinal_to_read < 1 {
9742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9743                _next_ordinal_to_read += 1;
9744                next_offset += envelope_size;
9745            }
9746
9747            let next_out_of_line = decoder.next_out_of_line();
9748            let handles_before = decoder.remaining_handles();
9749            if let Some((inlined, num_bytes, num_handles)) =
9750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9751            {
9752                let member_inline_size =
9753                    <ComponentCapability as fidl::encoding::TypeMarker>::inline_size(
9754                        decoder.context,
9755                    );
9756                if inlined != (member_inline_size <= 4) {
9757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9758                }
9759                let inner_offset;
9760                let mut inner_depth = depth.clone();
9761                if inlined {
9762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9763                    inner_offset = next_offset;
9764                } else {
9765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9766                    inner_depth.increment()?;
9767                }
9768                let val_ref =
9769                    self.capability.get_or_insert_with(|| fidl::new_empty!(ComponentCapability, D));
9770                fidl::decode!(ComponentCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
9771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9772                {
9773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9774                }
9775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9777                }
9778            }
9779
9780            next_offset += envelope_size;
9781
9782            // Decode the remaining unknown envelopes.
9783            while next_offset < end_offset {
9784                _next_ordinal_to_read += 1;
9785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9786                next_offset += envelope_size;
9787            }
9788
9789            Ok(())
9790        }
9791    }
9792
9793    impl SecurityPolicy {
9794        #[inline(always)]
9795        fn max_ordinal_present(&self) -> u64 {
9796            if let Some(_) = self.child_policy {
9797                return 4;
9798            }
9799            if let Some(_) = self.debug_registration_policy {
9800                return 3;
9801            }
9802            if let Some(_) = self.capability_policy {
9803                return 2;
9804            }
9805            if let Some(_) = self.job_policy {
9806                return 1;
9807            }
9808            0
9809        }
9810    }
9811
9812    impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
9813        type Borrowed<'a> = &'a Self;
9814        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9815            value
9816        }
9817    }
9818
9819    unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
9820        type Owned = Self;
9821
9822        #[inline(always)]
9823        fn inline_align(_context: fidl::encoding::Context) -> usize {
9824            8
9825        }
9826
9827        #[inline(always)]
9828        fn inline_size(_context: fidl::encoding::Context) -> usize {
9829            16
9830        }
9831    }
9832
9833    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
9834        for &SecurityPolicy
9835    {
9836        unsafe fn encode(
9837            self,
9838            encoder: &mut fidl::encoding::Encoder<'_, D>,
9839            offset: usize,
9840            mut depth: fidl::encoding::Depth,
9841        ) -> fidl::Result<()> {
9842            encoder.debug_check_bounds::<SecurityPolicy>(offset);
9843            // Vector header
9844            let max_ordinal: u64 = self.max_ordinal_present();
9845            encoder.write_num(max_ordinal, offset);
9846            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9847            // Calling encoder.out_of_line_offset(0) is not allowed.
9848            if max_ordinal == 0 {
9849                return Ok(());
9850            }
9851            depth.increment()?;
9852            let envelope_size = 8;
9853            let bytes_len = max_ordinal as usize * envelope_size;
9854            #[allow(unused_variables)]
9855            let offset = encoder.out_of_line_offset(bytes_len);
9856            let mut _prev_end_offset: usize = 0;
9857            if 1 > max_ordinal {
9858                return Ok(());
9859            }
9860
9861            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9862            // are envelope_size bytes.
9863            let cur_offset: usize = (1 - 1) * envelope_size;
9864
9865            // Zero reserved fields.
9866            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9867
9868            // Safety:
9869            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9870            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9871            //   envelope_size bytes, there is always sufficient room.
9872            fidl::encoding::encode_in_envelope_optional::<JobPolicyAllowlists, D>(
9873                self.job_policy
9874                    .as_ref()
9875                    .map(<JobPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9876                encoder,
9877                offset + cur_offset,
9878                depth,
9879            )?;
9880
9881            _prev_end_offset = cur_offset + envelope_size;
9882            if 2 > max_ordinal {
9883                return Ok(());
9884            }
9885
9886            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9887            // are envelope_size bytes.
9888            let cur_offset: usize = (2 - 1) * envelope_size;
9889
9890            // Zero reserved fields.
9891            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9892
9893            // Safety:
9894            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9895            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9896            //   envelope_size bytes, there is always sufficient room.
9897            fidl::encoding::encode_in_envelope_optional::<CapabilityPolicyAllowlists, D>(
9898                self.capability_policy
9899                    .as_ref()
9900                    .map(<CapabilityPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9901                encoder,
9902                offset + cur_offset,
9903                depth,
9904            )?;
9905
9906            _prev_end_offset = cur_offset + envelope_size;
9907            if 3 > max_ordinal {
9908                return Ok(());
9909            }
9910
9911            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9912            // are envelope_size bytes.
9913            let cur_offset: usize = (3 - 1) * envelope_size;
9914
9915            // Zero reserved fields.
9916            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9917
9918            // Safety:
9919            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9920            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9921            //   envelope_size bytes, there is always sufficient room.
9922            fidl::encoding::encode_in_envelope_optional::<DebugRegistrationPolicyAllowlists, D>(
9923                self.debug_registration_policy.as_ref().map(
9924                    <DebugRegistrationPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow,
9925                ),
9926                encoder,
9927                offset + cur_offset,
9928                depth,
9929            )?;
9930
9931            _prev_end_offset = cur_offset + envelope_size;
9932            if 4 > max_ordinal {
9933                return Ok(());
9934            }
9935
9936            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9937            // are envelope_size bytes.
9938            let cur_offset: usize = (4 - 1) * envelope_size;
9939
9940            // Zero reserved fields.
9941            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9942
9943            // Safety:
9944            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9945            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9946            //   envelope_size bytes, there is always sufficient room.
9947            fidl::encoding::encode_in_envelope_optional::<ChildPolicyAllowlists, D>(
9948                self.child_policy
9949                    .as_ref()
9950                    .map(<ChildPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
9951                encoder,
9952                offset + cur_offset,
9953                depth,
9954            )?;
9955
9956            _prev_end_offset = cur_offset + envelope_size;
9957
9958            Ok(())
9959        }
9960    }
9961
9962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
9963        #[inline(always)]
9964        fn new_empty() -> Self {
9965            Self::default()
9966        }
9967
9968        unsafe fn decode(
9969            &mut self,
9970            decoder: &mut fidl::encoding::Decoder<'_, D>,
9971            offset: usize,
9972            mut depth: fidl::encoding::Depth,
9973        ) -> fidl::Result<()> {
9974            decoder.debug_check_bounds::<Self>(offset);
9975            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9976                None => return Err(fidl::Error::NotNullable),
9977                Some(len) => len,
9978            };
9979            // Calling decoder.out_of_line_offset(0) is not allowed.
9980            if len == 0 {
9981                return Ok(());
9982            };
9983            depth.increment()?;
9984            let envelope_size = 8;
9985            let bytes_len = len * envelope_size;
9986            let offset = decoder.out_of_line_offset(bytes_len)?;
9987            // Decode the envelope for each type.
9988            let mut _next_ordinal_to_read = 0;
9989            let mut next_offset = offset;
9990            let end_offset = offset + bytes_len;
9991            _next_ordinal_to_read += 1;
9992            if next_offset >= end_offset {
9993                return Ok(());
9994            }
9995
9996            // Decode unknown envelopes for gaps in ordinals.
9997            while _next_ordinal_to_read < 1 {
9998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9999                _next_ordinal_to_read += 1;
10000                next_offset += envelope_size;
10001            }
10002
10003            let next_out_of_line = decoder.next_out_of_line();
10004            let handles_before = decoder.remaining_handles();
10005            if let Some((inlined, num_bytes, num_handles)) =
10006                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10007            {
10008                let member_inline_size =
10009                    <JobPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10010                        decoder.context,
10011                    );
10012                if inlined != (member_inline_size <= 4) {
10013                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10014                }
10015                let inner_offset;
10016                let mut inner_depth = depth.clone();
10017                if inlined {
10018                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10019                    inner_offset = next_offset;
10020                } else {
10021                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10022                    inner_depth.increment()?;
10023                }
10024                let val_ref =
10025                    self.job_policy.get_or_insert_with(|| fidl::new_empty!(JobPolicyAllowlists, D));
10026                fidl::decode!(JobPolicyAllowlists, D, val_ref, decoder, inner_offset, inner_depth)?;
10027                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10028                {
10029                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10030                }
10031                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10032                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10033                }
10034            }
10035
10036            next_offset += envelope_size;
10037            _next_ordinal_to_read += 1;
10038            if next_offset >= end_offset {
10039                return Ok(());
10040            }
10041
10042            // Decode unknown envelopes for gaps in ordinals.
10043            while _next_ordinal_to_read < 2 {
10044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10045                _next_ordinal_to_read += 1;
10046                next_offset += envelope_size;
10047            }
10048
10049            let next_out_of_line = decoder.next_out_of_line();
10050            let handles_before = decoder.remaining_handles();
10051            if let Some((inlined, num_bytes, num_handles)) =
10052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10053            {
10054                let member_inline_size =
10055                    <CapabilityPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10056                        decoder.context,
10057                    );
10058                if inlined != (member_inline_size <= 4) {
10059                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10060                }
10061                let inner_offset;
10062                let mut inner_depth = depth.clone();
10063                if inlined {
10064                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10065                    inner_offset = next_offset;
10066                } else {
10067                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10068                    inner_depth.increment()?;
10069                }
10070                let val_ref = self
10071                    .capability_policy
10072                    .get_or_insert_with(|| fidl::new_empty!(CapabilityPolicyAllowlists, D));
10073                fidl::decode!(
10074                    CapabilityPolicyAllowlists,
10075                    D,
10076                    val_ref,
10077                    decoder,
10078                    inner_offset,
10079                    inner_depth
10080                )?;
10081                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10082                {
10083                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10084                }
10085                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10086                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10087                }
10088            }
10089
10090            next_offset += envelope_size;
10091            _next_ordinal_to_read += 1;
10092            if next_offset >= end_offset {
10093                return Ok(());
10094            }
10095
10096            // Decode unknown envelopes for gaps in ordinals.
10097            while _next_ordinal_to_read < 3 {
10098                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10099                _next_ordinal_to_read += 1;
10100                next_offset += envelope_size;
10101            }
10102
10103            let next_out_of_line = decoder.next_out_of_line();
10104            let handles_before = decoder.remaining_handles();
10105            if let Some((inlined, num_bytes, num_handles)) =
10106                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10107            {
10108                let member_inline_size =
10109                    <DebugRegistrationPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10110                        decoder.context,
10111                    );
10112                if inlined != (member_inline_size <= 4) {
10113                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10114                }
10115                let inner_offset;
10116                let mut inner_depth = depth.clone();
10117                if inlined {
10118                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10119                    inner_offset = next_offset;
10120                } else {
10121                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10122                    inner_depth.increment()?;
10123                }
10124                let val_ref = self
10125                    .debug_registration_policy
10126                    .get_or_insert_with(|| fidl::new_empty!(DebugRegistrationPolicyAllowlists, D));
10127                fidl::decode!(
10128                    DebugRegistrationPolicyAllowlists,
10129                    D,
10130                    val_ref,
10131                    decoder,
10132                    inner_offset,
10133                    inner_depth
10134                )?;
10135                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10136                {
10137                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10138                }
10139                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10140                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10141                }
10142            }
10143
10144            next_offset += envelope_size;
10145            _next_ordinal_to_read += 1;
10146            if next_offset >= end_offset {
10147                return Ok(());
10148            }
10149
10150            // Decode unknown envelopes for gaps in ordinals.
10151            while _next_ordinal_to_read < 4 {
10152                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10153                _next_ordinal_to_read += 1;
10154                next_offset += envelope_size;
10155            }
10156
10157            let next_out_of_line = decoder.next_out_of_line();
10158            let handles_before = decoder.remaining_handles();
10159            if let Some((inlined, num_bytes, num_handles)) =
10160                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10161            {
10162                let member_inline_size =
10163                    <ChildPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
10164                        decoder.context,
10165                    );
10166                if inlined != (member_inline_size <= 4) {
10167                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10168                }
10169                let inner_offset;
10170                let mut inner_depth = depth.clone();
10171                if inlined {
10172                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10173                    inner_offset = next_offset;
10174                } else {
10175                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10176                    inner_depth.increment()?;
10177                }
10178                let val_ref = self
10179                    .child_policy
10180                    .get_or_insert_with(|| fidl::new_empty!(ChildPolicyAllowlists, D));
10181                fidl::decode!(
10182                    ChildPolicyAllowlists,
10183                    D,
10184                    val_ref,
10185                    decoder,
10186                    inner_offset,
10187                    inner_depth
10188                )?;
10189                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10190                {
10191                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10192                }
10193                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10194                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10195                }
10196            }
10197
10198            next_offset += envelope_size;
10199
10200            // Decode the remaining unknown envelopes.
10201            while next_offset < end_offset {
10202                _next_ordinal_to_read += 1;
10203                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10204                next_offset += envelope_size;
10205            }
10206
10207            Ok(())
10208        }
10209    }
10210
10211    impl Sources {
10212        #[inline(always)]
10213        fn max_ordinal_present(&self) -> u64 {
10214            if let Some(_) = self.capability_type {
10215                return 7;
10216            }
10217            if let Some(_) = self.component {
10218                return 6;
10219            }
10220            if let Some(_) = self.namespace {
10221                return 5;
10222            }
10223            if let Some(_) = self.collection {
10224                return 4;
10225            }
10226            if let Some(_) = self.capability {
10227                return 3;
10228            }
10229            if let Some(_) = self.builtin {
10230                return 2;
10231            }
10232            if let Some(_) = self.framework {
10233                return 1;
10234            }
10235            0
10236        }
10237    }
10238
10239    impl fidl::encoding::ValueTypeMarker for Sources {
10240        type Borrowed<'a> = &'a Self;
10241        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10242            value
10243        }
10244    }
10245
10246    unsafe impl fidl::encoding::TypeMarker for Sources {
10247        type Owned = Self;
10248
10249        #[inline(always)]
10250        fn inline_align(_context: fidl::encoding::Context) -> usize {
10251            8
10252        }
10253
10254        #[inline(always)]
10255        fn inline_size(_context: fidl::encoding::Context) -> usize {
10256            16
10257        }
10258    }
10259
10260    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Sources, D> for &Sources {
10261        unsafe fn encode(
10262            self,
10263            encoder: &mut fidl::encoding::Encoder<'_, D>,
10264            offset: usize,
10265            mut depth: fidl::encoding::Depth,
10266        ) -> fidl::Result<()> {
10267            encoder.debug_check_bounds::<Sources>(offset);
10268            // Vector header
10269            let max_ordinal: u64 = self.max_ordinal_present();
10270            encoder.write_num(max_ordinal, offset);
10271            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10272            // Calling encoder.out_of_line_offset(0) is not allowed.
10273            if max_ordinal == 0 {
10274                return Ok(());
10275            }
10276            depth.increment()?;
10277            let envelope_size = 8;
10278            let bytes_len = max_ordinal as usize * envelope_size;
10279            #[allow(unused_variables)]
10280            let offset = encoder.out_of_line_offset(bytes_len);
10281            let mut _prev_end_offset: usize = 0;
10282            if 1 > max_ordinal {
10283                return Ok(());
10284            }
10285
10286            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10287            // are envelope_size bytes.
10288            let cur_offset: usize = (1 - 1) * envelope_size;
10289
10290            // Zero reserved fields.
10291            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10292
10293            // Safety:
10294            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10295            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10296            //   envelope_size bytes, there is always sufficient room.
10297            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10298                self.framework.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10299                encoder,
10300                offset + cur_offset,
10301                depth,
10302            )?;
10303
10304            _prev_end_offset = cur_offset + envelope_size;
10305            if 2 > max_ordinal {
10306                return Ok(());
10307            }
10308
10309            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10310            // are envelope_size bytes.
10311            let cur_offset: usize = (2 - 1) * envelope_size;
10312
10313            // Zero reserved fields.
10314            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10315
10316            // Safety:
10317            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10318            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10319            //   envelope_size bytes, there is always sufficient room.
10320            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10321                self.builtin.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10322                encoder,
10323                offset + cur_offset,
10324                depth,
10325            )?;
10326
10327            _prev_end_offset = cur_offset + envelope_size;
10328            if 3 > max_ordinal {
10329                return Ok(());
10330            }
10331
10332            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10333            // are envelope_size bytes.
10334            let cur_offset: usize = (3 - 1) * envelope_size;
10335
10336            // Zero reserved fields.
10337            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10338
10339            // Safety:
10340            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10341            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10342            //   envelope_size bytes, there is always sufficient room.
10343            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10344                self.capability.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10345                encoder,
10346                offset + cur_offset,
10347                depth,
10348            )?;
10349
10350            _prev_end_offset = cur_offset + envelope_size;
10351            if 4 > max_ordinal {
10352                return Ok(());
10353            }
10354
10355            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10356            // are envelope_size bytes.
10357            let cur_offset: usize = (4 - 1) * envelope_size;
10358
10359            // Zero reserved fields.
10360            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10361
10362            // Safety:
10363            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10364            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10365            //   envelope_size bytes, there is always sufficient room.
10366            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10367                self.collection.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10368                encoder,
10369                offset + cur_offset,
10370                depth,
10371            )?;
10372
10373            _prev_end_offset = cur_offset + envelope_size;
10374            if 5 > max_ordinal {
10375                return Ok(());
10376            }
10377
10378            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10379            // are envelope_size bytes.
10380            let cur_offset: usize = (5 - 1) * envelope_size;
10381
10382            // Zero reserved fields.
10383            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10384
10385            // Safety:
10386            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10387            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10388            //   envelope_size bytes, there is always sufficient room.
10389            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10390                self.namespace.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10391                encoder,
10392                offset + cur_offset,
10393                depth,
10394            )?;
10395
10396            _prev_end_offset = cur_offset + envelope_size;
10397            if 6 > max_ordinal {
10398                return Ok(());
10399            }
10400
10401            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10402            // are envelope_size bytes.
10403            let cur_offset: usize = (6 - 1) * envelope_size;
10404
10405            // Zero reserved fields.
10406            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10407
10408            // Safety:
10409            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10410            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10411            //   envelope_size bytes, there is always sufficient room.
10412            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10413                self.component.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10414                encoder,
10415                offset + cur_offset,
10416                depth,
10417            )?;
10418
10419            _prev_end_offset = cur_offset + envelope_size;
10420            if 7 > max_ordinal {
10421                return Ok(());
10422            }
10423
10424            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10425            // are envelope_size bytes.
10426            let cur_offset: usize = (7 - 1) * envelope_size;
10427
10428            // Zero reserved fields.
10429            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10430
10431            // Safety:
10432            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10433            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10434            //   envelope_size bytes, there is always sufficient room.
10435            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
10436                self.capability_type.as_ref().map(
10437                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
10438                ),
10439                encoder,
10440                offset + cur_offset,
10441                depth,
10442            )?;
10443
10444            _prev_end_offset = cur_offset + envelope_size;
10445
10446            Ok(())
10447        }
10448    }
10449
10450    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Sources {
10451        #[inline(always)]
10452        fn new_empty() -> Self {
10453            Self::default()
10454        }
10455
10456        unsafe fn decode(
10457            &mut self,
10458            decoder: &mut fidl::encoding::Decoder<'_, D>,
10459            offset: usize,
10460            mut depth: fidl::encoding::Depth,
10461        ) -> fidl::Result<()> {
10462            decoder.debug_check_bounds::<Self>(offset);
10463            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10464                None => return Err(fidl::Error::NotNullable),
10465                Some(len) => len,
10466            };
10467            // Calling decoder.out_of_line_offset(0) is not allowed.
10468            if len == 0 {
10469                return Ok(());
10470            };
10471            depth.increment()?;
10472            let envelope_size = 8;
10473            let bytes_len = len * envelope_size;
10474            let offset = decoder.out_of_line_offset(bytes_len)?;
10475            // Decode the envelope for each type.
10476            let mut _next_ordinal_to_read = 0;
10477            let mut next_offset = offset;
10478            let end_offset = offset + bytes_len;
10479            _next_ordinal_to_read += 1;
10480            if next_offset >= end_offset {
10481                return Ok(());
10482            }
10483
10484            // Decode unknown envelopes for gaps in ordinals.
10485            while _next_ordinal_to_read < 1 {
10486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10487                _next_ordinal_to_read += 1;
10488                next_offset += envelope_size;
10489            }
10490
10491            let next_out_of_line = decoder.next_out_of_line();
10492            let handles_before = decoder.remaining_handles();
10493            if let Some((inlined, num_bytes, num_handles)) =
10494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10495            {
10496                let member_inline_size =
10497                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10498                if inlined != (member_inline_size <= 4) {
10499                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10500                }
10501                let inner_offset;
10502                let mut inner_depth = depth.clone();
10503                if inlined {
10504                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10505                    inner_offset = next_offset;
10506                } else {
10507                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10508                    inner_depth.increment()?;
10509                }
10510                let val_ref = self.framework.get_or_insert_with(|| fidl::new_empty!(bool, D));
10511                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10513                {
10514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10515                }
10516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10518                }
10519            }
10520
10521            next_offset += envelope_size;
10522            _next_ordinal_to_read += 1;
10523            if next_offset >= end_offset {
10524                return Ok(());
10525            }
10526
10527            // Decode unknown envelopes for gaps in ordinals.
10528            while _next_ordinal_to_read < 2 {
10529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10530                _next_ordinal_to_read += 1;
10531                next_offset += envelope_size;
10532            }
10533
10534            let next_out_of_line = decoder.next_out_of_line();
10535            let handles_before = decoder.remaining_handles();
10536            if let Some((inlined, num_bytes, num_handles)) =
10537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10538            {
10539                let member_inline_size =
10540                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10541                if inlined != (member_inline_size <= 4) {
10542                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10543                }
10544                let inner_offset;
10545                let mut inner_depth = depth.clone();
10546                if inlined {
10547                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10548                    inner_offset = next_offset;
10549                } else {
10550                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10551                    inner_depth.increment()?;
10552                }
10553                let val_ref = self.builtin.get_or_insert_with(|| fidl::new_empty!(bool, D));
10554                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10555                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10556                {
10557                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10558                }
10559                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10560                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10561                }
10562            }
10563
10564            next_offset += envelope_size;
10565            _next_ordinal_to_read += 1;
10566            if next_offset >= end_offset {
10567                return Ok(());
10568            }
10569
10570            // Decode unknown envelopes for gaps in ordinals.
10571            while _next_ordinal_to_read < 3 {
10572                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10573                _next_ordinal_to_read += 1;
10574                next_offset += envelope_size;
10575            }
10576
10577            let next_out_of_line = decoder.next_out_of_line();
10578            let handles_before = decoder.remaining_handles();
10579            if let Some((inlined, num_bytes, num_handles)) =
10580                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10581            {
10582                let member_inline_size =
10583                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10584                if inlined != (member_inline_size <= 4) {
10585                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10586                }
10587                let inner_offset;
10588                let mut inner_depth = depth.clone();
10589                if inlined {
10590                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10591                    inner_offset = next_offset;
10592                } else {
10593                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10594                    inner_depth.increment()?;
10595                }
10596                let val_ref = self.capability.get_or_insert_with(|| fidl::new_empty!(bool, D));
10597                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10598                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10599                {
10600                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10601                }
10602                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10603                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10604                }
10605            }
10606
10607            next_offset += envelope_size;
10608            _next_ordinal_to_read += 1;
10609            if next_offset >= end_offset {
10610                return Ok(());
10611            }
10612
10613            // Decode unknown envelopes for gaps in ordinals.
10614            while _next_ordinal_to_read < 4 {
10615                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10616                _next_ordinal_to_read += 1;
10617                next_offset += envelope_size;
10618            }
10619
10620            let next_out_of_line = decoder.next_out_of_line();
10621            let handles_before = decoder.remaining_handles();
10622            if let Some((inlined, num_bytes, num_handles)) =
10623                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10624            {
10625                let member_inline_size =
10626                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10627                if inlined != (member_inline_size <= 4) {
10628                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10629                }
10630                let inner_offset;
10631                let mut inner_depth = depth.clone();
10632                if inlined {
10633                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10634                    inner_offset = next_offset;
10635                } else {
10636                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10637                    inner_depth.increment()?;
10638                }
10639                let val_ref = self.collection.get_or_insert_with(|| fidl::new_empty!(bool, D));
10640                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10641                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10642                {
10643                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10644                }
10645                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10646                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10647                }
10648            }
10649
10650            next_offset += envelope_size;
10651            _next_ordinal_to_read += 1;
10652            if next_offset >= end_offset {
10653                return Ok(());
10654            }
10655
10656            // Decode unknown envelopes for gaps in ordinals.
10657            while _next_ordinal_to_read < 5 {
10658                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10659                _next_ordinal_to_read += 1;
10660                next_offset += envelope_size;
10661            }
10662
10663            let next_out_of_line = decoder.next_out_of_line();
10664            let handles_before = decoder.remaining_handles();
10665            if let Some((inlined, num_bytes, num_handles)) =
10666                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10667            {
10668                let member_inline_size =
10669                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10670                if inlined != (member_inline_size <= 4) {
10671                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10672                }
10673                let inner_offset;
10674                let mut inner_depth = depth.clone();
10675                if inlined {
10676                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10677                    inner_offset = next_offset;
10678                } else {
10679                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10680                    inner_depth.increment()?;
10681                }
10682                let val_ref = self.namespace.get_or_insert_with(|| fidl::new_empty!(bool, D));
10683                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10685                {
10686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10687                }
10688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10690                }
10691            }
10692
10693            next_offset += envelope_size;
10694            _next_ordinal_to_read += 1;
10695            if next_offset >= end_offset {
10696                return Ok(());
10697            }
10698
10699            // Decode unknown envelopes for gaps in ordinals.
10700            while _next_ordinal_to_read < 6 {
10701                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10702                _next_ordinal_to_read += 1;
10703                next_offset += envelope_size;
10704            }
10705
10706            let next_out_of_line = decoder.next_out_of_line();
10707            let handles_before = decoder.remaining_handles();
10708            if let Some((inlined, num_bytes, num_handles)) =
10709                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10710            {
10711                let member_inline_size =
10712                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10713                if inlined != (member_inline_size <= 4) {
10714                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10715                }
10716                let inner_offset;
10717                let mut inner_depth = depth.clone();
10718                if inlined {
10719                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10720                    inner_offset = next_offset;
10721                } else {
10722                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10723                    inner_depth.increment()?;
10724                }
10725                let val_ref = self.component.get_or_insert_with(|| fidl::new_empty!(bool, D));
10726                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10727                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10728                {
10729                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10730                }
10731                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10732                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10733                }
10734            }
10735
10736            next_offset += envelope_size;
10737            _next_ordinal_to_read += 1;
10738            if next_offset >= end_offset {
10739                return Ok(());
10740            }
10741
10742            // Decode unknown envelopes for gaps in ordinals.
10743            while _next_ordinal_to_read < 7 {
10744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10745                _next_ordinal_to_read += 1;
10746                next_offset += envelope_size;
10747            }
10748
10749            let next_out_of_line = decoder.next_out_of_line();
10750            let handles_before = decoder.remaining_handles();
10751            if let Some((inlined, num_bytes, num_handles)) =
10752                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10753            {
10754                let member_inline_size =
10755                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
10756                        decoder.context,
10757                    );
10758                if inlined != (member_inline_size <= 4) {
10759                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10760                }
10761                let inner_offset;
10762                let mut inner_depth = depth.clone();
10763                if inlined {
10764                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10765                    inner_offset = next_offset;
10766                } else {
10767                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10768                    inner_depth.increment()?;
10769                }
10770                let val_ref = self
10771                    .capability_type
10772                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
10773                fidl::decode!(
10774                    fidl::encoding::BoundedString<100>,
10775                    D,
10776                    val_ref,
10777                    decoder,
10778                    inner_offset,
10779                    inner_depth
10780                )?;
10781                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10782                {
10783                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10784                }
10785                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10786                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10787                }
10788            }
10789
10790            next_offset += envelope_size;
10791
10792            // Decode the remaining unknown envelopes.
10793            while next_offset < end_offset {
10794                _next_ordinal_to_read += 1;
10795                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10796                next_offset += envelope_size;
10797            }
10798
10799            Ok(())
10800        }
10801    }
10802
10803    impl Void {
10804        #[inline(always)]
10805        fn max_ordinal_present(&self) -> u64 {
10806            if let Some(_) = self.moniker {
10807                return 2;
10808            }
10809            if let Some(_) = self.capability {
10810                return 1;
10811            }
10812            0
10813        }
10814    }
10815
10816    impl fidl::encoding::ValueTypeMarker for Void {
10817        type Borrowed<'a> = &'a Self;
10818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10819            value
10820        }
10821    }
10822
10823    unsafe impl fidl::encoding::TypeMarker for Void {
10824        type Owned = Self;
10825
10826        #[inline(always)]
10827        fn inline_align(_context: fidl::encoding::Context) -> usize {
10828            8
10829        }
10830
10831        #[inline(always)]
10832        fn inline_size(_context: fidl::encoding::Context) -> usize {
10833            16
10834        }
10835    }
10836
10837    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Void, D> for &Void {
10838        unsafe fn encode(
10839            self,
10840            encoder: &mut fidl::encoding::Encoder<'_, D>,
10841            offset: usize,
10842            mut depth: fidl::encoding::Depth,
10843        ) -> fidl::Result<()> {
10844            encoder.debug_check_bounds::<Void>(offset);
10845            // Vector header
10846            let max_ordinal: u64 = self.max_ordinal_present();
10847            encoder.write_num(max_ordinal, offset);
10848            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10849            // Calling encoder.out_of_line_offset(0) is not allowed.
10850            if max_ordinal == 0 {
10851                return Ok(());
10852            }
10853            depth.increment()?;
10854            let envelope_size = 8;
10855            let bytes_len = max_ordinal as usize * envelope_size;
10856            #[allow(unused_variables)]
10857            let offset = encoder.out_of_line_offset(bytes_len);
10858            let mut _prev_end_offset: usize = 0;
10859            if 1 > max_ordinal {
10860                return Ok(());
10861            }
10862
10863            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10864            // are envelope_size bytes.
10865            let cur_offset: usize = (1 - 1) * envelope_size;
10866
10867            // Zero reserved fields.
10868            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10869
10870            // Safety:
10871            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10872            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10873            //   envelope_size bytes, there is always sufficient room.
10874            fidl::encoding::encode_in_envelope_optional::<InternalCapability, D>(
10875                self.capability
10876                    .as_ref()
10877                    .map(<InternalCapability as fidl::encoding::ValueTypeMarker>::borrow),
10878                encoder,
10879                offset + cur_offset,
10880                depth,
10881            )?;
10882
10883            _prev_end_offset = cur_offset + envelope_size;
10884            if 2 > max_ordinal {
10885                return Ok(());
10886            }
10887
10888            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10889            // are envelope_size bytes.
10890            let cur_offset: usize = (2 - 1) * envelope_size;
10891
10892            // Zero reserved fields.
10893            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10894
10895            // Safety:
10896            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10897            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10898            //   envelope_size bytes, there is always sufficient room.
10899            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
10900            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
10901            encoder, offset + cur_offset, depth
10902        )?;
10903
10904            _prev_end_offset = cur_offset + envelope_size;
10905
10906            Ok(())
10907        }
10908    }
10909
10910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Void {
10911        #[inline(always)]
10912        fn new_empty() -> Self {
10913            Self::default()
10914        }
10915
10916        unsafe fn decode(
10917            &mut self,
10918            decoder: &mut fidl::encoding::Decoder<'_, D>,
10919            offset: usize,
10920            mut depth: fidl::encoding::Depth,
10921        ) -> fidl::Result<()> {
10922            decoder.debug_check_bounds::<Self>(offset);
10923            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10924                None => return Err(fidl::Error::NotNullable),
10925                Some(len) => len,
10926            };
10927            // Calling decoder.out_of_line_offset(0) is not allowed.
10928            if len == 0 {
10929                return Ok(());
10930            };
10931            depth.increment()?;
10932            let envelope_size = 8;
10933            let bytes_len = len * envelope_size;
10934            let offset = decoder.out_of_line_offset(bytes_len)?;
10935            // Decode the envelope for each type.
10936            let mut _next_ordinal_to_read = 0;
10937            let mut next_offset = offset;
10938            let end_offset = offset + bytes_len;
10939            _next_ordinal_to_read += 1;
10940            if next_offset >= end_offset {
10941                return Ok(());
10942            }
10943
10944            // Decode unknown envelopes for gaps in ordinals.
10945            while _next_ordinal_to_read < 1 {
10946                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10947                _next_ordinal_to_read += 1;
10948                next_offset += envelope_size;
10949            }
10950
10951            let next_out_of_line = decoder.next_out_of_line();
10952            let handles_before = decoder.remaining_handles();
10953            if let Some((inlined, num_bytes, num_handles)) =
10954                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10955            {
10956                let member_inline_size =
10957                    <InternalCapability as fidl::encoding::TypeMarker>::inline_size(
10958                        decoder.context,
10959                    );
10960                if inlined != (member_inline_size <= 4) {
10961                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10962                }
10963                let inner_offset;
10964                let mut inner_depth = depth.clone();
10965                if inlined {
10966                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10967                    inner_offset = next_offset;
10968                } else {
10969                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10970                    inner_depth.increment()?;
10971                }
10972                let val_ref =
10973                    self.capability.get_or_insert_with(|| fidl::new_empty!(InternalCapability, D));
10974                fidl::decode!(InternalCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
10975                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10976                {
10977                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10978                }
10979                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10980                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10981                }
10982            }
10983
10984            next_offset += envelope_size;
10985            _next_ordinal_to_read += 1;
10986            if next_offset >= end_offset {
10987                return Ok(());
10988            }
10989
10990            // Decode unknown envelopes for gaps in ordinals.
10991            while _next_ordinal_to_read < 2 {
10992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10993                _next_ordinal_to_read += 1;
10994                next_offset += envelope_size;
10995            }
10996
10997            let next_out_of_line = decoder.next_out_of_line();
10998            let handles_before = decoder.remaining_handles();
10999            if let Some((inlined, num_bytes, num_handles)) =
11000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11001            {
11002                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11003                if inlined != (member_inline_size <= 4) {
11004                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11005                }
11006                let inner_offset;
11007                let mut inner_depth = depth.clone();
11008                if inlined {
11009                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11010                    inner_offset = next_offset;
11011                } else {
11012                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11013                    inner_depth.increment()?;
11014                }
11015                let val_ref = self.moniker.get_or_insert_with(|| {
11016                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
11017                });
11018                fidl::decode!(
11019                    fidl::encoding::BoundedString<4096>,
11020                    D,
11021                    val_ref,
11022                    decoder,
11023                    inner_offset,
11024                    inner_depth
11025                )?;
11026                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11027                {
11028                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11029                }
11030                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11031                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11032                }
11033            }
11034
11035            next_offset += envelope_size;
11036
11037            // Decode the remaining unknown envelopes.
11038            while next_offset < end_offset {
11039                _next_ordinal_to_read += 1;
11040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11041                next_offset += envelope_size;
11042            }
11043
11044            Ok(())
11045        }
11046    }
11047
11048    impl fidl::encoding::ValueTypeMarker for AggregateCapability {
11049        type Borrowed<'a> = &'a Self;
11050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11051            value
11052        }
11053    }
11054
11055    unsafe impl fidl::encoding::TypeMarker for AggregateCapability {
11056        type Owned = Self;
11057
11058        #[inline(always)]
11059        fn inline_align(_context: fidl::encoding::Context) -> usize {
11060            8
11061        }
11062
11063        #[inline(always)]
11064        fn inline_size(_context: fidl::encoding::Context) -> usize {
11065            16
11066        }
11067    }
11068
11069    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateCapability, D>
11070        for &AggregateCapability
11071    {
11072        #[inline]
11073        unsafe fn encode(
11074            self,
11075            encoder: &mut fidl::encoding::Encoder<'_, D>,
11076            offset: usize,
11077            _depth: fidl::encoding::Depth,
11078        ) -> fidl::Result<()> {
11079            encoder.debug_check_bounds::<AggregateCapability>(offset);
11080            encoder.write_num::<u64>(self.ordinal(), offset);
11081            match self {
11082                AggregateCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
11083                    fidl::encoding::BoundedString<100>,
11084                    D,
11085                >(
11086                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
11087                        val,
11088                    ),
11089                    encoder,
11090                    offset + 8,
11091                    _depth,
11092                ),
11093            }
11094        }
11095    }
11096
11097    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateCapability {
11098        #[inline(always)]
11099        fn new_empty() -> Self {
11100            Self::Service(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
11101        }
11102
11103        #[inline]
11104        unsafe fn decode(
11105            &mut self,
11106            decoder: &mut fidl::encoding::Decoder<'_, D>,
11107            offset: usize,
11108            mut depth: fidl::encoding::Depth,
11109        ) -> fidl::Result<()> {
11110            decoder.debug_check_bounds::<Self>(offset);
11111            #[allow(unused_variables)]
11112            let next_out_of_line = decoder.next_out_of_line();
11113            let handles_before = decoder.remaining_handles();
11114            let (ordinal, inlined, num_bytes, num_handles) =
11115                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11116
11117            let member_inline_size = match ordinal {
11118                1 => {
11119                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
11120                        decoder.context,
11121                    )
11122                }
11123                _ => return Err(fidl::Error::UnknownUnionTag),
11124            };
11125
11126            if inlined != (member_inline_size <= 4) {
11127                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11128            }
11129            let _inner_offset;
11130            if inlined {
11131                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11132                _inner_offset = offset + 8;
11133            } else {
11134                depth.increment()?;
11135                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11136            }
11137            match ordinal {
11138                1 => {
11139                    #[allow(irrefutable_let_patterns)]
11140                    if let AggregateCapability::Service(_) = self {
11141                        // Do nothing, read the value into the object
11142                    } else {
11143                        // Initialize `self` to the right variant
11144                        *self = AggregateCapability::Service(fidl::new_empty!(
11145                            fidl::encoding::BoundedString<100>,
11146                            D
11147                        ));
11148                    }
11149                    #[allow(irrefutable_let_patterns)]
11150                    if let AggregateCapability::Service(ref mut val) = self {
11151                        fidl::decode!(
11152                            fidl::encoding::BoundedString<100>,
11153                            D,
11154                            val,
11155                            decoder,
11156                            _inner_offset,
11157                            depth
11158                        )?;
11159                    } else {
11160                        unreachable!()
11161                    }
11162                }
11163                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11164            }
11165            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11166                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11167            }
11168            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11169                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11170            }
11171            Ok(())
11172        }
11173    }
11174
11175    impl fidl::encoding::ValueTypeMarker for AggregateMember {
11176        type Borrowed<'a> = &'a Self;
11177        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11178            value
11179        }
11180    }
11181
11182    unsafe impl fidl::encoding::TypeMarker for AggregateMember {
11183        type Owned = Self;
11184
11185        #[inline(always)]
11186        fn inline_align(_context: fidl::encoding::Context) -> usize {
11187            8
11188        }
11189
11190        #[inline(always)]
11191        fn inline_size(_context: fidl::encoding::Context) -> usize {
11192            16
11193        }
11194    }
11195
11196    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregateMember, D>
11197        for &AggregateMember
11198    {
11199        #[inline]
11200        unsafe fn encode(
11201            self,
11202            encoder: &mut fidl::encoding::Encoder<'_, D>,
11203            offset: usize,
11204            _depth: fidl::encoding::Depth,
11205        ) -> fidl::Result<()> {
11206            encoder.debug_check_bounds::<AggregateMember>(offset);
11207            encoder.write_num::<u64>(self.ordinal(), offset);
11208            match self {
11209            AggregateMember::Child(ref val) => {
11210                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ChildRef, D>(
11211                    <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11212                    encoder, offset + 8, _depth
11213                )
11214            }
11215            AggregateMember::Collection(ref val) => {
11216                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<100>, D>(
11217                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(val),
11218                    encoder, offset + 8, _depth
11219                )
11220            }
11221            AggregateMember::Parent(ref val) => {
11222                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::ParentRef, D>(
11223                    <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11224                    encoder, offset + 8, _depth
11225                )
11226            }
11227            AggregateMember::Self_(ref val) => {
11228                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::SelfRef, D>(
11229                    <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::ValueTypeMarker>::borrow(val),
11230                    encoder, offset + 8, _depth
11231                )
11232            }
11233        }
11234        }
11235    }
11236
11237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregateMember {
11238        #[inline(always)]
11239        fn new_empty() -> Self {
11240            Self::Child(fidl::new_empty!(fidl_fuchsia_component_decl__common::ChildRef, D))
11241        }
11242
11243        #[inline]
11244        unsafe fn decode(
11245            &mut self,
11246            decoder: &mut fidl::encoding::Decoder<'_, D>,
11247            offset: usize,
11248            mut depth: fidl::encoding::Depth,
11249        ) -> fidl::Result<()> {
11250            decoder.debug_check_bounds::<Self>(offset);
11251            #[allow(unused_variables)]
11252            let next_out_of_line = decoder.next_out_of_line();
11253            let handles_before = decoder.remaining_handles();
11254            let (ordinal, inlined, num_bytes, num_handles) =
11255                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11256
11257            let member_inline_size = match ordinal {
11258            1 => <fidl_fuchsia_component_decl__common::ChildRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11259            2 => <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11260            3 => <fidl_fuchsia_component_decl__common::ParentRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11261            4 => <fidl_fuchsia_component_decl__common::SelfRef as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11262            _ => return Err(fidl::Error::UnknownUnionTag),
11263        };
11264
11265            if inlined != (member_inline_size <= 4) {
11266                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11267            }
11268            let _inner_offset;
11269            if inlined {
11270                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11271                _inner_offset = offset + 8;
11272            } else {
11273                depth.increment()?;
11274                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11275            }
11276            match ordinal {
11277                1 => {
11278                    #[allow(irrefutable_let_patterns)]
11279                    if let AggregateMember::Child(_) = self {
11280                        // Do nothing, read the value into the object
11281                    } else {
11282                        // Initialize `self` to the right variant
11283                        *self = AggregateMember::Child(fidl::new_empty!(
11284                            fidl_fuchsia_component_decl__common::ChildRef,
11285                            D
11286                        ));
11287                    }
11288                    #[allow(irrefutable_let_patterns)]
11289                    if let AggregateMember::Child(ref mut val) = self {
11290                        fidl::decode!(
11291                            fidl_fuchsia_component_decl__common::ChildRef,
11292                            D,
11293                            val,
11294                            decoder,
11295                            _inner_offset,
11296                            depth
11297                        )?;
11298                    } else {
11299                        unreachable!()
11300                    }
11301                }
11302                2 => {
11303                    #[allow(irrefutable_let_patterns)]
11304                    if let AggregateMember::Collection(_) = self {
11305                        // Do nothing, read the value into the object
11306                    } else {
11307                        // Initialize `self` to the right variant
11308                        *self = AggregateMember::Collection(fidl::new_empty!(
11309                            fidl::encoding::BoundedString<100>,
11310                            D
11311                        ));
11312                    }
11313                    #[allow(irrefutable_let_patterns)]
11314                    if let AggregateMember::Collection(ref mut val) = self {
11315                        fidl::decode!(
11316                            fidl::encoding::BoundedString<100>,
11317                            D,
11318                            val,
11319                            decoder,
11320                            _inner_offset,
11321                            depth
11322                        )?;
11323                    } else {
11324                        unreachable!()
11325                    }
11326                }
11327                3 => {
11328                    #[allow(irrefutable_let_patterns)]
11329                    if let AggregateMember::Parent(_) = self {
11330                        // Do nothing, read the value into the object
11331                    } else {
11332                        // Initialize `self` to the right variant
11333                        *self = AggregateMember::Parent(fidl::new_empty!(
11334                            fidl_fuchsia_component_decl__common::ParentRef,
11335                            D
11336                        ));
11337                    }
11338                    #[allow(irrefutable_let_patterns)]
11339                    if let AggregateMember::Parent(ref mut val) = self {
11340                        fidl::decode!(
11341                            fidl_fuchsia_component_decl__common::ParentRef,
11342                            D,
11343                            val,
11344                            decoder,
11345                            _inner_offset,
11346                            depth
11347                        )?;
11348                    } else {
11349                        unreachable!()
11350                    }
11351                }
11352                4 => {
11353                    #[allow(irrefutable_let_patterns)]
11354                    if let AggregateMember::Self_(_) = self {
11355                        // Do nothing, read the value into the object
11356                    } else {
11357                        // Initialize `self` to the right variant
11358                        *self = AggregateMember::Self_(fidl::new_empty!(
11359                            fidl_fuchsia_component_decl__common::SelfRef,
11360                            D
11361                        ));
11362                    }
11363                    #[allow(irrefutable_let_patterns)]
11364                    if let AggregateMember::Self_(ref mut val) = self {
11365                        fidl::decode!(
11366                            fidl_fuchsia_component_decl__common::SelfRef,
11367                            D,
11368                            val,
11369                            decoder,
11370                            _inner_offset,
11371                            depth
11372                        )?;
11373                    } else {
11374                        unreachable!()
11375                    }
11376                }
11377                ordinal => panic!("unexpected ordinal {:?}", ordinal),
11378            }
11379            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11380                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11381            }
11382            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11383                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11384            }
11385            Ok(())
11386        }
11387    }
11388
11389    impl fidl::encoding::ValueTypeMarker for AllowlistedCapability {
11390        type Borrowed<'a> = &'a Self;
11391        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11392            value
11393        }
11394    }
11395
11396    unsafe impl fidl::encoding::TypeMarker for AllowlistedCapability {
11397        type Owned = Self;
11398
11399        #[inline(always)]
11400        fn inline_align(_context: fidl::encoding::Context) -> usize {
11401            8
11402        }
11403
11404        #[inline(always)]
11405        fn inline_size(_context: fidl::encoding::Context) -> usize {
11406            16
11407        }
11408    }
11409
11410    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedCapability, D>
11411        for &AllowlistedCapability
11412    {
11413        #[inline]
11414        unsafe fn encode(
11415            self,
11416            encoder: &mut fidl::encoding::Encoder<'_, D>,
11417            offset: usize,
11418            _depth: fidl::encoding::Depth,
11419        ) -> fidl::Result<()> {
11420            encoder.debug_check_bounds::<AllowlistedCapability>(offset);
11421            encoder.write_num::<u64>(self.ordinal(), offset);
11422            match self {
11423                AllowlistedCapability::Directory(ref val) => {
11424                    fidl::encoding::encode_in_envelope::<AllowlistedDirectory, D>(
11425                        <AllowlistedDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
11426                        encoder,
11427                        offset + 8,
11428                        _depth,
11429                    )
11430                }
11431                AllowlistedCapability::Protocol(ref val) => {
11432                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
11433                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
11434                        encoder,
11435                        offset + 8,
11436                        _depth,
11437                    )
11438                }
11439                AllowlistedCapability::Service(ref val) => {
11440                    fidl::encoding::encode_in_envelope::<AllowlistedService, D>(
11441                        <AllowlistedService as fidl::encoding::ValueTypeMarker>::borrow(val),
11442                        encoder,
11443                        offset + 8,
11444                        _depth,
11445                    )
11446                }
11447                AllowlistedCapability::Storage(ref val) => {
11448                    fidl::encoding::encode_in_envelope::<AllowlistedStorage, D>(
11449                        <AllowlistedStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
11450                        encoder,
11451                        offset + 8,
11452                        _depth,
11453                    )
11454                }
11455                AllowlistedCapability::Runner(ref val) => {
11456                    fidl::encoding::encode_in_envelope::<AllowlistedRunner, D>(
11457                        <AllowlistedRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
11458                        encoder,
11459                        offset + 8,
11460                        _depth,
11461                    )
11462                }
11463                AllowlistedCapability::Resolver(ref val) => {
11464                    fidl::encoding::encode_in_envelope::<AllowlistedResolver, D>(
11465                        <AllowlistedResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
11466                        encoder,
11467                        offset + 8,
11468                        _depth,
11469                    )
11470                }
11471                AllowlistedCapability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
11472            }
11473        }
11474    }
11475
11476    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedCapability {
11477        #[inline(always)]
11478        fn new_empty() -> Self {
11479            Self::__SourceBreaking { unknown_ordinal: 0 }
11480        }
11481
11482        #[inline]
11483        unsafe fn decode(
11484            &mut self,
11485            decoder: &mut fidl::encoding::Decoder<'_, D>,
11486            offset: usize,
11487            mut depth: fidl::encoding::Depth,
11488        ) -> fidl::Result<()> {
11489            decoder.debug_check_bounds::<Self>(offset);
11490            #[allow(unused_variables)]
11491            let next_out_of_line = decoder.next_out_of_line();
11492            let handles_before = decoder.remaining_handles();
11493            let (ordinal, inlined, num_bytes, num_handles) =
11494                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11495
11496            let member_inline_size = match ordinal {
11497                1 => <AllowlistedDirectory as fidl::encoding::TypeMarker>::inline_size(
11498                    decoder.context,
11499                ),
11500                3 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
11501                    decoder.context,
11502                ),
11503                4 => {
11504                    <AllowlistedService as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11505                }
11506                5 => {
11507                    <AllowlistedStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11508                }
11509                6 => {
11510                    <AllowlistedRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context)
11511                }
11512                7 => <AllowlistedResolver as fidl::encoding::TypeMarker>::inline_size(
11513                    decoder.context,
11514                ),
11515                0 => return Err(fidl::Error::UnknownUnionTag),
11516                _ => num_bytes as usize,
11517            };
11518
11519            if inlined != (member_inline_size <= 4) {
11520                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11521            }
11522            let _inner_offset;
11523            if inlined {
11524                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11525                _inner_offset = offset + 8;
11526            } else {
11527                depth.increment()?;
11528                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11529            }
11530            match ordinal {
11531                1 => {
11532                    #[allow(irrefutable_let_patterns)]
11533                    if let AllowlistedCapability::Directory(_) = self {
11534                        // Do nothing, read the value into the object
11535                    } else {
11536                        // Initialize `self` to the right variant
11537                        *self = AllowlistedCapability::Directory(fidl::new_empty!(
11538                            AllowlistedDirectory,
11539                            D
11540                        ));
11541                    }
11542                    #[allow(irrefutable_let_patterns)]
11543                    if let AllowlistedCapability::Directory(ref mut val) = self {
11544                        fidl::decode!(AllowlistedDirectory, D, val, decoder, _inner_offset, depth)?;
11545                    } else {
11546                        unreachable!()
11547                    }
11548                }
11549                3 => {
11550                    #[allow(irrefutable_let_patterns)]
11551                    if let AllowlistedCapability::Protocol(_) = self {
11552                        // Do nothing, read the value into the object
11553                    } else {
11554                        // Initialize `self` to the right variant
11555                        *self = AllowlistedCapability::Protocol(fidl::new_empty!(
11556                            AllowlistedProtocol,
11557                            D
11558                        ));
11559                    }
11560                    #[allow(irrefutable_let_patterns)]
11561                    if let AllowlistedCapability::Protocol(ref mut val) = self {
11562                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
11563                    } else {
11564                        unreachable!()
11565                    }
11566                }
11567                4 => {
11568                    #[allow(irrefutable_let_patterns)]
11569                    if let AllowlistedCapability::Service(_) = self {
11570                        // Do nothing, read the value into the object
11571                    } else {
11572                        // Initialize `self` to the right variant
11573                        *self =
11574                            AllowlistedCapability::Service(fidl::new_empty!(AllowlistedService, D));
11575                    }
11576                    #[allow(irrefutable_let_patterns)]
11577                    if let AllowlistedCapability::Service(ref mut val) = self {
11578                        fidl::decode!(AllowlistedService, D, val, decoder, _inner_offset, depth)?;
11579                    } else {
11580                        unreachable!()
11581                    }
11582                }
11583                5 => {
11584                    #[allow(irrefutable_let_patterns)]
11585                    if let AllowlistedCapability::Storage(_) = self {
11586                        // Do nothing, read the value into the object
11587                    } else {
11588                        // Initialize `self` to the right variant
11589                        *self =
11590                            AllowlistedCapability::Storage(fidl::new_empty!(AllowlistedStorage, D));
11591                    }
11592                    #[allow(irrefutable_let_patterns)]
11593                    if let AllowlistedCapability::Storage(ref mut val) = self {
11594                        fidl::decode!(AllowlistedStorage, D, val, decoder, _inner_offset, depth)?;
11595                    } else {
11596                        unreachable!()
11597                    }
11598                }
11599                6 => {
11600                    #[allow(irrefutable_let_patterns)]
11601                    if let AllowlistedCapability::Runner(_) = self {
11602                        // Do nothing, read the value into the object
11603                    } else {
11604                        // Initialize `self` to the right variant
11605                        *self =
11606                            AllowlistedCapability::Runner(fidl::new_empty!(AllowlistedRunner, D));
11607                    }
11608                    #[allow(irrefutable_let_patterns)]
11609                    if let AllowlistedCapability::Runner(ref mut val) = self {
11610                        fidl::decode!(AllowlistedRunner, D, val, decoder, _inner_offset, depth)?;
11611                    } else {
11612                        unreachable!()
11613                    }
11614                }
11615                7 => {
11616                    #[allow(irrefutable_let_patterns)]
11617                    if let AllowlistedCapability::Resolver(_) = self {
11618                        // Do nothing, read the value into the object
11619                    } else {
11620                        // Initialize `self` to the right variant
11621                        *self = AllowlistedCapability::Resolver(fidl::new_empty!(
11622                            AllowlistedResolver,
11623                            D
11624                        ));
11625                    }
11626                    #[allow(irrefutable_let_patterns)]
11627                    if let AllowlistedCapability::Resolver(ref mut val) = self {
11628                        fidl::decode!(AllowlistedResolver, D, val, decoder, _inner_offset, depth)?;
11629                    } else {
11630                        unreachable!()
11631                    }
11632                }
11633                #[allow(deprecated)]
11634                ordinal => {
11635                    for _ in 0..num_handles {
11636                        decoder.drop_next_handle()?;
11637                    }
11638                    *self = AllowlistedCapability::__SourceBreaking { unknown_ordinal: ordinal };
11639                }
11640            }
11641            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11642                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11643            }
11644            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11645                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11646            }
11647            Ok(())
11648        }
11649    }
11650
11651    impl fidl::encoding::ValueTypeMarker for AllowlistedDebugRegistration {
11652        type Borrowed<'a> = &'a Self;
11653        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11654            value
11655        }
11656    }
11657
11658    unsafe impl fidl::encoding::TypeMarker for AllowlistedDebugRegistration {
11659        type Owned = Self;
11660
11661        #[inline(always)]
11662        fn inline_align(_context: fidl::encoding::Context) -> usize {
11663            8
11664        }
11665
11666        #[inline(always)]
11667        fn inline_size(_context: fidl::encoding::Context) -> usize {
11668            16
11669        }
11670    }
11671
11672    unsafe impl<D: fidl::encoding::ResourceDialect>
11673        fidl::encoding::Encode<AllowlistedDebugRegistration, D> for &AllowlistedDebugRegistration
11674    {
11675        #[inline]
11676        unsafe fn encode(
11677            self,
11678            encoder: &mut fidl::encoding::Encoder<'_, D>,
11679            offset: usize,
11680            _depth: fidl::encoding::Depth,
11681        ) -> fidl::Result<()> {
11682            encoder.debug_check_bounds::<AllowlistedDebugRegistration>(offset);
11683            encoder.write_num::<u64>(self.ordinal(), offset);
11684            match self {
11685                AllowlistedDebugRegistration::Protocol(ref val) => {
11686                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
11687                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
11688                        encoder,
11689                        offset + 8,
11690                        _depth,
11691                    )
11692                }
11693                AllowlistedDebugRegistration::__SourceBreaking { .. } => {
11694                    Err(fidl::Error::UnknownUnionTag)
11695                }
11696            }
11697        }
11698    }
11699
11700    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11701        for AllowlistedDebugRegistration
11702    {
11703        #[inline(always)]
11704        fn new_empty() -> Self {
11705            Self::__SourceBreaking { unknown_ordinal: 0 }
11706        }
11707
11708        #[inline]
11709        unsafe fn decode(
11710            &mut self,
11711            decoder: &mut fidl::encoding::Decoder<'_, D>,
11712            offset: usize,
11713            mut depth: fidl::encoding::Depth,
11714        ) -> fidl::Result<()> {
11715            decoder.debug_check_bounds::<Self>(offset);
11716            #[allow(unused_variables)]
11717            let next_out_of_line = decoder.next_out_of_line();
11718            let handles_before = decoder.remaining_handles();
11719            let (ordinal, inlined, num_bytes, num_handles) =
11720                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11721
11722            let member_inline_size = match ordinal {
11723                1 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
11724                    decoder.context,
11725                ),
11726                0 => return Err(fidl::Error::UnknownUnionTag),
11727                _ => num_bytes as usize,
11728            };
11729
11730            if inlined != (member_inline_size <= 4) {
11731                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11732            }
11733            let _inner_offset;
11734            if inlined {
11735                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11736                _inner_offset = offset + 8;
11737            } else {
11738                depth.increment()?;
11739                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11740            }
11741            match ordinal {
11742                1 => {
11743                    #[allow(irrefutable_let_patterns)]
11744                    if let AllowlistedDebugRegistration::Protocol(_) = self {
11745                        // Do nothing, read the value into the object
11746                    } else {
11747                        // Initialize `self` to the right variant
11748                        *self = AllowlistedDebugRegistration::Protocol(fidl::new_empty!(
11749                            AllowlistedProtocol,
11750                            D
11751                        ));
11752                    }
11753                    #[allow(irrefutable_let_patterns)]
11754                    if let AllowlistedDebugRegistration::Protocol(ref mut val) = self {
11755                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
11756                    } else {
11757                        unreachable!()
11758                    }
11759                }
11760                #[allow(deprecated)]
11761                ordinal => {
11762                    for _ in 0..num_handles {
11763                        decoder.drop_next_handle()?;
11764                    }
11765                    *self =
11766                        AllowlistedDebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
11767                }
11768            }
11769            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
11770                return Err(fidl::Error::InvalidNumBytesInEnvelope);
11771            }
11772            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11773                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11774            }
11775            Ok(())
11776        }
11777    }
11778
11779    impl fidl::encoding::ValueTypeMarker for CapabilitySource {
11780        type Borrowed<'a> = &'a Self;
11781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11782            value
11783        }
11784    }
11785
11786    unsafe impl fidl::encoding::TypeMarker for CapabilitySource {
11787        type Owned = Self;
11788
11789        #[inline(always)]
11790        fn inline_align(_context: fidl::encoding::Context) -> usize {
11791            8
11792        }
11793
11794        #[inline(always)]
11795        fn inline_size(_context: fidl::encoding::Context) -> usize {
11796            16
11797        }
11798    }
11799
11800    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapabilitySource, D>
11801        for &CapabilitySource
11802    {
11803        #[inline]
11804        unsafe fn encode(
11805            self,
11806            encoder: &mut fidl::encoding::Encoder<'_, D>,
11807            offset: usize,
11808            _depth: fidl::encoding::Depth,
11809        ) -> fidl::Result<()> {
11810            encoder.debug_check_bounds::<CapabilitySource>(offset);
11811            encoder.write_num::<u64>(self.ordinal(), offset);
11812            match self {
11813            CapabilitySource::Component(ref val) => {
11814                fidl::encoding::encode_in_envelope::<Component, D>(
11815                    <Component as fidl::encoding::ValueTypeMarker>::borrow(val),
11816                    encoder, offset + 8, _depth
11817                )
11818            }
11819            CapabilitySource::Framework(ref val) => {
11820                fidl::encoding::encode_in_envelope::<Framework, D>(
11821                    <Framework as fidl::encoding::ValueTypeMarker>::borrow(val),
11822                    encoder, offset + 8, _depth
11823                )
11824            }
11825            CapabilitySource::Builtin(ref val) => {
11826                fidl::encoding::encode_in_envelope::<Builtin, D>(
11827                    <Builtin as fidl::encoding::ValueTypeMarker>::borrow(val),
11828                    encoder, offset + 8, _depth
11829                )
11830            }
11831            CapabilitySource::Namespace(ref val) => {
11832                fidl::encoding::encode_in_envelope::<Namespace, D>(
11833                    <Namespace as fidl::encoding::ValueTypeMarker>::borrow(val),
11834                    encoder, offset + 8, _depth
11835                )
11836            }
11837            CapabilitySource::Capability(ref val) => {
11838                fidl::encoding::encode_in_envelope::<Capability, D>(
11839                    <Capability as fidl::encoding::ValueTypeMarker>::borrow(val),
11840                    encoder, offset + 8, _depth
11841                )
11842            }
11843            CapabilitySource::AnonymizedAggregate(ref val) => {
11844                fidl::encoding::encode_in_envelope::<AnonymizedAggregate, D>(
11845                    <AnonymizedAggregate as fidl::encoding::ValueTypeMarker>::borrow(val),
11846                    encoder, offset + 8, _depth
11847                )
11848            }
11849            CapabilitySource::FilteredProvider(ref val) => {
11850                fidl::encoding::encode_in_envelope::<FilteredProvider, D>(
11851                    <FilteredProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11852                    encoder, offset + 8, _depth
11853                )
11854            }
11855            CapabilitySource::FilteredAggregateProvider(ref val) => {
11856                fidl::encoding::encode_in_envelope::<FilteredAggregateProvider, D>(
11857                    <FilteredAggregateProvider as fidl::encoding::ValueTypeMarker>::borrow(val),
11858                    encoder, offset + 8, _depth
11859                )
11860            }
11861            CapabilitySource::Environment(ref val) => {
11862                fidl::encoding::encode_in_envelope::<Environment, D>(
11863                    <Environment as fidl::encoding::ValueTypeMarker>::borrow(val),
11864                    encoder, offset + 8, _depth
11865                )
11866            }
11867            CapabilitySource::Void(ref val) => {
11868                fidl::encoding::encode_in_envelope::<Void, D>(
11869                    <Void as fidl::encoding::ValueTypeMarker>::borrow(val),
11870                    encoder, offset + 8, _depth
11871                )
11872            }
11873            CapabilitySource::RemotedAt(ref val) => {
11874                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, D>(
11875                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
11876                    encoder, offset + 8, _depth
11877                )
11878            }
11879        }
11880        }
11881    }
11882
11883    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapabilitySource {
11884        #[inline(always)]
11885        fn new_empty() -> Self {
11886            Self::Component(fidl::new_empty!(Component, D))
11887        }
11888
11889        #[inline]
11890        unsafe fn decode(
11891            &mut self,
11892            decoder: &mut fidl::encoding::Decoder<'_, D>,
11893            offset: usize,
11894            mut depth: fidl::encoding::Depth,
11895        ) -> fidl::Result<()> {
11896            decoder.debug_check_bounds::<Self>(offset);
11897            #[allow(unused_variables)]
11898            let next_out_of_line = decoder.next_out_of_line();
11899            let handles_before = decoder.remaining_handles();
11900            let (ordinal, inlined, num_bytes, num_handles) =
11901                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
11902
11903            let member_inline_size = match ordinal {
11904                1 => <Component as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11905                2 => <Framework as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11906                3 => <Builtin as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11907                4 => <Namespace as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11908                5 => <Capability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11909                6 => <AnonymizedAggregate as fidl::encoding::TypeMarker>::inline_size(
11910                    decoder.context,
11911                ),
11912                7 => <FilteredProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11913                8 => <FilteredAggregateProvider as fidl::encoding::TypeMarker>::inline_size(
11914                    decoder.context,
11915                ),
11916                9 => <Environment as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11917                10 => <Void as fidl::encoding::TypeMarker>::inline_size(decoder.context),
11918                11 => {
11919                    <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
11920                        decoder.context,
11921                    )
11922                }
11923                _ => return Err(fidl::Error::UnknownUnionTag),
11924            };
11925
11926            if inlined != (member_inline_size <= 4) {
11927                return Err(fidl::Error::InvalidInlineBitInEnvelope);
11928            }
11929            let _inner_offset;
11930            if inlined {
11931                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
11932                _inner_offset = offset + 8;
11933            } else {
11934                depth.increment()?;
11935                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11936            }
11937            match ordinal {
11938                1 => {
11939                    #[allow(irrefutable_let_patterns)]
11940                    if let CapabilitySource::Component(_) = self {
11941                        // Do nothing, read the value into the object
11942                    } else {
11943                        // Initialize `self` to the right variant
11944                        *self = CapabilitySource::Component(fidl::new_empty!(Component, D));
11945                    }
11946                    #[allow(irrefutable_let_patterns)]
11947                    if let CapabilitySource::Component(ref mut val) = self {
11948                        fidl::decode!(Component, D, val, decoder, _inner_offset, depth)?;
11949                    } else {
11950                        unreachable!()
11951                    }
11952                }
11953                2 => {
11954                    #[allow(irrefutable_let_patterns)]
11955                    if let CapabilitySource::Framework(_) = self {
11956                        // Do nothing, read the value into the object
11957                    } else {
11958                        // Initialize `self` to the right variant
11959                        *self = CapabilitySource::Framework(fidl::new_empty!(Framework, D));
11960                    }
11961                    #[allow(irrefutable_let_patterns)]
11962                    if let CapabilitySource::Framework(ref mut val) = self {
11963                        fidl::decode!(Framework, D, val, decoder, _inner_offset, depth)?;
11964                    } else {
11965                        unreachable!()
11966                    }
11967                }
11968                3 => {
11969                    #[allow(irrefutable_let_patterns)]
11970                    if let CapabilitySource::Builtin(_) = self {
11971                        // Do nothing, read the value into the object
11972                    } else {
11973                        // Initialize `self` to the right variant
11974                        *self = CapabilitySource::Builtin(fidl::new_empty!(Builtin, D));
11975                    }
11976                    #[allow(irrefutable_let_patterns)]
11977                    if let CapabilitySource::Builtin(ref mut val) = self {
11978                        fidl::decode!(Builtin, D, val, decoder, _inner_offset, depth)?;
11979                    } else {
11980                        unreachable!()
11981                    }
11982                }
11983                4 => {
11984                    #[allow(irrefutable_let_patterns)]
11985                    if let CapabilitySource::Namespace(_) = self {
11986                        // Do nothing, read the value into the object
11987                    } else {
11988                        // Initialize `self` to the right variant
11989                        *self = CapabilitySource::Namespace(fidl::new_empty!(Namespace, D));
11990                    }
11991                    #[allow(irrefutable_let_patterns)]
11992                    if let CapabilitySource::Namespace(ref mut val) = self {
11993                        fidl::decode!(Namespace, D, val, decoder, _inner_offset, depth)?;
11994                    } else {
11995                        unreachable!()
11996                    }
11997                }
11998                5 => {
11999                    #[allow(irrefutable_let_patterns)]
12000                    if let CapabilitySource::Capability(_) = self {
12001                        // Do nothing, read the value into the object
12002                    } else {
12003                        // Initialize `self` to the right variant
12004                        *self = CapabilitySource::Capability(fidl::new_empty!(Capability, D));
12005                    }
12006                    #[allow(irrefutable_let_patterns)]
12007                    if let CapabilitySource::Capability(ref mut val) = self {
12008                        fidl::decode!(Capability, D, val, decoder, _inner_offset, depth)?;
12009                    } else {
12010                        unreachable!()
12011                    }
12012                }
12013                6 => {
12014                    #[allow(irrefutable_let_patterns)]
12015                    if let CapabilitySource::AnonymizedAggregate(_) = self {
12016                        // Do nothing, read the value into the object
12017                    } else {
12018                        // Initialize `self` to the right variant
12019                        *self = CapabilitySource::AnonymizedAggregate(fidl::new_empty!(
12020                            AnonymizedAggregate,
12021                            D
12022                        ));
12023                    }
12024                    #[allow(irrefutable_let_patterns)]
12025                    if let CapabilitySource::AnonymizedAggregate(ref mut val) = self {
12026                        fidl::decode!(AnonymizedAggregate, D, val, decoder, _inner_offset, depth)?;
12027                    } else {
12028                        unreachable!()
12029                    }
12030                }
12031                7 => {
12032                    #[allow(irrefutable_let_patterns)]
12033                    if let CapabilitySource::FilteredProvider(_) = self {
12034                        // Do nothing, read the value into the object
12035                    } else {
12036                        // Initialize `self` to the right variant
12037                        *self = CapabilitySource::FilteredProvider(fidl::new_empty!(
12038                            FilteredProvider,
12039                            D
12040                        ));
12041                    }
12042                    #[allow(irrefutable_let_patterns)]
12043                    if let CapabilitySource::FilteredProvider(ref mut val) = self {
12044                        fidl::decode!(FilteredProvider, D, val, decoder, _inner_offset, depth)?;
12045                    } else {
12046                        unreachable!()
12047                    }
12048                }
12049                8 => {
12050                    #[allow(irrefutable_let_patterns)]
12051                    if let CapabilitySource::FilteredAggregateProvider(_) = self {
12052                        // Do nothing, read the value into the object
12053                    } else {
12054                        // Initialize `self` to the right variant
12055                        *self = CapabilitySource::FilteredAggregateProvider(fidl::new_empty!(
12056                            FilteredAggregateProvider,
12057                            D
12058                        ));
12059                    }
12060                    #[allow(irrefutable_let_patterns)]
12061                    if let CapabilitySource::FilteredAggregateProvider(ref mut val) = self {
12062                        fidl::decode!(
12063                            FilteredAggregateProvider,
12064                            D,
12065                            val,
12066                            decoder,
12067                            _inner_offset,
12068                            depth
12069                        )?;
12070                    } else {
12071                        unreachable!()
12072                    }
12073                }
12074                9 => {
12075                    #[allow(irrefutable_let_patterns)]
12076                    if let CapabilitySource::Environment(_) = self {
12077                        // Do nothing, read the value into the object
12078                    } else {
12079                        // Initialize `self` to the right variant
12080                        *self = CapabilitySource::Environment(fidl::new_empty!(Environment, D));
12081                    }
12082                    #[allow(irrefutable_let_patterns)]
12083                    if let CapabilitySource::Environment(ref mut val) = self {
12084                        fidl::decode!(Environment, D, val, decoder, _inner_offset, depth)?;
12085                    } else {
12086                        unreachable!()
12087                    }
12088                }
12089                10 => {
12090                    #[allow(irrefutable_let_patterns)]
12091                    if let CapabilitySource::Void(_) = self {
12092                        // Do nothing, read the value into the object
12093                    } else {
12094                        // Initialize `self` to the right variant
12095                        *self = CapabilitySource::Void(fidl::new_empty!(Void, D));
12096                    }
12097                    #[allow(irrefutable_let_patterns)]
12098                    if let CapabilitySource::Void(ref mut val) = self {
12099                        fidl::decode!(Void, D, val, decoder, _inner_offset, depth)?;
12100                    } else {
12101                        unreachable!()
12102                    }
12103                }
12104                11 => {
12105                    #[allow(irrefutable_let_patterns)]
12106                    if let CapabilitySource::RemotedAt(_) = self {
12107                        // Do nothing, read the value into the object
12108                    } else {
12109                        // Initialize `self` to the right variant
12110                        *self = CapabilitySource::RemotedAt(fidl::new_empty!(
12111                            fidl::encoding::BoundedString<4096>,
12112                            D
12113                        ));
12114                    }
12115                    #[allow(irrefutable_let_patterns)]
12116                    if let CapabilitySource::RemotedAt(ref mut val) = self {
12117                        fidl::decode!(
12118                            fidl::encoding::BoundedString<4096>,
12119                            D,
12120                            val,
12121                            decoder,
12122                            _inner_offset,
12123                            depth
12124                        )?;
12125                    } else {
12126                        unreachable!()
12127                    }
12128                }
12129                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12130            }
12131            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12132                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12133            }
12134            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12135                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12136            }
12137            Ok(())
12138        }
12139    }
12140
12141    impl fidl::encoding::ValueTypeMarker for ComponentCapability {
12142        type Borrowed<'a> = &'a Self;
12143        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12144            value
12145        }
12146    }
12147
12148    unsafe impl fidl::encoding::TypeMarker for ComponentCapability {
12149        type Owned = Self;
12150
12151        #[inline(always)]
12152        fn inline_align(_context: fidl::encoding::Context) -> usize {
12153            8
12154        }
12155
12156        #[inline(always)]
12157        fn inline_size(_context: fidl::encoding::Context) -> usize {
12158            16
12159        }
12160    }
12161
12162    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentCapability, D>
12163        for &ComponentCapability
12164    {
12165        #[inline]
12166        unsafe fn encode(
12167            self,
12168            encoder: &mut fidl::encoding::Encoder<'_, D>,
12169            offset: usize,
12170            _depth: fidl::encoding::Depth,
12171        ) -> fidl::Result<()> {
12172            encoder.debug_check_bounds::<ComponentCapability>(offset);
12173            encoder.write_num::<u64>(self.ordinal(), offset);
12174            match self {
12175            ComponentCapability::Use_(ref val) => {
12176                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Use, D>(
12177                    <fidl_fuchsia_component_decl__common::Use as fidl::encoding::ValueTypeMarker>::borrow(val),
12178                    encoder, offset + 8, _depth
12179                )
12180            }
12181            ComponentCapability::Offer(ref val) => {
12182                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
12183                    <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
12184                    encoder, offset + 8, _depth
12185                )
12186            }
12187            ComponentCapability::Expose(ref val) => {
12188                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Expose, D>(
12189                    <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::ValueTypeMarker>::borrow(val),
12190                    encoder, offset + 8, _depth
12191                )
12192            }
12193            ComponentCapability::Config(ref val) => {
12194                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Configuration, D>(
12195                    <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::ValueTypeMarker>::borrow(val),
12196                    encoder, offset + 8, _depth
12197                )
12198            }
12199            ComponentCapability::Dictionary(ref val) => {
12200                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Dictionary, D>(
12201                    <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::ValueTypeMarker>::borrow(val),
12202                    encoder, offset + 8, _depth
12203                )
12204            }
12205            ComponentCapability::Directory(ref val) => {
12206                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Directory, D>(
12207                    <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::ValueTypeMarker>::borrow(val),
12208                    encoder, offset + 8, _depth
12209                )
12210            }
12211            ComponentCapability::Environment(ref val) => {
12212                fidl::encoding::encode_in_envelope::<EnvironmentCapability, D>(
12213                    <EnvironmentCapability as fidl::encoding::ValueTypeMarker>::borrow(val),
12214                    encoder, offset + 8, _depth
12215                )
12216            }
12217            ComponentCapability::EventStream(ref val) => {
12218                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::EventStream, D>(
12219                    <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::ValueTypeMarker>::borrow(val),
12220                    encoder, offset + 8, _depth
12221                )
12222            }
12223            ComponentCapability::Protocol(ref val) => {
12224                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Protocol, D>(
12225                    <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::ValueTypeMarker>::borrow(val),
12226                    encoder, offset + 8, _depth
12227                )
12228            }
12229            ComponentCapability::Resolver(ref val) => {
12230                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Resolver, D>(
12231                    <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::ValueTypeMarker>::borrow(val),
12232                    encoder, offset + 8, _depth
12233                )
12234            }
12235            ComponentCapability::Runner(ref val) => {
12236                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Runner, D>(
12237                    <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::ValueTypeMarker>::borrow(val),
12238                    encoder, offset + 8, _depth
12239                )
12240            }
12241            ComponentCapability::Service(ref val) => {
12242                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Service, D>(
12243                    <fidl_fuchsia_component_decl__common::Service as fidl::encoding::ValueTypeMarker>::borrow(val),
12244                    encoder, offset + 8, _depth
12245                )
12246            }
12247            ComponentCapability::Storage(ref val) => {
12248                fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Storage, D>(
12249                    <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::ValueTypeMarker>::borrow(val),
12250                    encoder, offset + 8, _depth
12251                )
12252            }
12253        }
12254        }
12255    }
12256
12257    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentCapability {
12258        #[inline(always)]
12259        fn new_empty() -> Self {
12260            Self::Use_(fidl::new_empty!(fidl_fuchsia_component_decl__common::Use, D))
12261        }
12262
12263        #[inline]
12264        unsafe fn decode(
12265            &mut self,
12266            decoder: &mut fidl::encoding::Decoder<'_, D>,
12267            offset: usize,
12268            mut depth: fidl::encoding::Depth,
12269        ) -> fidl::Result<()> {
12270            decoder.debug_check_bounds::<Self>(offset);
12271            #[allow(unused_variables)]
12272            let next_out_of_line = decoder.next_out_of_line();
12273            let handles_before = decoder.remaining_handles();
12274            let (ordinal, inlined, num_bytes, num_handles) =
12275                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12276
12277            let member_inline_size = match ordinal {
12278            1 => <fidl_fuchsia_component_decl__common::Use as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12279            2 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12280            3 => <fidl_fuchsia_component_decl__common::Expose as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12281            4 => <fidl_fuchsia_component_decl__common::Configuration as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12282            5 => <fidl_fuchsia_component_decl__common::Dictionary as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12283            6 => <fidl_fuchsia_component_decl__common::Directory as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12284            7 => <EnvironmentCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12285            8 => <fidl_fuchsia_component_decl__common::EventStream as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12286            9 => <fidl_fuchsia_component_decl__common::Protocol as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12287            10 => <fidl_fuchsia_component_decl__common::Resolver as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12288            11 => <fidl_fuchsia_component_decl__common::Runner as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12289            12 => <fidl_fuchsia_component_decl__common::Service as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12290            13 => <fidl_fuchsia_component_decl__common::Storage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12291            _ => return Err(fidl::Error::UnknownUnionTag),
12292        };
12293
12294            if inlined != (member_inline_size <= 4) {
12295                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12296            }
12297            let _inner_offset;
12298            if inlined {
12299                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12300                _inner_offset = offset + 8;
12301            } else {
12302                depth.increment()?;
12303                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12304            }
12305            match ordinal {
12306                1 => {
12307                    #[allow(irrefutable_let_patterns)]
12308                    if let ComponentCapability::Use_(_) = self {
12309                        // Do nothing, read the value into the object
12310                    } else {
12311                        // Initialize `self` to the right variant
12312                        *self = ComponentCapability::Use_(fidl::new_empty!(
12313                            fidl_fuchsia_component_decl__common::Use,
12314                            D
12315                        ));
12316                    }
12317                    #[allow(irrefutable_let_patterns)]
12318                    if let ComponentCapability::Use_(ref mut val) = self {
12319                        fidl::decode!(
12320                            fidl_fuchsia_component_decl__common::Use,
12321                            D,
12322                            val,
12323                            decoder,
12324                            _inner_offset,
12325                            depth
12326                        )?;
12327                    } else {
12328                        unreachable!()
12329                    }
12330                }
12331                2 => {
12332                    #[allow(irrefutable_let_patterns)]
12333                    if let ComponentCapability::Offer(_) = self {
12334                        // Do nothing, read the value into the object
12335                    } else {
12336                        // Initialize `self` to the right variant
12337                        *self = ComponentCapability::Offer(fidl::new_empty!(
12338                            fidl_fuchsia_component_decl__common::Offer,
12339                            D
12340                        ));
12341                    }
12342                    #[allow(irrefutable_let_patterns)]
12343                    if let ComponentCapability::Offer(ref mut val) = self {
12344                        fidl::decode!(
12345                            fidl_fuchsia_component_decl__common::Offer,
12346                            D,
12347                            val,
12348                            decoder,
12349                            _inner_offset,
12350                            depth
12351                        )?;
12352                    } else {
12353                        unreachable!()
12354                    }
12355                }
12356                3 => {
12357                    #[allow(irrefutable_let_patterns)]
12358                    if let ComponentCapability::Expose(_) = self {
12359                        // Do nothing, read the value into the object
12360                    } else {
12361                        // Initialize `self` to the right variant
12362                        *self = ComponentCapability::Expose(fidl::new_empty!(
12363                            fidl_fuchsia_component_decl__common::Expose,
12364                            D
12365                        ));
12366                    }
12367                    #[allow(irrefutable_let_patterns)]
12368                    if let ComponentCapability::Expose(ref mut val) = self {
12369                        fidl::decode!(
12370                            fidl_fuchsia_component_decl__common::Expose,
12371                            D,
12372                            val,
12373                            decoder,
12374                            _inner_offset,
12375                            depth
12376                        )?;
12377                    } else {
12378                        unreachable!()
12379                    }
12380                }
12381                4 => {
12382                    #[allow(irrefutable_let_patterns)]
12383                    if let ComponentCapability::Config(_) = self {
12384                        // Do nothing, read the value into the object
12385                    } else {
12386                        // Initialize `self` to the right variant
12387                        *self = ComponentCapability::Config(fidl::new_empty!(
12388                            fidl_fuchsia_component_decl__common::Configuration,
12389                            D
12390                        ));
12391                    }
12392                    #[allow(irrefutable_let_patterns)]
12393                    if let ComponentCapability::Config(ref mut val) = self {
12394                        fidl::decode!(
12395                            fidl_fuchsia_component_decl__common::Configuration,
12396                            D,
12397                            val,
12398                            decoder,
12399                            _inner_offset,
12400                            depth
12401                        )?;
12402                    } else {
12403                        unreachable!()
12404                    }
12405                }
12406                5 => {
12407                    #[allow(irrefutable_let_patterns)]
12408                    if let ComponentCapability::Dictionary(_) = self {
12409                        // Do nothing, read the value into the object
12410                    } else {
12411                        // Initialize `self` to the right variant
12412                        *self = ComponentCapability::Dictionary(fidl::new_empty!(
12413                            fidl_fuchsia_component_decl__common::Dictionary,
12414                            D
12415                        ));
12416                    }
12417                    #[allow(irrefutable_let_patterns)]
12418                    if let ComponentCapability::Dictionary(ref mut val) = self {
12419                        fidl::decode!(
12420                            fidl_fuchsia_component_decl__common::Dictionary,
12421                            D,
12422                            val,
12423                            decoder,
12424                            _inner_offset,
12425                            depth
12426                        )?;
12427                    } else {
12428                        unreachable!()
12429                    }
12430                }
12431                6 => {
12432                    #[allow(irrefutable_let_patterns)]
12433                    if let ComponentCapability::Directory(_) = self {
12434                        // Do nothing, read the value into the object
12435                    } else {
12436                        // Initialize `self` to the right variant
12437                        *self = ComponentCapability::Directory(fidl::new_empty!(
12438                            fidl_fuchsia_component_decl__common::Directory,
12439                            D
12440                        ));
12441                    }
12442                    #[allow(irrefutable_let_patterns)]
12443                    if let ComponentCapability::Directory(ref mut val) = self {
12444                        fidl::decode!(
12445                            fidl_fuchsia_component_decl__common::Directory,
12446                            D,
12447                            val,
12448                            decoder,
12449                            _inner_offset,
12450                            depth
12451                        )?;
12452                    } else {
12453                        unreachable!()
12454                    }
12455                }
12456                7 => {
12457                    #[allow(irrefutable_let_patterns)]
12458                    if let ComponentCapability::Environment(_) = self {
12459                        // Do nothing, read the value into the object
12460                    } else {
12461                        // Initialize `self` to the right variant
12462                        *self = ComponentCapability::Environment(fidl::new_empty!(
12463                            EnvironmentCapability,
12464                            D
12465                        ));
12466                    }
12467                    #[allow(irrefutable_let_patterns)]
12468                    if let ComponentCapability::Environment(ref mut val) = self {
12469                        fidl::decode!(
12470                            EnvironmentCapability,
12471                            D,
12472                            val,
12473                            decoder,
12474                            _inner_offset,
12475                            depth
12476                        )?;
12477                    } else {
12478                        unreachable!()
12479                    }
12480                }
12481                8 => {
12482                    #[allow(irrefutable_let_patterns)]
12483                    if let ComponentCapability::EventStream(_) = self {
12484                        // Do nothing, read the value into the object
12485                    } else {
12486                        // Initialize `self` to the right variant
12487                        *self = ComponentCapability::EventStream(fidl::new_empty!(
12488                            fidl_fuchsia_component_decl__common::EventStream,
12489                            D
12490                        ));
12491                    }
12492                    #[allow(irrefutable_let_patterns)]
12493                    if let ComponentCapability::EventStream(ref mut val) = self {
12494                        fidl::decode!(
12495                            fidl_fuchsia_component_decl__common::EventStream,
12496                            D,
12497                            val,
12498                            decoder,
12499                            _inner_offset,
12500                            depth
12501                        )?;
12502                    } else {
12503                        unreachable!()
12504                    }
12505                }
12506                9 => {
12507                    #[allow(irrefutable_let_patterns)]
12508                    if let ComponentCapability::Protocol(_) = self {
12509                        // Do nothing, read the value into the object
12510                    } else {
12511                        // Initialize `self` to the right variant
12512                        *self = ComponentCapability::Protocol(fidl::new_empty!(
12513                            fidl_fuchsia_component_decl__common::Protocol,
12514                            D
12515                        ));
12516                    }
12517                    #[allow(irrefutable_let_patterns)]
12518                    if let ComponentCapability::Protocol(ref mut val) = self {
12519                        fidl::decode!(
12520                            fidl_fuchsia_component_decl__common::Protocol,
12521                            D,
12522                            val,
12523                            decoder,
12524                            _inner_offset,
12525                            depth
12526                        )?;
12527                    } else {
12528                        unreachable!()
12529                    }
12530                }
12531                10 => {
12532                    #[allow(irrefutable_let_patterns)]
12533                    if let ComponentCapability::Resolver(_) = self {
12534                        // Do nothing, read the value into the object
12535                    } else {
12536                        // Initialize `self` to the right variant
12537                        *self = ComponentCapability::Resolver(fidl::new_empty!(
12538                            fidl_fuchsia_component_decl__common::Resolver,
12539                            D
12540                        ));
12541                    }
12542                    #[allow(irrefutable_let_patterns)]
12543                    if let ComponentCapability::Resolver(ref mut val) = self {
12544                        fidl::decode!(
12545                            fidl_fuchsia_component_decl__common::Resolver,
12546                            D,
12547                            val,
12548                            decoder,
12549                            _inner_offset,
12550                            depth
12551                        )?;
12552                    } else {
12553                        unreachable!()
12554                    }
12555                }
12556                11 => {
12557                    #[allow(irrefutable_let_patterns)]
12558                    if let ComponentCapability::Runner(_) = self {
12559                        // Do nothing, read the value into the object
12560                    } else {
12561                        // Initialize `self` to the right variant
12562                        *self = ComponentCapability::Runner(fidl::new_empty!(
12563                            fidl_fuchsia_component_decl__common::Runner,
12564                            D
12565                        ));
12566                    }
12567                    #[allow(irrefutable_let_patterns)]
12568                    if let ComponentCapability::Runner(ref mut val) = self {
12569                        fidl::decode!(
12570                            fidl_fuchsia_component_decl__common::Runner,
12571                            D,
12572                            val,
12573                            decoder,
12574                            _inner_offset,
12575                            depth
12576                        )?;
12577                    } else {
12578                        unreachable!()
12579                    }
12580                }
12581                12 => {
12582                    #[allow(irrefutable_let_patterns)]
12583                    if let ComponentCapability::Service(_) = self {
12584                        // Do nothing, read the value into the object
12585                    } else {
12586                        // Initialize `self` to the right variant
12587                        *self = ComponentCapability::Service(fidl::new_empty!(
12588                            fidl_fuchsia_component_decl__common::Service,
12589                            D
12590                        ));
12591                    }
12592                    #[allow(irrefutable_let_patterns)]
12593                    if let ComponentCapability::Service(ref mut val) = self {
12594                        fidl::decode!(
12595                            fidl_fuchsia_component_decl__common::Service,
12596                            D,
12597                            val,
12598                            decoder,
12599                            _inner_offset,
12600                            depth
12601                        )?;
12602                    } else {
12603                        unreachable!()
12604                    }
12605                }
12606                13 => {
12607                    #[allow(irrefutable_let_patterns)]
12608                    if let ComponentCapability::Storage(_) = self {
12609                        // Do nothing, read the value into the object
12610                    } else {
12611                        // Initialize `self` to the right variant
12612                        *self = ComponentCapability::Storage(fidl::new_empty!(
12613                            fidl_fuchsia_component_decl__common::Storage,
12614                            D
12615                        ));
12616                    }
12617                    #[allow(irrefutable_let_patterns)]
12618                    if let ComponentCapability::Storage(ref mut val) = self {
12619                        fidl::decode!(
12620                            fidl_fuchsia_component_decl__common::Storage,
12621                            D,
12622                            val,
12623                            decoder,
12624                            _inner_offset,
12625                            depth
12626                        )?;
12627                    } else {
12628                        unreachable!()
12629                    }
12630                }
12631                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12632            }
12633            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12634                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12635            }
12636            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12637                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12638            }
12639            Ok(())
12640        }
12641    }
12642
12643    impl fidl::encoding::ValueTypeMarker for EnvironmentCapability {
12644        type Borrowed<'a> = &'a Self;
12645        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12646            value
12647        }
12648    }
12649
12650    unsafe impl fidl::encoding::TypeMarker for EnvironmentCapability {
12651        type Owned = Self;
12652
12653        #[inline(always)]
12654        fn inline_align(_context: fidl::encoding::Context) -> usize {
12655            8
12656        }
12657
12658        #[inline(always)]
12659        fn inline_size(_context: fidl::encoding::Context) -> usize {
12660            16
12661        }
12662    }
12663
12664    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnvironmentCapability, D>
12665        for &EnvironmentCapability
12666    {
12667        #[inline]
12668        unsafe fn encode(
12669            self,
12670            encoder: &mut fidl::encoding::Encoder<'_, D>,
12671            offset: usize,
12672            _depth: fidl::encoding::Depth,
12673        ) -> fidl::Result<()> {
12674            encoder.debug_check_bounds::<EnvironmentCapability>(offset);
12675            encoder.write_num::<u64>(self.ordinal(), offset);
12676            match self {
12677                EnvironmentCapability::Runner(ref val) => {
12678                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12679                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12680                        encoder,
12681                        offset + 8,
12682                        _depth,
12683                    )
12684                }
12685                EnvironmentCapability::Resolver(ref val) => {
12686                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12687                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12688                        encoder,
12689                        offset + 8,
12690                        _depth,
12691                    )
12692                }
12693                EnvironmentCapability::Debug(ref val) => {
12694                    fidl::encoding::encode_in_envelope::<EnvironmentSource, D>(
12695                        <EnvironmentSource as fidl::encoding::ValueTypeMarker>::borrow(val),
12696                        encoder,
12697                        offset + 8,
12698                        _depth,
12699                    )
12700                }
12701            }
12702        }
12703    }
12704
12705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnvironmentCapability {
12706        #[inline(always)]
12707        fn new_empty() -> Self {
12708            Self::Runner(fidl::new_empty!(EnvironmentSource, D))
12709        }
12710
12711        #[inline]
12712        unsafe fn decode(
12713            &mut self,
12714            decoder: &mut fidl::encoding::Decoder<'_, D>,
12715            offset: usize,
12716            mut depth: fidl::encoding::Depth,
12717        ) -> fidl::Result<()> {
12718            decoder.debug_check_bounds::<Self>(offset);
12719            #[allow(unused_variables)]
12720            let next_out_of_line = decoder.next_out_of_line();
12721            let handles_before = decoder.remaining_handles();
12722            let (ordinal, inlined, num_bytes, num_handles) =
12723                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12724
12725            let member_inline_size = match ordinal {
12726                1 => {
12727                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12728                }
12729                2 => {
12730                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12731                }
12732                3 => {
12733                    <EnvironmentSource as fidl::encoding::TypeMarker>::inline_size(decoder.context)
12734                }
12735                _ => return Err(fidl::Error::UnknownUnionTag),
12736            };
12737
12738            if inlined != (member_inline_size <= 4) {
12739                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12740            }
12741            let _inner_offset;
12742            if inlined {
12743                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12744                _inner_offset = offset + 8;
12745            } else {
12746                depth.increment()?;
12747                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12748            }
12749            match ordinal {
12750                1 => {
12751                    #[allow(irrefutable_let_patterns)]
12752                    if let EnvironmentCapability::Runner(_) = self {
12753                        // Do nothing, read the value into the object
12754                    } else {
12755                        // Initialize `self` to the right variant
12756                        *self =
12757                            EnvironmentCapability::Runner(fidl::new_empty!(EnvironmentSource, D));
12758                    }
12759                    #[allow(irrefutable_let_patterns)]
12760                    if let EnvironmentCapability::Runner(ref mut val) = self {
12761                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12762                    } else {
12763                        unreachable!()
12764                    }
12765                }
12766                2 => {
12767                    #[allow(irrefutable_let_patterns)]
12768                    if let EnvironmentCapability::Resolver(_) = self {
12769                        // Do nothing, read the value into the object
12770                    } else {
12771                        // Initialize `self` to the right variant
12772                        *self =
12773                            EnvironmentCapability::Resolver(fidl::new_empty!(EnvironmentSource, D));
12774                    }
12775                    #[allow(irrefutable_let_patterns)]
12776                    if let EnvironmentCapability::Resolver(ref mut val) = self {
12777                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12778                    } else {
12779                        unreachable!()
12780                    }
12781                }
12782                3 => {
12783                    #[allow(irrefutable_let_patterns)]
12784                    if let EnvironmentCapability::Debug(_) = self {
12785                        // Do nothing, read the value into the object
12786                    } else {
12787                        // Initialize `self` to the right variant
12788                        *self =
12789                            EnvironmentCapability::Debug(fidl::new_empty!(EnvironmentSource, D));
12790                    }
12791                    #[allow(irrefutable_let_patterns)]
12792                    if let EnvironmentCapability::Debug(ref mut val) = self {
12793                        fidl::decode!(EnvironmentSource, D, val, decoder, _inner_offset, depth)?;
12794                    } else {
12795                        unreachable!()
12796                    }
12797                }
12798                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12799            }
12800            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12801                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12802            }
12803            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12804                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12805            }
12806            Ok(())
12807        }
12808    }
12809
12810    impl fidl::encoding::ValueTypeMarker for InjectedUse {
12811        type Borrowed<'a> = &'a Self;
12812        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12813            value
12814        }
12815    }
12816
12817    unsafe impl fidl::encoding::TypeMarker for InjectedUse {
12818        type Owned = Self;
12819
12820        #[inline(always)]
12821        fn inline_align(_context: fidl::encoding::Context) -> usize {
12822            8
12823        }
12824
12825        #[inline(always)]
12826        fn inline_size(_context: fidl::encoding::Context) -> usize {
12827            16
12828        }
12829    }
12830
12831    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUse, D>
12832        for &InjectedUse
12833    {
12834        #[inline]
12835        unsafe fn encode(
12836            self,
12837            encoder: &mut fidl::encoding::Encoder<'_, D>,
12838            offset: usize,
12839            _depth: fidl::encoding::Depth,
12840        ) -> fidl::Result<()> {
12841            encoder.debug_check_bounds::<InjectedUse>(offset);
12842            encoder.write_num::<u64>(self.ordinal(), offset);
12843            match self {
12844                InjectedUse::Protocol(ref val) => {
12845                    fidl::encoding::encode_in_envelope::<InjectedUseProtocol, D>(
12846                        <InjectedUseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
12847                        encoder,
12848                        offset + 8,
12849                        _depth,
12850                    )
12851                }
12852                InjectedUse::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
12853            }
12854        }
12855    }
12856
12857    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUse {
12858        #[inline(always)]
12859        fn new_empty() -> Self {
12860            Self::__SourceBreaking { unknown_ordinal: 0 }
12861        }
12862
12863        #[inline]
12864        unsafe fn decode(
12865            &mut self,
12866            decoder: &mut fidl::encoding::Decoder<'_, D>,
12867            offset: usize,
12868            mut depth: fidl::encoding::Depth,
12869        ) -> fidl::Result<()> {
12870            decoder.debug_check_bounds::<Self>(offset);
12871            #[allow(unused_variables)]
12872            let next_out_of_line = decoder.next_out_of_line();
12873            let handles_before = decoder.remaining_handles();
12874            let (ordinal, inlined, num_bytes, num_handles) =
12875                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12876
12877            let member_inline_size = match ordinal {
12878                1 => <InjectedUseProtocol as fidl::encoding::TypeMarker>::inline_size(
12879                    decoder.context,
12880                ),
12881                0 => return Err(fidl::Error::UnknownUnionTag),
12882                _ => num_bytes as usize,
12883            };
12884
12885            if inlined != (member_inline_size <= 4) {
12886                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12887            }
12888            let _inner_offset;
12889            if inlined {
12890                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12891                _inner_offset = offset + 8;
12892            } else {
12893                depth.increment()?;
12894                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12895            }
12896            match ordinal {
12897                1 => {
12898                    #[allow(irrefutable_let_patterns)]
12899                    if let InjectedUse::Protocol(_) = self {
12900                        // Do nothing, read the value into the object
12901                    } else {
12902                        // Initialize `self` to the right variant
12903                        *self = InjectedUse::Protocol(fidl::new_empty!(InjectedUseProtocol, D));
12904                    }
12905                    #[allow(irrefutable_let_patterns)]
12906                    if let InjectedUse::Protocol(ref mut val) = self {
12907                        fidl::decode!(InjectedUseProtocol, D, val, decoder, _inner_offset, depth)?;
12908                    } else {
12909                        unreachable!()
12910                    }
12911                }
12912                #[allow(deprecated)]
12913                ordinal => {
12914                    for _ in 0..num_handles {
12915                        decoder.drop_next_handle()?;
12916                    }
12917                    *self = InjectedUse::__SourceBreaking { unknown_ordinal: ordinal };
12918                }
12919            }
12920            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12921                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12922            }
12923            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12924                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12925            }
12926            Ok(())
12927        }
12928    }
12929
12930    impl fidl::encoding::ValueTypeMarker for InternalCapability {
12931        type Borrowed<'a> = &'a Self;
12932        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12933            value
12934        }
12935    }
12936
12937    unsafe impl fidl::encoding::TypeMarker for InternalCapability {
12938        type Owned = Self;
12939
12940        #[inline(always)]
12941        fn inline_align(_context: fidl::encoding::Context) -> usize {
12942            8
12943        }
12944
12945        #[inline(always)]
12946        fn inline_size(_context: fidl::encoding::Context) -> usize {
12947            16
12948        }
12949    }
12950
12951    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InternalCapability, D>
12952        for &InternalCapability
12953    {
12954        #[inline]
12955        unsafe fn encode(
12956            self,
12957            encoder: &mut fidl::encoding::Encoder<'_, D>,
12958            offset: usize,
12959            _depth: fidl::encoding::Depth,
12960        ) -> fidl::Result<()> {
12961            encoder.debug_check_bounds::<InternalCapability>(offset);
12962            encoder.write_num::<u64>(self.ordinal(), offset);
12963            match self {
12964                InternalCapability::Config(ref val) => fidl::encoding::encode_in_envelope::<
12965                    fidl::encoding::BoundedString<100>,
12966                    D,
12967                >(
12968                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12969                        val,
12970                    ),
12971                    encoder,
12972                    offset + 8,
12973                    _depth,
12974                ),
12975                InternalCapability::Dictionary(ref val) => fidl::encoding::encode_in_envelope::<
12976                    fidl::encoding::BoundedString<100>,
12977                    D,
12978                >(
12979                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12980                        val,
12981                    ),
12982                    encoder,
12983                    offset + 8,
12984                    _depth,
12985                ),
12986                InternalCapability::Directory(ref val) => fidl::encoding::encode_in_envelope::<
12987                    fidl::encoding::BoundedString<100>,
12988                    D,
12989                >(
12990                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
12991                        val,
12992                    ),
12993                    encoder,
12994                    offset + 8,
12995                    _depth,
12996                ),
12997                InternalCapability::EventStream(ref val) => fidl::encoding::encode_in_envelope::<
12998                    fidl::encoding::BoundedString<100>,
12999                    D,
13000                >(
13001                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13002                        val,
13003                    ),
13004                    encoder,
13005                    offset + 8,
13006                    _depth,
13007                ),
13008                InternalCapability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<
13009                    fidl::encoding::BoundedString<100>,
13010                    D,
13011                >(
13012                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13013                        val,
13014                    ),
13015                    encoder,
13016                    offset + 8,
13017                    _depth,
13018                ),
13019                InternalCapability::Resolver(ref val) => fidl::encoding::encode_in_envelope::<
13020                    fidl::encoding::BoundedString<100>,
13021                    D,
13022                >(
13023                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13024                        val,
13025                    ),
13026                    encoder,
13027                    offset + 8,
13028                    _depth,
13029                ),
13030                InternalCapability::Runner(ref val) => fidl::encoding::encode_in_envelope::<
13031                    fidl::encoding::BoundedString<100>,
13032                    D,
13033                >(
13034                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13035                        val,
13036                    ),
13037                    encoder,
13038                    offset + 8,
13039                    _depth,
13040                ),
13041                InternalCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
13042                    fidl::encoding::BoundedString<100>,
13043                    D,
13044                >(
13045                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13046                        val,
13047                    ),
13048                    encoder,
13049                    offset + 8,
13050                    _depth,
13051                ),
13052                InternalCapability::Storage(ref val) => fidl::encoding::encode_in_envelope::<
13053                    fidl::encoding::BoundedString<100>,
13054                    D,
13055                >(
13056                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
13057                        val,
13058                    ),
13059                    encoder,
13060                    offset + 8,
13061                    _depth,
13062                ),
13063            }
13064        }
13065    }
13066
13067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InternalCapability {
13068        #[inline(always)]
13069        fn new_empty() -> Self {
13070            Self::Config(fidl::new_empty!(fidl::encoding::BoundedString<100>, D))
13071        }
13072
13073        #[inline]
13074        unsafe fn decode(
13075            &mut self,
13076            decoder: &mut fidl::encoding::Decoder<'_, D>,
13077            offset: usize,
13078            mut depth: fidl::encoding::Depth,
13079        ) -> fidl::Result<()> {
13080            decoder.debug_check_bounds::<Self>(offset);
13081            #[allow(unused_variables)]
13082            let next_out_of_line = decoder.next_out_of_line();
13083            let handles_before = decoder.remaining_handles();
13084            let (ordinal, inlined, num_bytes, num_handles) =
13085                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13086
13087            let member_inline_size = match ordinal {
13088                1 => {
13089                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13090                        decoder.context,
13091                    )
13092                }
13093                2 => {
13094                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13095                        decoder.context,
13096                    )
13097                }
13098                3 => {
13099                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13100                        decoder.context,
13101                    )
13102                }
13103                4 => {
13104                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13105                        decoder.context,
13106                    )
13107                }
13108                5 => {
13109                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13110                        decoder.context,
13111                    )
13112                }
13113                6 => {
13114                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13115                        decoder.context,
13116                    )
13117                }
13118                7 => {
13119                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13120                        decoder.context,
13121                    )
13122                }
13123                8 => {
13124                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13125                        decoder.context,
13126                    )
13127                }
13128                9 => {
13129                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
13130                        decoder.context,
13131                    )
13132                }
13133                _ => return Err(fidl::Error::UnknownUnionTag),
13134            };
13135
13136            if inlined != (member_inline_size <= 4) {
13137                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13138            }
13139            let _inner_offset;
13140            if inlined {
13141                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13142                _inner_offset = offset + 8;
13143            } else {
13144                depth.increment()?;
13145                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13146            }
13147            match ordinal {
13148                1 => {
13149                    #[allow(irrefutable_let_patterns)]
13150                    if let InternalCapability::Config(_) = self {
13151                        // Do nothing, read the value into the object
13152                    } else {
13153                        // Initialize `self` to the right variant
13154                        *self = InternalCapability::Config(fidl::new_empty!(
13155                            fidl::encoding::BoundedString<100>,
13156                            D
13157                        ));
13158                    }
13159                    #[allow(irrefutable_let_patterns)]
13160                    if let InternalCapability::Config(ref mut val) = self {
13161                        fidl::decode!(
13162                            fidl::encoding::BoundedString<100>,
13163                            D,
13164                            val,
13165                            decoder,
13166                            _inner_offset,
13167                            depth
13168                        )?;
13169                    } else {
13170                        unreachable!()
13171                    }
13172                }
13173                2 => {
13174                    #[allow(irrefutable_let_patterns)]
13175                    if let InternalCapability::Dictionary(_) = self {
13176                        // Do nothing, read the value into the object
13177                    } else {
13178                        // Initialize `self` to the right variant
13179                        *self = InternalCapability::Dictionary(fidl::new_empty!(
13180                            fidl::encoding::BoundedString<100>,
13181                            D
13182                        ));
13183                    }
13184                    #[allow(irrefutable_let_patterns)]
13185                    if let InternalCapability::Dictionary(ref mut val) = self {
13186                        fidl::decode!(
13187                            fidl::encoding::BoundedString<100>,
13188                            D,
13189                            val,
13190                            decoder,
13191                            _inner_offset,
13192                            depth
13193                        )?;
13194                    } else {
13195                        unreachable!()
13196                    }
13197                }
13198                3 => {
13199                    #[allow(irrefutable_let_patterns)]
13200                    if let InternalCapability::Directory(_) = self {
13201                        // Do nothing, read the value into the object
13202                    } else {
13203                        // Initialize `self` to the right variant
13204                        *self = InternalCapability::Directory(fidl::new_empty!(
13205                            fidl::encoding::BoundedString<100>,
13206                            D
13207                        ));
13208                    }
13209                    #[allow(irrefutable_let_patterns)]
13210                    if let InternalCapability::Directory(ref mut val) = self {
13211                        fidl::decode!(
13212                            fidl::encoding::BoundedString<100>,
13213                            D,
13214                            val,
13215                            decoder,
13216                            _inner_offset,
13217                            depth
13218                        )?;
13219                    } else {
13220                        unreachable!()
13221                    }
13222                }
13223                4 => {
13224                    #[allow(irrefutable_let_patterns)]
13225                    if let InternalCapability::EventStream(_) = self {
13226                        // Do nothing, read the value into the object
13227                    } else {
13228                        // Initialize `self` to the right variant
13229                        *self = InternalCapability::EventStream(fidl::new_empty!(
13230                            fidl::encoding::BoundedString<100>,
13231                            D
13232                        ));
13233                    }
13234                    #[allow(irrefutable_let_patterns)]
13235                    if let InternalCapability::EventStream(ref mut val) = self {
13236                        fidl::decode!(
13237                            fidl::encoding::BoundedString<100>,
13238                            D,
13239                            val,
13240                            decoder,
13241                            _inner_offset,
13242                            depth
13243                        )?;
13244                    } else {
13245                        unreachable!()
13246                    }
13247                }
13248                5 => {
13249                    #[allow(irrefutable_let_patterns)]
13250                    if let InternalCapability::Protocol(_) = self {
13251                        // Do nothing, read the value into the object
13252                    } else {
13253                        // Initialize `self` to the right variant
13254                        *self = InternalCapability::Protocol(fidl::new_empty!(
13255                            fidl::encoding::BoundedString<100>,
13256                            D
13257                        ));
13258                    }
13259                    #[allow(irrefutable_let_patterns)]
13260                    if let InternalCapability::Protocol(ref mut val) = self {
13261                        fidl::decode!(
13262                            fidl::encoding::BoundedString<100>,
13263                            D,
13264                            val,
13265                            decoder,
13266                            _inner_offset,
13267                            depth
13268                        )?;
13269                    } else {
13270                        unreachable!()
13271                    }
13272                }
13273                6 => {
13274                    #[allow(irrefutable_let_patterns)]
13275                    if let InternalCapability::Resolver(_) = self {
13276                        // Do nothing, read the value into the object
13277                    } else {
13278                        // Initialize `self` to the right variant
13279                        *self = InternalCapability::Resolver(fidl::new_empty!(
13280                            fidl::encoding::BoundedString<100>,
13281                            D
13282                        ));
13283                    }
13284                    #[allow(irrefutable_let_patterns)]
13285                    if let InternalCapability::Resolver(ref mut val) = self {
13286                        fidl::decode!(
13287                            fidl::encoding::BoundedString<100>,
13288                            D,
13289                            val,
13290                            decoder,
13291                            _inner_offset,
13292                            depth
13293                        )?;
13294                    } else {
13295                        unreachable!()
13296                    }
13297                }
13298                7 => {
13299                    #[allow(irrefutable_let_patterns)]
13300                    if let InternalCapability::Runner(_) = self {
13301                        // Do nothing, read the value into the object
13302                    } else {
13303                        // Initialize `self` to the right variant
13304                        *self = InternalCapability::Runner(fidl::new_empty!(
13305                            fidl::encoding::BoundedString<100>,
13306                            D
13307                        ));
13308                    }
13309                    #[allow(irrefutable_let_patterns)]
13310                    if let InternalCapability::Runner(ref mut val) = self {
13311                        fidl::decode!(
13312                            fidl::encoding::BoundedString<100>,
13313                            D,
13314                            val,
13315                            decoder,
13316                            _inner_offset,
13317                            depth
13318                        )?;
13319                    } else {
13320                        unreachable!()
13321                    }
13322                }
13323                8 => {
13324                    #[allow(irrefutable_let_patterns)]
13325                    if let InternalCapability::Service(_) = self {
13326                        // Do nothing, read the value into the object
13327                    } else {
13328                        // Initialize `self` to the right variant
13329                        *self = InternalCapability::Service(fidl::new_empty!(
13330                            fidl::encoding::BoundedString<100>,
13331                            D
13332                        ));
13333                    }
13334                    #[allow(irrefutable_let_patterns)]
13335                    if let InternalCapability::Service(ref mut val) = self {
13336                        fidl::decode!(
13337                            fidl::encoding::BoundedString<100>,
13338                            D,
13339                            val,
13340                            decoder,
13341                            _inner_offset,
13342                            depth
13343                        )?;
13344                    } else {
13345                        unreachable!()
13346                    }
13347                }
13348                9 => {
13349                    #[allow(irrefutable_let_patterns)]
13350                    if let InternalCapability::Storage(_) = self {
13351                        // Do nothing, read the value into the object
13352                    } else {
13353                        // Initialize `self` to the right variant
13354                        *self = InternalCapability::Storage(fidl::new_empty!(
13355                            fidl::encoding::BoundedString<100>,
13356                            D
13357                        ));
13358                    }
13359                    #[allow(irrefutable_let_patterns)]
13360                    if let InternalCapability::Storage(ref mut val) = self {
13361                        fidl::decode!(
13362                            fidl::encoding::BoundedString<100>,
13363                            D,
13364                            val,
13365                            decoder,
13366                            _inner_offset,
13367                            depth
13368                        )?;
13369                    } else {
13370                        unreachable!()
13371                    }
13372                }
13373                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13374            }
13375            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13376                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13377            }
13378            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13379                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13380            }
13381            Ok(())
13382        }
13383    }
13384}