Skip to main content

fidl_fuchsia_driver_development_common/
fidl_fuchsia_driver_development_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const BINDING_RESULT_MAX: u8 = 10;
12
13pub const BINDING_RESULT_MAX_2: u32 = 256;
14
15pub const HASH_LENGTH: u8 = 64;
16
17pub const MAX_SEGMENTS: u32 = 20;
18
19pub const NODE_MONIKER_MAX: u32 = 1024;
20
21pub const POWER_TOKEN_OVERRIDES_MAX: u8 = 16;
22
23bitflags! {
24    /// These flags indicate when a |fuchsia.driver.index.DriverIndex::MatchDriver| call should be
25    /// made for a node that is restarting in order to find a new driver, instead of reusing the driver
26    /// that was previously bound to the node.
27    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
28    pub struct RestartRematchFlags: u32 {
29        /// Rematch nodes that are currently bound to the requested driver. The requested driver is
30        /// the driver url that the restart operation was initiated for.
31        const REQUESTED = 1;
32        /// Rematch nodes that are currently bound to a driver other than the requested driver. These
33        /// are nodes that are affected by the restart of the requested driver, for example when
34        /// it is a colocated parent.
35        const NON_REQUESTED = 2;
36        /// Rematch nodes that are created as part of a completed composite spec.
37        const COMPOSITE_SPEC = 8;
38    }
39}
40
41impl RestartRematchFlags {
42    #[inline(always)]
43    pub fn from_bits_allow_unknown(bits: u32) -> Self {
44        Self::from_bits_retain(bits)
45    }
46
47    #[inline(always)]
48    pub fn has_unknown_bits(&self) -> bool {
49        self.get_unknown_bits() != 0
50    }
51
52    #[inline(always)]
53    pub fn get_unknown_bits(&self) -> u32 {
54        self.bits() & !Self::all().bits()
55    }
56}
57
58/// The lifecycle state of a dispatcher.
59#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
60pub enum DispatcherState {
61    Running,
62    ShuttingDown,
63    Shutdown,
64    Destroyed,
65    #[doc(hidden)]
66    __SourceBreaking {
67        unknown_ordinal: u32,
68    },
69}
70
71/// Pattern that matches an unknown `DispatcherState` member.
72#[macro_export]
73macro_rules! DispatcherStateUnknown {
74    () => {
75        _
76    };
77}
78
79impl DispatcherState {
80    #[inline]
81    pub fn from_primitive(prim: u32) -> Option<Self> {
82        match prim {
83            1 => Some(Self::Running),
84            2 => Some(Self::ShuttingDown),
85            3 => Some(Self::Shutdown),
86            4 => Some(Self::Destroyed),
87            _ => None,
88        }
89    }
90
91    #[inline]
92    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
93        match prim {
94            1 => Self::Running,
95            2 => Self::ShuttingDown,
96            3 => Self::Shutdown,
97            4 => Self::Destroyed,
98            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
99        }
100    }
101
102    #[inline]
103    pub fn unknown() -> Self {
104        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
105    }
106
107    #[inline]
108    pub const fn into_primitive(self) -> u32 {
109        match self {
110            Self::Running => 1,
111            Self::ShuttingDown => 2,
112            Self::Shutdown => 3,
113            Self::Destroyed => 4,
114            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
115        }
116    }
117
118    #[inline]
119    pub fn is_unknown(&self) -> bool {
120        match self {
121            Self::__SourceBreaking { unknown_ordinal: _ } => true,
122            _ => false,
123        }
124    }
125}
126
127#[derive(Clone, Debug, PartialEq)]
128pub struct CompositeInfoIteratorGetNextResponse {
129    pub composites: Vec<CompositeNodeInfo>,
130}
131
132impl fidl::Persistable for CompositeInfoIteratorGetNextResponse {}
133
134#[derive(Clone, Debug, PartialEq)]
135pub struct CompositeNodeSpecIteratorGetNextResponse {
136    pub specs: Vec<fidl_fuchsia_driver_framework_common::CompositeInfo>,
137}
138
139impl fidl::Persistable for CompositeNodeSpecIteratorGetNextResponse {}
140
141#[derive(Clone, Debug, PartialEq)]
142pub struct DriverHostInfoIteratorGetNextResponse {
143    pub driver_hosts: Vec<DriverHostInfo>,
144}
145
146impl fidl::Persistable for DriverHostInfoIteratorGetNextResponse {}
147
148#[derive(Clone, Debug, PartialEq)]
149pub struct DriverInfoIteratorGetNextResponse {
150    pub drivers: Vec<fidl_fuchsia_driver_framework_common::DriverInfo>,
151}
152
153impl fidl::Persistable for DriverInfoIteratorGetNextResponse {}
154
155#[derive(Clone, Debug, PartialEq)]
156pub struct ManagerAddTestNodeRequest {
157    pub args: TestNodeAddArgs,
158}
159
160impl fidl::Persistable for ManagerAddTestNodeRequest {}
161
162#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
163pub struct ManagerDisableDriverRequest {
164    pub driver_url: String,
165    pub package_hash: Option<String>,
166}
167
168impl fidl::Persistable for ManagerDisableDriverRequest {}
169
170#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
171pub struct ManagerEnableDriverRequest {
172    pub driver_url: String,
173    pub package_hash: Option<String>,
174}
175
176impl fidl::Persistable for ManagerEnableDriverRequest {}
177
178#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
179pub struct ManagerRebindCompositesWithDriverRequest {
180    pub driver_url: String,
181}
182
183impl fidl::Persistable for ManagerRebindCompositesWithDriverRequest {}
184
185#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
186pub struct ManagerRemoveTestNodeRequest {
187    pub name: String,
188}
189
190impl fidl::Persistable for ManagerRemoveTestNodeRequest {}
191
192#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
193pub struct ManagerRestartDriverHostsRequest {
194    pub driver_url: String,
195    pub rematch_flags: RestartRematchFlags,
196}
197
198impl fidl::Persistable for ManagerRestartDriverHostsRequest {}
199
200#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
201pub struct ManagerRunHealthCheckRequest {
202    pub moniker: String,
203    pub request: fidl_fuchsia_driver_framework_common::HealthCheckRequest,
204}
205
206impl fidl::Persistable for ManagerRunHealthCheckRequest {}
207
208#[derive(Clone, Debug, PartialEq)]
209pub struct ManagerBindAllUnboundNodes2Response {
210    /// List of new bindings that happened as a result of this.
211    pub binding_result: Vec<NodeBindingInfo>,
212}
213
214impl fidl::Persistable for ManagerBindAllUnboundNodes2Response {}
215
216#[derive(Clone, Debug, PartialEq)]
217pub struct ManagerBindAllUnboundNodesResponse {
218    /// List of new bindings that happened as a result of this.
219    pub binding_result: Vec<NodeBindingInfo>,
220}
221
222impl fidl::Persistable for ManagerBindAllUnboundNodesResponse {}
223
224#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
225#[repr(C)]
226pub struct ManagerRebindCompositesWithDriverResponse {
227    pub count: u32,
228}
229
230impl fidl::Persistable for ManagerRebindCompositesWithDriverResponse {}
231
232#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
233#[repr(C)]
234pub struct ManagerRestartDriverHostsResponse {
235    pub count: u32,
236}
237
238impl fidl::Persistable for ManagerRestartDriverHostsResponse {}
239
240#[derive(Clone, Debug, PartialEq)]
241pub struct NodeInfoIteratorGetNextResponse {
242    pub nodes: Vec<NodeInfo>,
243}
244
245impl fidl::Persistable for NodeInfoIteratorGetNextResponse {}
246
247/// Contains information for a composite node.
248#[derive(Clone, Debug, Default, PartialEq)]
249pub struct CompositeNodeInfo {
250    /// The topological paths of the parent nodes of this composite, ordered by index.
251    pub parent_topological_paths: Option<Vec<Option<String>>>,
252    /// The topological path of the created composite node. Empty if not created.
253    pub topological_path: Option<String>,
254    pub composite: Option<CompositeInfo>,
255    /// The monikers of the parent nodes of this composite, ordered by index.
256    pub parent_monikers: Option<Vec<Option<String>>>,
257    /// The moniker of the created composite node. Empty if not created.
258    pub moniker: Option<String>,
259    #[doc(hidden)]
260    pub __source_breaking: fidl::marker::SourceBreaking,
261}
262
263impl fidl::Persistable for CompositeNodeInfo {}
264
265/// Request and inlining statistics for a dispatcher.
266#[derive(Clone, Debug, Default, PartialEq)]
267pub struct DispatcherDebugStats {
268    /// Total number of requests processed by this dispatcher.
269    pub num_total_requests: Option<u64>,
270    /// Number of requests that were inlined.
271    pub num_inlined_requests: Option<u64>,
272    /// Breakdown of reasons why requests were not inlined.
273    pub non_inlined: Option<NonInlinedRequestStats>,
274    #[doc(hidden)]
275    pub __source_breaking: fidl::marker::SourceBreaking,
276}
277
278impl fidl::Persistable for DispatcherDebugStats {}
279
280/// Contains information for a dispatcher.
281#[derive(Clone, Debug, Default, PartialEq)]
282pub struct DispatcherInfo {
283    /// The driver which created this dispatcher.
284    pub driver: Option<String>,
285    /// The name of the dispatcher.
286    pub name: Option<String>,
287    /// The options the dispatcher was created with.
288    pub options: Option<u32>,
289    /// The scheduler role of the dispatcher.
290    pub scheduler_role: Option<String>,
291    /// Address of the dispatcher in the driver host process.
292    pub dispatcher_ptr: Option<u64>,
293    /// Address of the driver owner in the driver host process.
294    pub driver_ptr: Option<u64>,
295    /// Whether the dispatcher is synchronized.
296    pub synchronized: Option<bool>,
297    /// Whether the dispatcher allows blocking synchronous calls.
298    pub allow_sync_calls: Option<bool>,
299    /// Current lifecycle state of the dispatcher.
300    pub state: Option<DispatcherState>,
301    /// Name of the dispatcher that initiated destruction, if `Destroy` was called.
302    pub destroy_context: Option<String>,
303    /// Whether `Destroy` was user-initiated (`true`) or environment-initiated (`false`).
304    pub destroy_user_initiated: Option<bool>,
305    /// Request and inlining statistics for the dispatcher.
306    pub debug_stats: Option<DispatcherDebugStats>,
307    /// Currently queued tasks on the dispatcher.
308    pub queued_tasks: Option<Vec<QueuedTaskInfo>>,
309    /// Total number of queued tasks on the dispatcher prior to any truncation.
310    pub num_queued_tasks: Option<u64>,
311    #[doc(hidden)]
312    pub __source_breaking: fidl::marker::SourceBreaking,
313}
314
315impl fidl::Persistable for DispatcherInfo {}
316
317/// Contains information for a driver host.
318#[derive(Clone, Debug, Default, PartialEq)]
319pub struct DriverHostInfo {
320    /// The process KOID of the driver host.
321    pub process_koid: Option<u64>,
322    /// The list of threads of the driver host.
323    pub threads: Option<Vec<ThreadInfo>>,
324    /// List of drivers loaded into this driver host.
325    pub drivers: Option<Vec<String>>,
326    /// List of dispatchers .
327    pub dispatchers: Option<Vec<DispatcherInfo>>,
328    /// Optional name of the driver host.
329    pub name: Option<String>,
330    #[doc(hidden)]
331    pub __source_breaking: fidl::marker::SourceBreaking,
332}
333
334impl fidl::Persistable for DriverHostInfo {}
335
336/// Information about a node binding to either a driver or a composite.
337#[derive(Clone, Debug, Default, PartialEq)]
338pub struct NodeBindingInfo {
339    /// Full topological name of the node.
340    pub node_name: Option<String>,
341    /// This is the component url for the driver that bound to the node.
342    /// If this is present, then |composite_parents| must not be.
343    pub driver_url: Option<String>,
344    /// The composite parents that this node binded to.
345    /// If this is present, then |driver_url| must not be.
346    pub composite_parents: Option<Vec<fidl_fuchsia_driver_framework_common::CompositeParent>>,
347    #[doc(hidden)]
348    pub __source_breaking: fidl::marker::SourceBreaking,
349}
350
351impl fidl::Persistable for NodeBindingInfo {}
352
353#[derive(Clone, Debug, Default, PartialEq)]
354pub struct NodeInfo {
355    /// Unique ID identifying the node.
356    pub id: Option<u64>,
357    /// List of ids representing parents. If more than one, this is a composite node.
358    pub parent_ids: Option<Vec<u64>>,
359    /// List of ids representing children.
360    pub child_ids: Option<Vec<u64>>,
361    /// The process KOID of the driver host the driver resides within.
362    pub driver_host_koid: Option<u64>,
363    /// URL to the driver component manifest
364    pub bound_driver_url: Option<String>,
365    /// The collection-relative moniker of the node.
366    pub moniker: Option<String>,
367    /// Properties of the node.
368    pub node_property_list: Option<Vec<fidl_fuchsia_driver_framework_common::NodeProperty2>>,
369    /// Component offers to the node.
370    pub offer_list: Option<Vec<fidl_fuchsia_component_decl_common::Offer>>,
371    /// Whether the node is in a quarantined state. That is, the |bound_driver_url| has failed to
372    /// start, and the node is no longer running its driver instance.
373    pub quarantined: Option<bool>,
374    /// Information about the node's bus topology.
375    pub bus_topology: Option<Vec<fidl_fuchsia_driver_framework_common::BusInfo>>,
376    /// The topological path of the node in devfs.
377    pub topological_path: Option<String>,
378    /// Whether the driver bound to this node has completed starting and is currently running.
379    pub is_running: Option<bool>,
380    #[doc(hidden)]
381    pub __source_breaking: fidl::marker::SourceBreaking,
382}
383
384impl fidl::Persistable for NodeInfo {}
385
386/// Breakdown of reasons why requests were not inlined by the driver runtime.
387#[derive(Clone, Debug, Default, PartialEq)]
388pub struct NonInlinedRequestStats {
389    /// Calling from a non-blocking to a blocking (`ALLOW_SYNC_CALLS`) dispatcher.
390    pub allow_sync_calls: Option<u64>,
391    /// Another thread was already dispatching a request.
392    pub parallel_dispatch: Option<u64>,
393    /// The request was a task.
394    pub task: Option<u64>,
395    /// The request was queued from an unknown thread.
396    pub unknown_thread: Option<u64>,
397    /// The request would have been reentrant.
398    pub reentrant: Option<u64>,
399    /// Channel wait was not yet registered when the message was received.
400    pub channel_wait_not_yet_registered: Option<u64>,
401    /// Called into a dispatcher that wasn't allowed to migrate threads.
402    pub no_thread_migration: Option<u64>,
403    #[doc(hidden)]
404    pub __source_breaking: fidl::marker::SourceBreaking,
405}
406
407impl fidl::Persistable for NonInlinedRequestStats {}
408
409/// Diagnostic information for a task queued on a dispatcher.
410#[derive(Clone, Debug, Default, PartialEq)]
411pub struct QueuedTaskInfo {
412    /// Address of the queued `async_task_t`.
413    pub ptr: Option<u64>,
414    /// Address of the task handler function.
415    pub handler: Option<u64>,
416    /// Address of the dispatcher that queued this task, if queued from a runtime thread.
417    pub initiating_dispatcher: Option<u64>,
418    /// Name of the dispatcher that queued this task, if known.
419    pub initiating_dispatcher_name: Option<String>,
420    /// Address of the driver that queued this task, if queued from a runtime thread.
421    pub initiating_driver: Option<u64>,
422    /// URL of the driver that queued this task, if known.
423    pub initiating_driver_url: Option<String>,
424    #[doc(hidden)]
425    pub __source_breaking: fidl::marker::SourceBreaking,
426}
427
428impl fidl::Persistable for QueuedTaskInfo {}
429
430#[derive(Clone, Debug, Default, PartialEq)]
431pub struct TestNodeAddArgs {
432    /// Name of the node.
433    pub name: Option<String>,
434    /// Properties of the node.
435    pub properties: Option<Vec<fidl_fuchsia_driver_framework_common::NodeProperty2>>,
436    #[doc(hidden)]
437    pub __source_breaking: fidl::marker::SourceBreaking,
438}
439
440impl fidl::Persistable for TestNodeAddArgs {}
441
442/// Contains information for a thread.
443#[derive(Clone, Debug, Default, PartialEq)]
444pub struct ThreadInfo {
445    /// The koid for the thread.
446    pub koid: Option<u64>,
447    /// The name of the thread.
448    pub name: Option<String>,
449    /// The scheduler role of the thread.
450    pub scheduler_role: Option<String>,
451    #[doc(hidden)]
452    pub __source_breaking: fidl::marker::SourceBreaking,
453}
454
455impl fidl::Persistable for ThreadInfo {}
456
457/// Contains information for a composite.
458#[derive(Clone, Debug, PartialEq)]
459pub enum CompositeInfo {
460    Composite(fidl_fuchsia_driver_framework_common::CompositeInfo),
461}
462
463impl CompositeInfo {
464    #[inline]
465    pub fn ordinal(&self) -> u64 {
466        match *self {
467            Self::Composite(_) => 2,
468        }
469    }
470}
471
472impl fidl::Persistable for CompositeInfo {}
473
474pub mod composite_info_iterator_ordinals {
475    pub const GET_NEXT: u64 = 0x50af808a6e34bb96;
476}
477
478pub mod composite_node_spec_iterator_ordinals {
479    pub const GET_NEXT: u64 = 0x32fd110355479f71;
480}
481
482pub mod driver_host_info_iterator_ordinals {
483    pub const GET_NEXT: u64 = 0xbf58e5cd863a86;
484}
485
486pub mod driver_info_iterator_ordinals {
487    pub const GET_NEXT: u64 = 0x2c394711c6784952;
488}
489
490pub mod manager_ordinals {
491    pub const GET_DRIVER_INFO: u64 = 0x34b1541e24e5d587;
492    pub const GET_COMPOSITE_NODE_SPECS: u64 = 0x258540c7ff37328f;
493    pub const GET_NODE_INFO: u64 = 0x7c272c6b7bcb4f9e;
494    pub const GET_COMPOSITE_INFO: u64 = 0x4456da4372a49a36;
495    pub const GET_DRIVER_HOST_INFO: u64 = 0x366b2c4429d44155;
496    pub const RESTART_DRIVER_HOSTS: u64 = 0x64fb09a17a4dd8c7;
497    pub const DISABLE_DRIVER: u64 = 0x3cabde92ba1ac967;
498    pub const ENABLE_DRIVER: u64 = 0x76a7518712965faf;
499    pub const BIND_ALL_UNBOUND_NODES: u64 = 0x2b4343fe1cfb9f21;
500    pub const BIND_ALL_UNBOUND_NODES2: u64 = 0x3e82ce2d6fc998d7;
501    pub const ADD_TEST_NODE: u64 = 0x774836bbb7fbc5b9;
502    pub const REMOVE_TEST_NODE: u64 = 0x1618ec4e5fc4010e;
503    pub const WAIT_FOR_BOOTUP: u64 = 0x52077de068225cdc;
504    pub const RESTART_WITH_DICTIONARY: u64 = 0x5eb620a85359a10e;
505    pub const RESTART_WITH_DICTIONARY_AND_POWER_DEPENDENCIES: u64 = 0x42914549590210;
506    pub const REBIND_COMPOSITES_WITH_DRIVER: u64 = 0x175d492045f61f28;
507    pub const RUN_HEALTH_CHECK: u64 = 0x40c5975519795d82;
508}
509
510pub mod node_info_iterator_ordinals {
511    pub const GET_NEXT: u64 = 0x33c7c070412f889f;
512}
513
514mod internal {
515    use super::*;
516    unsafe impl fidl::encoding::TypeMarker for RestartRematchFlags {
517        type Owned = Self;
518
519        #[inline(always)]
520        fn inline_align(_context: fidl::encoding::Context) -> usize {
521            4
522        }
523
524        #[inline(always)]
525        fn inline_size(_context: fidl::encoding::Context) -> usize {
526            4
527        }
528    }
529
530    impl fidl::encoding::ValueTypeMarker for RestartRematchFlags {
531        type Borrowed<'a> = Self;
532        #[inline(always)]
533        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
534            *value
535        }
536    }
537
538    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
539        for RestartRematchFlags
540    {
541        #[inline]
542        unsafe fn encode(
543            self,
544            encoder: &mut fidl::encoding::Encoder<'_, D>,
545            offset: usize,
546            _depth: fidl::encoding::Depth,
547        ) -> fidl::Result<()> {
548            encoder.debug_check_bounds::<Self>(offset);
549            encoder.write_num(self.bits(), offset);
550            Ok(())
551        }
552    }
553
554    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RestartRematchFlags {
555        #[inline(always)]
556        fn new_empty() -> Self {
557            Self::empty()
558        }
559
560        #[inline]
561        unsafe fn decode(
562            &mut self,
563            decoder: &mut fidl::encoding::Decoder<'_, D>,
564            offset: usize,
565            _depth: fidl::encoding::Depth,
566        ) -> fidl::Result<()> {
567            decoder.debug_check_bounds::<Self>(offset);
568            let prim = decoder.read_num::<u32>(offset);
569            *self = Self::from_bits_allow_unknown(prim);
570            Ok(())
571        }
572    }
573    unsafe impl fidl::encoding::TypeMarker for DispatcherState {
574        type Owned = Self;
575
576        #[inline(always)]
577        fn inline_align(_context: fidl::encoding::Context) -> usize {
578            std::mem::align_of::<u32>()
579        }
580
581        #[inline(always)]
582        fn inline_size(_context: fidl::encoding::Context) -> usize {
583            std::mem::size_of::<u32>()
584        }
585
586        #[inline(always)]
587        fn encode_is_copy() -> bool {
588            false
589        }
590
591        #[inline(always)]
592        fn decode_is_copy() -> bool {
593            false
594        }
595    }
596
597    impl fidl::encoding::ValueTypeMarker for DispatcherState {
598        type Borrowed<'a> = Self;
599        #[inline(always)]
600        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
601            *value
602        }
603    }
604
605    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
606        for DispatcherState
607    {
608        #[inline]
609        unsafe fn encode(
610            self,
611            encoder: &mut fidl::encoding::Encoder<'_, D>,
612            offset: usize,
613            _depth: fidl::encoding::Depth,
614        ) -> fidl::Result<()> {
615            encoder.debug_check_bounds::<Self>(offset);
616            encoder.write_num(self.into_primitive(), offset);
617            Ok(())
618        }
619    }
620
621    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherState {
622        #[inline(always)]
623        fn new_empty() -> Self {
624            Self::unknown()
625        }
626
627        #[inline]
628        unsafe fn decode(
629            &mut self,
630            decoder: &mut fidl::encoding::Decoder<'_, D>,
631            offset: usize,
632            _depth: fidl::encoding::Depth,
633        ) -> fidl::Result<()> {
634            decoder.debug_check_bounds::<Self>(offset);
635            let prim = decoder.read_num::<u32>(offset);
636
637            *self = Self::from_primitive_allow_unknown(prim);
638            Ok(())
639        }
640    }
641
642    impl fidl::encoding::ValueTypeMarker for CompositeInfoIteratorGetNextResponse {
643        type Borrowed<'a> = &'a Self;
644        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
645            value
646        }
647    }
648
649    unsafe impl fidl::encoding::TypeMarker for CompositeInfoIteratorGetNextResponse {
650        type Owned = Self;
651
652        #[inline(always)]
653        fn inline_align(_context: fidl::encoding::Context) -> usize {
654            8
655        }
656
657        #[inline(always)]
658        fn inline_size(_context: fidl::encoding::Context) -> usize {
659            16
660        }
661    }
662
663    unsafe impl<D: fidl::encoding::ResourceDialect>
664        fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D>
665        for &CompositeInfoIteratorGetNextResponse
666    {
667        #[inline]
668        unsafe fn encode(
669            self,
670            encoder: &mut fidl::encoding::Encoder<'_, D>,
671            offset: usize,
672            _depth: fidl::encoding::Depth,
673        ) -> fidl::Result<()> {
674            encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
675            // Delegate to tuple encoding.
676            fidl::encoding::Encode::<CompositeInfoIteratorGetNextResponse, D>::encode(
677                (
678                    <fidl::encoding::UnboundedVector<CompositeNodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.composites),
679                ),
680                encoder, offset, _depth
681            )
682        }
683    }
684    unsafe impl<
685        D: fidl::encoding::ResourceDialect,
686        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CompositeNodeInfo>, D>,
687    > fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D> for (T0,)
688    {
689        #[inline]
690        unsafe fn encode(
691            self,
692            encoder: &mut fidl::encoding::Encoder<'_, D>,
693            offset: usize,
694            depth: fidl::encoding::Depth,
695        ) -> fidl::Result<()> {
696            encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
697            // Zero out padding regions. There's no need to apply masks
698            // because the unmasked parts will be overwritten by fields.
699            // Write the fields.
700            self.0.encode(encoder, offset + 0, depth)?;
701            Ok(())
702        }
703    }
704
705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
706        for CompositeInfoIteratorGetNextResponse
707    {
708        #[inline(always)]
709        fn new_empty() -> Self {
710            Self {
711                composites: fidl::new_empty!(fidl::encoding::UnboundedVector<CompositeNodeInfo>, D),
712            }
713        }
714
715        #[inline]
716        unsafe fn decode(
717            &mut self,
718            decoder: &mut fidl::encoding::Decoder<'_, D>,
719            offset: usize,
720            _depth: fidl::encoding::Depth,
721        ) -> fidl::Result<()> {
722            decoder.debug_check_bounds::<Self>(offset);
723            // Verify that padding bytes are zero.
724            fidl::decode!(
725                fidl::encoding::UnboundedVector<CompositeNodeInfo>,
726                D,
727                &mut self.composites,
728                decoder,
729                offset + 0,
730                _depth
731            )?;
732            Ok(())
733        }
734    }
735
736    impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecIteratorGetNextResponse {
737        type Borrowed<'a> = &'a Self;
738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
739            value
740        }
741    }
742
743    unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecIteratorGetNextResponse {
744        type Owned = Self;
745
746        #[inline(always)]
747        fn inline_align(_context: fidl::encoding::Context) -> usize {
748            8
749        }
750
751        #[inline(always)]
752        fn inline_size(_context: fidl::encoding::Context) -> usize {
753            16
754        }
755    }
756
757    unsafe impl<D: fidl::encoding::ResourceDialect>
758        fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D>
759        for &CompositeNodeSpecIteratorGetNextResponse
760    {
761        #[inline]
762        unsafe fn encode(
763            self,
764            encoder: &mut fidl::encoding::Encoder<'_, D>,
765            offset: usize,
766            _depth: fidl::encoding::Depth,
767        ) -> fidl::Result<()> {
768            encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
769            // Delegate to tuple encoding.
770            fidl::encoding::Encode::<CompositeNodeSpecIteratorGetNextResponse, D>::encode(
771                (<fidl::encoding::UnboundedVector<
772                    fidl_fuchsia_driver_framework_common::CompositeInfo,
773                > as fidl::encoding::ValueTypeMarker>::borrow(&self.specs),),
774                encoder,
775                offset,
776                _depth,
777            )
778        }
779    }
780    unsafe impl<
781        D: fidl::encoding::ResourceDialect,
782        T0: fidl::encoding::Encode<
783                fidl::encoding::UnboundedVector<
784                    fidl_fuchsia_driver_framework_common::CompositeInfo,
785                >,
786                D,
787            >,
788    > fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D> for (T0,)
789    {
790        #[inline]
791        unsafe fn encode(
792            self,
793            encoder: &mut fidl::encoding::Encoder<'_, D>,
794            offset: usize,
795            depth: fidl::encoding::Depth,
796        ) -> fidl::Result<()> {
797            encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
798            // Zero out padding regions. There's no need to apply masks
799            // because the unmasked parts will be overwritten by fields.
800            // Write the fields.
801            self.0.encode(encoder, offset + 0, depth)?;
802            Ok(())
803        }
804    }
805
806    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
807        for CompositeNodeSpecIteratorGetNextResponse
808    {
809        #[inline(always)]
810        fn new_empty() -> Self {
811            Self {
812                specs: fidl::new_empty!(
813                    fidl::encoding::UnboundedVector<
814                        fidl_fuchsia_driver_framework_common::CompositeInfo,
815                    >,
816                    D
817                ),
818            }
819        }
820
821        #[inline]
822        unsafe fn decode(
823            &mut self,
824            decoder: &mut fidl::encoding::Decoder<'_, D>,
825            offset: usize,
826            _depth: fidl::encoding::Depth,
827        ) -> fidl::Result<()> {
828            decoder.debug_check_bounds::<Self>(offset);
829            // Verify that padding bytes are zero.
830            fidl::decode!(
831                fidl::encoding::UnboundedVector<
832                    fidl_fuchsia_driver_framework_common::CompositeInfo,
833                >,
834                D,
835                &mut self.specs,
836                decoder,
837                offset + 0,
838                _depth
839            )?;
840            Ok(())
841        }
842    }
843
844    impl fidl::encoding::ValueTypeMarker for DriverHostInfoIteratorGetNextResponse {
845        type Borrowed<'a> = &'a Self;
846        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
847            value
848        }
849    }
850
851    unsafe impl fidl::encoding::TypeMarker for DriverHostInfoIteratorGetNextResponse {
852        type Owned = Self;
853
854        #[inline(always)]
855        fn inline_align(_context: fidl::encoding::Context) -> usize {
856            8
857        }
858
859        #[inline(always)]
860        fn inline_size(_context: fidl::encoding::Context) -> usize {
861            16
862        }
863    }
864
865    unsafe impl<D: fidl::encoding::ResourceDialect>
866        fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D>
867        for &DriverHostInfoIteratorGetNextResponse
868    {
869        #[inline]
870        unsafe fn encode(
871            self,
872            encoder: &mut fidl::encoding::Encoder<'_, D>,
873            offset: usize,
874            _depth: fidl::encoding::Depth,
875        ) -> fidl::Result<()> {
876            encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
877            // Delegate to tuple encoding.
878            fidl::encoding::Encode::<DriverHostInfoIteratorGetNextResponse, D>::encode(
879                (
880                    <fidl::encoding::UnboundedVector<DriverHostInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_hosts),
881                ),
882                encoder, offset, _depth
883            )
884        }
885    }
886    unsafe impl<
887        D: fidl::encoding::ResourceDialect,
888        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DriverHostInfo>, D>,
889    > fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D> for (T0,)
890    {
891        #[inline]
892        unsafe fn encode(
893            self,
894            encoder: &mut fidl::encoding::Encoder<'_, D>,
895            offset: usize,
896            depth: fidl::encoding::Depth,
897        ) -> fidl::Result<()> {
898            encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
899            // Zero out padding regions. There's no need to apply masks
900            // because the unmasked parts will be overwritten by fields.
901            // Write the fields.
902            self.0.encode(encoder, offset + 0, depth)?;
903            Ok(())
904        }
905    }
906
907    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
908        for DriverHostInfoIteratorGetNextResponse
909    {
910        #[inline(always)]
911        fn new_empty() -> Self {
912            Self {
913                driver_hosts: fidl::new_empty!(fidl::encoding::UnboundedVector<DriverHostInfo>, D),
914            }
915        }
916
917        #[inline]
918        unsafe fn decode(
919            &mut self,
920            decoder: &mut fidl::encoding::Decoder<'_, D>,
921            offset: usize,
922            _depth: fidl::encoding::Depth,
923        ) -> fidl::Result<()> {
924            decoder.debug_check_bounds::<Self>(offset);
925            // Verify that padding bytes are zero.
926            fidl::decode!(
927                fidl::encoding::UnboundedVector<DriverHostInfo>,
928                D,
929                &mut self.driver_hosts,
930                decoder,
931                offset + 0,
932                _depth
933            )?;
934            Ok(())
935        }
936    }
937
938    impl fidl::encoding::ValueTypeMarker for DriverInfoIteratorGetNextResponse {
939        type Borrowed<'a> = &'a Self;
940        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
941            value
942        }
943    }
944
945    unsafe impl fidl::encoding::TypeMarker for DriverInfoIteratorGetNextResponse {
946        type Owned = Self;
947
948        #[inline(always)]
949        fn inline_align(_context: fidl::encoding::Context) -> usize {
950            8
951        }
952
953        #[inline(always)]
954        fn inline_size(_context: fidl::encoding::Context) -> usize {
955            16
956        }
957    }
958
959    unsafe impl<D: fidl::encoding::ResourceDialect>
960        fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D>
961        for &DriverInfoIteratorGetNextResponse
962    {
963        #[inline]
964        unsafe fn encode(
965            self,
966            encoder: &mut fidl::encoding::Encoder<'_, D>,
967            offset: usize,
968            _depth: fidl::encoding::Depth,
969        ) -> fidl::Result<()> {
970            encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
971            // Delegate to tuple encoding.
972            fidl::encoding::Encode::<DriverInfoIteratorGetNextResponse, D>::encode(
973                (
974                    <fidl::encoding::UnboundedVector<
975                        fidl_fuchsia_driver_framework_common::DriverInfo,
976                    > as fidl::encoding::ValueTypeMarker>::borrow(&self.drivers),
977                ),
978                encoder,
979                offset,
980                _depth,
981            )
982        }
983    }
984    unsafe impl<
985        D: fidl::encoding::ResourceDialect,
986        T0: fidl::encoding::Encode<
987                fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
988                D,
989            >,
990    > fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D> for (T0,)
991    {
992        #[inline]
993        unsafe fn encode(
994            self,
995            encoder: &mut fidl::encoding::Encoder<'_, D>,
996            offset: usize,
997            depth: fidl::encoding::Depth,
998        ) -> fidl::Result<()> {
999            encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
1000            // Zero out padding regions. There's no need to apply masks
1001            // because the unmasked parts will be overwritten by fields.
1002            // Write the fields.
1003            self.0.encode(encoder, offset + 0, depth)?;
1004            Ok(())
1005        }
1006    }
1007
1008    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1009        for DriverInfoIteratorGetNextResponse
1010    {
1011        #[inline(always)]
1012        fn new_empty() -> Self {
1013            Self {
1014                drivers: fidl::new_empty!(
1015                    fidl::encoding::UnboundedVector<
1016                        fidl_fuchsia_driver_framework_common::DriverInfo,
1017                    >,
1018                    D
1019                ),
1020            }
1021        }
1022
1023        #[inline]
1024        unsafe fn decode(
1025            &mut self,
1026            decoder: &mut fidl::encoding::Decoder<'_, D>,
1027            offset: usize,
1028            _depth: fidl::encoding::Depth,
1029        ) -> fidl::Result<()> {
1030            decoder.debug_check_bounds::<Self>(offset);
1031            // Verify that padding bytes are zero.
1032            fidl::decode!(
1033                fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
1034                D,
1035                &mut self.drivers,
1036                decoder,
1037                offset + 0,
1038                _depth
1039            )?;
1040            Ok(())
1041        }
1042    }
1043
1044    impl fidl::encoding::ValueTypeMarker for ManagerAddTestNodeRequest {
1045        type Borrowed<'a> = &'a Self;
1046        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1047            value
1048        }
1049    }
1050
1051    unsafe impl fidl::encoding::TypeMarker for ManagerAddTestNodeRequest {
1052        type Owned = Self;
1053
1054        #[inline(always)]
1055        fn inline_align(_context: fidl::encoding::Context) -> usize {
1056            8
1057        }
1058
1059        #[inline(always)]
1060        fn inline_size(_context: fidl::encoding::Context) -> usize {
1061            16
1062        }
1063    }
1064
1065    unsafe impl<D: fidl::encoding::ResourceDialect>
1066        fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for &ManagerAddTestNodeRequest
1067    {
1068        #[inline]
1069        unsafe fn encode(
1070            self,
1071            encoder: &mut fidl::encoding::Encoder<'_, D>,
1072            offset: usize,
1073            _depth: fidl::encoding::Depth,
1074        ) -> fidl::Result<()> {
1075            encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
1076            // Delegate to tuple encoding.
1077            fidl::encoding::Encode::<ManagerAddTestNodeRequest, D>::encode(
1078                (<TestNodeAddArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
1079                encoder,
1080                offset,
1081                _depth,
1082            )
1083        }
1084    }
1085    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<TestNodeAddArgs, D>>
1086        fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for (T0,)
1087    {
1088        #[inline]
1089        unsafe fn encode(
1090            self,
1091            encoder: &mut fidl::encoding::Encoder<'_, D>,
1092            offset: usize,
1093            depth: fidl::encoding::Depth,
1094        ) -> fidl::Result<()> {
1095            encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
1096            // Zero out padding regions. There's no need to apply masks
1097            // because the unmasked parts will be overwritten by fields.
1098            // Write the fields.
1099            self.0.encode(encoder, offset + 0, depth)?;
1100            Ok(())
1101        }
1102    }
1103
1104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1105        for ManagerAddTestNodeRequest
1106    {
1107        #[inline(always)]
1108        fn new_empty() -> Self {
1109            Self { args: fidl::new_empty!(TestNodeAddArgs, D) }
1110        }
1111
1112        #[inline]
1113        unsafe fn decode(
1114            &mut self,
1115            decoder: &mut fidl::encoding::Decoder<'_, D>,
1116            offset: usize,
1117            _depth: fidl::encoding::Depth,
1118        ) -> fidl::Result<()> {
1119            decoder.debug_check_bounds::<Self>(offset);
1120            // Verify that padding bytes are zero.
1121            fidl::decode!(TestNodeAddArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
1122            Ok(())
1123        }
1124    }
1125
1126    impl fidl::encoding::ValueTypeMarker for ManagerDisableDriverRequest {
1127        type Borrowed<'a> = &'a Self;
1128        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1129            value
1130        }
1131    }
1132
1133    unsafe impl fidl::encoding::TypeMarker for ManagerDisableDriverRequest {
1134        type Owned = Self;
1135
1136        #[inline(always)]
1137        fn inline_align(_context: fidl::encoding::Context) -> usize {
1138            8
1139        }
1140
1141        #[inline(always)]
1142        fn inline_size(_context: fidl::encoding::Context) -> usize {
1143            32
1144        }
1145    }
1146
1147    unsafe impl<D: fidl::encoding::ResourceDialect>
1148        fidl::encoding::Encode<ManagerDisableDriverRequest, D> for &ManagerDisableDriverRequest
1149    {
1150        #[inline]
1151        unsafe fn encode(
1152            self,
1153            encoder: &mut fidl::encoding::Encoder<'_, D>,
1154            offset: usize,
1155            _depth: fidl::encoding::Depth,
1156        ) -> fidl::Result<()> {
1157            encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
1158            // Delegate to tuple encoding.
1159            fidl::encoding::Encode::<ManagerDisableDriverRequest, D>::encode(
1160                (
1161                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1162                    <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1163                ),
1164                encoder, offset, _depth
1165            )
1166        }
1167    }
1168    unsafe impl<
1169        D: fidl::encoding::ResourceDialect,
1170        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1171        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1172    > fidl::encoding::Encode<ManagerDisableDriverRequest, D> for (T0, T1)
1173    {
1174        #[inline]
1175        unsafe fn encode(
1176            self,
1177            encoder: &mut fidl::encoding::Encoder<'_, D>,
1178            offset: usize,
1179            depth: fidl::encoding::Depth,
1180        ) -> fidl::Result<()> {
1181            encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
1182            // Zero out padding regions. There's no need to apply masks
1183            // because the unmasked parts will be overwritten by fields.
1184            // Write the fields.
1185            self.0.encode(encoder, offset + 0, depth)?;
1186            self.1.encode(encoder, offset + 16, depth)?;
1187            Ok(())
1188        }
1189    }
1190
1191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1192        for ManagerDisableDriverRequest
1193    {
1194        #[inline(always)]
1195        fn new_empty() -> Self {
1196            Self {
1197                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1198                package_hash: fidl::new_empty!(
1199                    fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1200                    D
1201                ),
1202            }
1203        }
1204
1205        #[inline]
1206        unsafe fn decode(
1207            &mut self,
1208            decoder: &mut fidl::encoding::Decoder<'_, D>,
1209            offset: usize,
1210            _depth: fidl::encoding::Depth,
1211        ) -> fidl::Result<()> {
1212            decoder.debug_check_bounds::<Self>(offset);
1213            // Verify that padding bytes are zero.
1214            fidl::decode!(
1215                fidl::encoding::BoundedString<4096>,
1216                D,
1217                &mut self.driver_url,
1218                decoder,
1219                offset + 0,
1220                _depth
1221            )?;
1222            fidl::decode!(
1223                fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1224                D,
1225                &mut self.package_hash,
1226                decoder,
1227                offset + 16,
1228                _depth
1229            )?;
1230            Ok(())
1231        }
1232    }
1233
1234    impl fidl::encoding::ValueTypeMarker for ManagerEnableDriverRequest {
1235        type Borrowed<'a> = &'a Self;
1236        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1237            value
1238        }
1239    }
1240
1241    unsafe impl fidl::encoding::TypeMarker for ManagerEnableDriverRequest {
1242        type Owned = Self;
1243
1244        #[inline(always)]
1245        fn inline_align(_context: fidl::encoding::Context) -> usize {
1246            8
1247        }
1248
1249        #[inline(always)]
1250        fn inline_size(_context: fidl::encoding::Context) -> usize {
1251            32
1252        }
1253    }
1254
1255    unsafe impl<D: fidl::encoding::ResourceDialect>
1256        fidl::encoding::Encode<ManagerEnableDriverRequest, D> for &ManagerEnableDriverRequest
1257    {
1258        #[inline]
1259        unsafe fn encode(
1260            self,
1261            encoder: &mut fidl::encoding::Encoder<'_, D>,
1262            offset: usize,
1263            _depth: fidl::encoding::Depth,
1264        ) -> fidl::Result<()> {
1265            encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1266            // Delegate to tuple encoding.
1267            fidl::encoding::Encode::<ManagerEnableDriverRequest, D>::encode(
1268                (
1269                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1270                    <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1271                ),
1272                encoder, offset, _depth
1273            )
1274        }
1275    }
1276    unsafe impl<
1277        D: fidl::encoding::ResourceDialect,
1278        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1279        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1280    > fidl::encoding::Encode<ManagerEnableDriverRequest, D> for (T0, T1)
1281    {
1282        #[inline]
1283        unsafe fn encode(
1284            self,
1285            encoder: &mut fidl::encoding::Encoder<'_, D>,
1286            offset: usize,
1287            depth: fidl::encoding::Depth,
1288        ) -> fidl::Result<()> {
1289            encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1290            // Zero out padding regions. There's no need to apply masks
1291            // because the unmasked parts will be overwritten by fields.
1292            // Write the fields.
1293            self.0.encode(encoder, offset + 0, depth)?;
1294            self.1.encode(encoder, offset + 16, depth)?;
1295            Ok(())
1296        }
1297    }
1298
1299    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1300        for ManagerEnableDriverRequest
1301    {
1302        #[inline(always)]
1303        fn new_empty() -> Self {
1304            Self {
1305                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1306                package_hash: fidl::new_empty!(
1307                    fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1308                    D
1309                ),
1310            }
1311        }
1312
1313        #[inline]
1314        unsafe fn decode(
1315            &mut self,
1316            decoder: &mut fidl::encoding::Decoder<'_, D>,
1317            offset: usize,
1318            _depth: fidl::encoding::Depth,
1319        ) -> fidl::Result<()> {
1320            decoder.debug_check_bounds::<Self>(offset);
1321            // Verify that padding bytes are zero.
1322            fidl::decode!(
1323                fidl::encoding::BoundedString<4096>,
1324                D,
1325                &mut self.driver_url,
1326                decoder,
1327                offset + 0,
1328                _depth
1329            )?;
1330            fidl::decode!(
1331                fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1332                D,
1333                &mut self.package_hash,
1334                decoder,
1335                offset + 16,
1336                _depth
1337            )?;
1338            Ok(())
1339        }
1340    }
1341
1342    impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverRequest {
1343        type Borrowed<'a> = &'a Self;
1344        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1345            value
1346        }
1347    }
1348
1349    unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverRequest {
1350        type Owned = Self;
1351
1352        #[inline(always)]
1353        fn inline_align(_context: fidl::encoding::Context) -> usize {
1354            8
1355        }
1356
1357        #[inline(always)]
1358        fn inline_size(_context: fidl::encoding::Context) -> usize {
1359            16
1360        }
1361    }
1362
1363    unsafe impl<D: fidl::encoding::ResourceDialect>
1364        fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D>
1365        for &ManagerRebindCompositesWithDriverRequest
1366    {
1367        #[inline]
1368        unsafe fn encode(
1369            self,
1370            encoder: &mut fidl::encoding::Encoder<'_, D>,
1371            offset: usize,
1372            _depth: fidl::encoding::Depth,
1373        ) -> fidl::Result<()> {
1374            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1375            // Delegate to tuple encoding.
1376            fidl::encoding::Encode::<ManagerRebindCompositesWithDriverRequest, D>::encode(
1377                (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1378                    &self.driver_url,
1379                ),),
1380                encoder,
1381                offset,
1382                _depth,
1383            )
1384        }
1385    }
1386    unsafe impl<
1387        D: fidl::encoding::ResourceDialect,
1388        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1389    > fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D> for (T0,)
1390    {
1391        #[inline]
1392        unsafe fn encode(
1393            self,
1394            encoder: &mut fidl::encoding::Encoder<'_, D>,
1395            offset: usize,
1396            depth: fidl::encoding::Depth,
1397        ) -> fidl::Result<()> {
1398            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1399            // Zero out padding regions. There's no need to apply masks
1400            // because the unmasked parts will be overwritten by fields.
1401            // Write the fields.
1402            self.0.encode(encoder, offset + 0, depth)?;
1403            Ok(())
1404        }
1405    }
1406
1407    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1408        for ManagerRebindCompositesWithDriverRequest
1409    {
1410        #[inline(always)]
1411        fn new_empty() -> Self {
1412            Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1413        }
1414
1415        #[inline]
1416        unsafe fn decode(
1417            &mut self,
1418            decoder: &mut fidl::encoding::Decoder<'_, D>,
1419            offset: usize,
1420            _depth: fidl::encoding::Depth,
1421        ) -> fidl::Result<()> {
1422            decoder.debug_check_bounds::<Self>(offset);
1423            // Verify that padding bytes are zero.
1424            fidl::decode!(
1425                fidl::encoding::BoundedString<4096>,
1426                D,
1427                &mut self.driver_url,
1428                decoder,
1429                offset + 0,
1430                _depth
1431            )?;
1432            Ok(())
1433        }
1434    }
1435
1436    impl fidl::encoding::ValueTypeMarker for ManagerRemoveTestNodeRequest {
1437        type Borrowed<'a> = &'a Self;
1438        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1439            value
1440        }
1441    }
1442
1443    unsafe impl fidl::encoding::TypeMarker for ManagerRemoveTestNodeRequest {
1444        type Owned = Self;
1445
1446        #[inline(always)]
1447        fn inline_align(_context: fidl::encoding::Context) -> usize {
1448            8
1449        }
1450
1451        #[inline(always)]
1452        fn inline_size(_context: fidl::encoding::Context) -> usize {
1453            16
1454        }
1455    }
1456
1457    unsafe impl<D: fidl::encoding::ResourceDialect>
1458        fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for &ManagerRemoveTestNodeRequest
1459    {
1460        #[inline]
1461        unsafe fn encode(
1462            self,
1463            encoder: &mut fidl::encoding::Encoder<'_, D>,
1464            offset: usize,
1465            _depth: fidl::encoding::Depth,
1466        ) -> fidl::Result<()> {
1467            encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1468            // Delegate to tuple encoding.
1469            fidl::encoding::Encode::<ManagerRemoveTestNodeRequest, D>::encode(
1470                (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1471                    &self.name,
1472                ),),
1473                encoder,
1474                offset,
1475                _depth,
1476            )
1477        }
1478    }
1479    unsafe impl<
1480        D: fidl::encoding::ResourceDialect,
1481        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1482    > fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for (T0,)
1483    {
1484        #[inline]
1485        unsafe fn encode(
1486            self,
1487            encoder: &mut fidl::encoding::Encoder<'_, D>,
1488            offset: usize,
1489            depth: fidl::encoding::Depth,
1490        ) -> fidl::Result<()> {
1491            encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1492            // Zero out padding regions. There's no need to apply masks
1493            // because the unmasked parts will be overwritten by fields.
1494            // Write the fields.
1495            self.0.encode(encoder, offset + 0, depth)?;
1496            Ok(())
1497        }
1498    }
1499
1500    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1501        for ManagerRemoveTestNodeRequest
1502    {
1503        #[inline(always)]
1504        fn new_empty() -> Self {
1505            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1506        }
1507
1508        #[inline]
1509        unsafe fn decode(
1510            &mut self,
1511            decoder: &mut fidl::encoding::Decoder<'_, D>,
1512            offset: usize,
1513            _depth: fidl::encoding::Depth,
1514        ) -> fidl::Result<()> {
1515            decoder.debug_check_bounds::<Self>(offset);
1516            // Verify that padding bytes are zero.
1517            fidl::decode!(
1518                fidl::encoding::BoundedString<1024>,
1519                D,
1520                &mut self.name,
1521                decoder,
1522                offset + 0,
1523                _depth
1524            )?;
1525            Ok(())
1526        }
1527    }
1528
1529    impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsRequest {
1530        type Borrowed<'a> = &'a Self;
1531        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1532            value
1533        }
1534    }
1535
1536    unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsRequest {
1537        type Owned = Self;
1538
1539        #[inline(always)]
1540        fn inline_align(_context: fidl::encoding::Context) -> usize {
1541            8
1542        }
1543
1544        #[inline(always)]
1545        fn inline_size(_context: fidl::encoding::Context) -> usize {
1546            24
1547        }
1548    }
1549
1550    unsafe impl<D: fidl::encoding::ResourceDialect>
1551        fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D>
1552        for &ManagerRestartDriverHostsRequest
1553    {
1554        #[inline]
1555        unsafe fn encode(
1556            self,
1557            encoder: &mut fidl::encoding::Encoder<'_, D>,
1558            offset: usize,
1559            _depth: fidl::encoding::Depth,
1560        ) -> fidl::Result<()> {
1561            encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1562            // Delegate to tuple encoding.
1563            fidl::encoding::Encode::<ManagerRestartDriverHostsRequest, D>::encode(
1564                (
1565                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1566                    <RestartRematchFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.rematch_flags),
1567                ),
1568                encoder, offset, _depth
1569            )
1570        }
1571    }
1572    unsafe impl<
1573        D: fidl::encoding::ResourceDialect,
1574        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1575        T1: fidl::encoding::Encode<RestartRematchFlags, D>,
1576    > fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D> for (T0, T1)
1577    {
1578        #[inline]
1579        unsafe fn encode(
1580            self,
1581            encoder: &mut fidl::encoding::Encoder<'_, D>,
1582            offset: usize,
1583            depth: fidl::encoding::Depth,
1584        ) -> fidl::Result<()> {
1585            encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1586            // Zero out padding regions. There's no need to apply masks
1587            // because the unmasked parts will be overwritten by fields.
1588            unsafe {
1589                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1590                (ptr as *mut u64).write_unaligned(0);
1591            }
1592            // Write the fields.
1593            self.0.encode(encoder, offset + 0, depth)?;
1594            self.1.encode(encoder, offset + 16, depth)?;
1595            Ok(())
1596        }
1597    }
1598
1599    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1600        for ManagerRestartDriverHostsRequest
1601    {
1602        #[inline(always)]
1603        fn new_empty() -> Self {
1604            Self {
1605                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1606                rematch_flags: fidl::new_empty!(RestartRematchFlags, D),
1607            }
1608        }
1609
1610        #[inline]
1611        unsafe fn decode(
1612            &mut self,
1613            decoder: &mut fidl::encoding::Decoder<'_, D>,
1614            offset: usize,
1615            _depth: fidl::encoding::Depth,
1616        ) -> fidl::Result<()> {
1617            decoder.debug_check_bounds::<Self>(offset);
1618            // Verify that padding bytes are zero.
1619            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1620            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1621            let mask = 0xffffffff00000000u64;
1622            let maskedval = padval & mask;
1623            if maskedval != 0 {
1624                return Err(fidl::Error::NonZeroPadding {
1625                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1626                });
1627            }
1628            fidl::decode!(
1629                fidl::encoding::BoundedString<4096>,
1630                D,
1631                &mut self.driver_url,
1632                decoder,
1633                offset + 0,
1634                _depth
1635            )?;
1636            fidl::decode!(
1637                RestartRematchFlags,
1638                D,
1639                &mut self.rematch_flags,
1640                decoder,
1641                offset + 16,
1642                _depth
1643            )?;
1644            Ok(())
1645        }
1646    }
1647
1648    impl fidl::encoding::ValueTypeMarker for ManagerRunHealthCheckRequest {
1649        type Borrowed<'a> = &'a Self;
1650        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1651            value
1652        }
1653    }
1654
1655    unsafe impl fidl::encoding::TypeMarker for ManagerRunHealthCheckRequest {
1656        type Owned = Self;
1657
1658        #[inline(always)]
1659        fn inline_align(_context: fidl::encoding::Context) -> usize {
1660            8
1661        }
1662
1663        #[inline(always)]
1664        fn inline_size(_context: fidl::encoding::Context) -> usize {
1665            24
1666        }
1667    }
1668
1669    unsafe impl<D: fidl::encoding::ResourceDialect>
1670        fidl::encoding::Encode<ManagerRunHealthCheckRequest, D> for &ManagerRunHealthCheckRequest
1671    {
1672        #[inline]
1673        unsafe fn encode(
1674            self,
1675            encoder: &mut fidl::encoding::Encoder<'_, D>,
1676            offset: usize,
1677            _depth: fidl::encoding::Depth,
1678        ) -> fidl::Result<()> {
1679            encoder.debug_check_bounds::<ManagerRunHealthCheckRequest>(offset);
1680            // Delegate to tuple encoding.
1681            fidl::encoding::Encode::<ManagerRunHealthCheckRequest, D>::encode(
1682                (
1683                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.moniker),
1684                    <fidl_fuchsia_driver_framework_common::HealthCheckRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.request),
1685                ),
1686                encoder, offset, _depth
1687            )
1688        }
1689    }
1690    unsafe impl<
1691        D: fidl::encoding::ResourceDialect,
1692        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1693        T1: fidl::encoding::Encode<fidl_fuchsia_driver_framework_common::HealthCheckRequest, D>,
1694    > fidl::encoding::Encode<ManagerRunHealthCheckRequest, D> for (T0, T1)
1695    {
1696        #[inline]
1697        unsafe fn encode(
1698            self,
1699            encoder: &mut fidl::encoding::Encoder<'_, D>,
1700            offset: usize,
1701            depth: fidl::encoding::Depth,
1702        ) -> fidl::Result<()> {
1703            encoder.debug_check_bounds::<ManagerRunHealthCheckRequest>(offset);
1704            // Zero out padding regions. There's no need to apply masks
1705            // because the unmasked parts will be overwritten by fields.
1706            unsafe {
1707                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1708                (ptr as *mut u64).write_unaligned(0);
1709            }
1710            // Write the fields.
1711            self.0.encode(encoder, offset + 0, depth)?;
1712            self.1.encode(encoder, offset + 16, depth)?;
1713            Ok(())
1714        }
1715    }
1716
1717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1718        for ManagerRunHealthCheckRequest
1719    {
1720        #[inline(always)]
1721        fn new_empty() -> Self {
1722            Self {
1723                moniker: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D),
1724                request: fidl::new_empty!(
1725                    fidl_fuchsia_driver_framework_common::HealthCheckRequest,
1726                    D
1727                ),
1728            }
1729        }
1730
1731        #[inline]
1732        unsafe fn decode(
1733            &mut self,
1734            decoder: &mut fidl::encoding::Decoder<'_, D>,
1735            offset: usize,
1736            _depth: fidl::encoding::Depth,
1737        ) -> fidl::Result<()> {
1738            decoder.debug_check_bounds::<Self>(offset);
1739            // Verify that padding bytes are zero.
1740            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1741            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1742            let mask = 0xffffffff00000000u64;
1743            let maskedval = padval & mask;
1744            if maskedval != 0 {
1745                return Err(fidl::Error::NonZeroPadding {
1746                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1747                });
1748            }
1749            fidl::decode!(
1750                fidl::encoding::BoundedString<1024>,
1751                D,
1752                &mut self.moniker,
1753                decoder,
1754                offset + 0,
1755                _depth
1756            )?;
1757            fidl::decode!(
1758                fidl_fuchsia_driver_framework_common::HealthCheckRequest,
1759                D,
1760                &mut self.request,
1761                decoder,
1762                offset + 16,
1763                _depth
1764            )?;
1765            Ok(())
1766        }
1767    }
1768
1769    impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodes2Response {
1770        type Borrowed<'a> = &'a Self;
1771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1772            value
1773        }
1774    }
1775
1776    unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodes2Response {
1777        type Owned = Self;
1778
1779        #[inline(always)]
1780        fn inline_align(_context: fidl::encoding::Context) -> usize {
1781            8
1782        }
1783
1784        #[inline(always)]
1785        fn inline_size(_context: fidl::encoding::Context) -> usize {
1786            16
1787        }
1788    }
1789
1790    unsafe impl<D: fidl::encoding::ResourceDialect>
1791        fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D>
1792        for &ManagerBindAllUnboundNodes2Response
1793    {
1794        #[inline]
1795        unsafe fn encode(
1796            self,
1797            encoder: &mut fidl::encoding::Encoder<'_, D>,
1798            offset: usize,
1799            _depth: fidl::encoding::Depth,
1800        ) -> fidl::Result<()> {
1801            encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1802            // Delegate to tuple encoding.
1803            fidl::encoding::Encode::<ManagerBindAllUnboundNodes2Response, D>::encode(
1804                (
1805                    <fidl::encoding::Vector<NodeBindingInfo, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1806                ),
1807                encoder, offset, _depth
1808            )
1809        }
1810    }
1811    unsafe impl<
1812        D: fidl::encoding::ResourceDialect,
1813        T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 256>, D>,
1814    > fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D> for (T0,)
1815    {
1816        #[inline]
1817        unsafe fn encode(
1818            self,
1819            encoder: &mut fidl::encoding::Encoder<'_, D>,
1820            offset: usize,
1821            depth: fidl::encoding::Depth,
1822        ) -> fidl::Result<()> {
1823            encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1824            // Zero out padding regions. There's no need to apply masks
1825            // because the unmasked parts will be overwritten by fields.
1826            // Write the fields.
1827            self.0.encode(encoder, offset + 0, depth)?;
1828            Ok(())
1829        }
1830    }
1831
1832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1833        for ManagerBindAllUnboundNodes2Response
1834    {
1835        #[inline(always)]
1836        fn new_empty() -> Self {
1837            Self {
1838                binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 256>, D),
1839            }
1840        }
1841
1842        #[inline]
1843        unsafe fn decode(
1844            &mut self,
1845            decoder: &mut fidl::encoding::Decoder<'_, D>,
1846            offset: usize,
1847            _depth: fidl::encoding::Depth,
1848        ) -> fidl::Result<()> {
1849            decoder.debug_check_bounds::<Self>(offset);
1850            // Verify that padding bytes are zero.
1851            fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 256>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1852            Ok(())
1853        }
1854    }
1855
1856    impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodesResponse {
1857        type Borrowed<'a> = &'a Self;
1858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1859            value
1860        }
1861    }
1862
1863    unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodesResponse {
1864        type Owned = Self;
1865
1866        #[inline(always)]
1867        fn inline_align(_context: fidl::encoding::Context) -> usize {
1868            8
1869        }
1870
1871        #[inline(always)]
1872        fn inline_size(_context: fidl::encoding::Context) -> usize {
1873            16
1874        }
1875    }
1876
1877    unsafe impl<D: fidl::encoding::ResourceDialect>
1878        fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D>
1879        for &ManagerBindAllUnboundNodesResponse
1880    {
1881        #[inline]
1882        unsafe fn encode(
1883            self,
1884            encoder: &mut fidl::encoding::Encoder<'_, D>,
1885            offset: usize,
1886            _depth: fidl::encoding::Depth,
1887        ) -> fidl::Result<()> {
1888            encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1889            // Delegate to tuple encoding.
1890            fidl::encoding::Encode::<ManagerBindAllUnboundNodesResponse, D>::encode(
1891                (
1892                    <fidl::encoding::Vector<NodeBindingInfo, 10> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1893                ),
1894                encoder, offset, _depth
1895            )
1896        }
1897    }
1898    unsafe impl<
1899        D: fidl::encoding::ResourceDialect,
1900        T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 10>, D>,
1901    > fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D> for (T0,)
1902    {
1903        #[inline]
1904        unsafe fn encode(
1905            self,
1906            encoder: &mut fidl::encoding::Encoder<'_, D>,
1907            offset: usize,
1908            depth: fidl::encoding::Depth,
1909        ) -> fidl::Result<()> {
1910            encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1911            // Zero out padding regions. There's no need to apply masks
1912            // because the unmasked parts will be overwritten by fields.
1913            // Write the fields.
1914            self.0.encode(encoder, offset + 0, depth)?;
1915            Ok(())
1916        }
1917    }
1918
1919    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1920        for ManagerBindAllUnboundNodesResponse
1921    {
1922        #[inline(always)]
1923        fn new_empty() -> Self {
1924            Self {
1925                binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 10>, D),
1926            }
1927        }
1928
1929        #[inline]
1930        unsafe fn decode(
1931            &mut self,
1932            decoder: &mut fidl::encoding::Decoder<'_, D>,
1933            offset: usize,
1934            _depth: fidl::encoding::Depth,
1935        ) -> fidl::Result<()> {
1936            decoder.debug_check_bounds::<Self>(offset);
1937            // Verify that padding bytes are zero.
1938            fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 10>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1939            Ok(())
1940        }
1941    }
1942
1943    impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverResponse {
1944        type Borrowed<'a> = &'a Self;
1945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1946            value
1947        }
1948    }
1949
1950    unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverResponse {
1951        type Owned = Self;
1952
1953        #[inline(always)]
1954        fn inline_align(_context: fidl::encoding::Context) -> usize {
1955            4
1956        }
1957
1958        #[inline(always)]
1959        fn inline_size(_context: fidl::encoding::Context) -> usize {
1960            4
1961        }
1962        #[inline(always)]
1963        fn encode_is_copy() -> bool {
1964            true
1965        }
1966
1967        #[inline(always)]
1968        fn decode_is_copy() -> bool {
1969            true
1970        }
1971    }
1972
1973    unsafe impl<D: fidl::encoding::ResourceDialect>
1974        fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D>
1975        for &ManagerRebindCompositesWithDriverResponse
1976    {
1977        #[inline]
1978        unsafe fn encode(
1979            self,
1980            encoder: &mut fidl::encoding::Encoder<'_, D>,
1981            offset: usize,
1982            _depth: fidl::encoding::Depth,
1983        ) -> fidl::Result<()> {
1984            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1985            unsafe {
1986                // Copy the object into the buffer.
1987                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1988                (buf_ptr as *mut ManagerRebindCompositesWithDriverResponse).write_unaligned(
1989                    (self as *const ManagerRebindCompositesWithDriverResponse).read(),
1990                );
1991                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1992                // done second because the memcpy will write garbage to these bytes.
1993            }
1994            Ok(())
1995        }
1996    }
1997    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1998        fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D> for (T0,)
1999    {
2000        #[inline]
2001        unsafe fn encode(
2002            self,
2003            encoder: &mut fidl::encoding::Encoder<'_, D>,
2004            offset: usize,
2005            depth: fidl::encoding::Depth,
2006        ) -> fidl::Result<()> {
2007            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
2008            // Zero out padding regions. There's no need to apply masks
2009            // because the unmasked parts will be overwritten by fields.
2010            // Write the fields.
2011            self.0.encode(encoder, offset + 0, depth)?;
2012            Ok(())
2013        }
2014    }
2015
2016    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2017        for ManagerRebindCompositesWithDriverResponse
2018    {
2019        #[inline(always)]
2020        fn new_empty() -> Self {
2021            Self { count: fidl::new_empty!(u32, D) }
2022        }
2023
2024        #[inline]
2025        unsafe fn decode(
2026            &mut self,
2027            decoder: &mut fidl::encoding::Decoder<'_, D>,
2028            offset: usize,
2029            _depth: fidl::encoding::Depth,
2030        ) -> fidl::Result<()> {
2031            decoder.debug_check_bounds::<Self>(offset);
2032            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2033            // Verify that padding bytes are zero.
2034            // Copy from the buffer into the object.
2035            unsafe {
2036                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2037            }
2038            Ok(())
2039        }
2040    }
2041
2042    impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsResponse {
2043        type Borrowed<'a> = &'a Self;
2044        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2045            value
2046        }
2047    }
2048
2049    unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsResponse {
2050        type Owned = Self;
2051
2052        #[inline(always)]
2053        fn inline_align(_context: fidl::encoding::Context) -> usize {
2054            4
2055        }
2056
2057        #[inline(always)]
2058        fn inline_size(_context: fidl::encoding::Context) -> usize {
2059            4
2060        }
2061        #[inline(always)]
2062        fn encode_is_copy() -> bool {
2063            true
2064        }
2065
2066        #[inline(always)]
2067        fn decode_is_copy() -> bool {
2068            true
2069        }
2070    }
2071
2072    unsafe impl<D: fidl::encoding::ResourceDialect>
2073        fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D>
2074        for &ManagerRestartDriverHostsResponse
2075    {
2076        #[inline]
2077        unsafe fn encode(
2078            self,
2079            encoder: &mut fidl::encoding::Encoder<'_, D>,
2080            offset: usize,
2081            _depth: fidl::encoding::Depth,
2082        ) -> fidl::Result<()> {
2083            encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
2084            unsafe {
2085                // Copy the object into the buffer.
2086                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2087                (buf_ptr as *mut ManagerRestartDriverHostsResponse)
2088                    .write_unaligned((self as *const ManagerRestartDriverHostsResponse).read());
2089                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2090                // done second because the memcpy will write garbage to these bytes.
2091            }
2092            Ok(())
2093        }
2094    }
2095    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
2096        fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D> for (T0,)
2097    {
2098        #[inline]
2099        unsafe fn encode(
2100            self,
2101            encoder: &mut fidl::encoding::Encoder<'_, D>,
2102            offset: usize,
2103            depth: fidl::encoding::Depth,
2104        ) -> fidl::Result<()> {
2105            encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
2106            // Zero out padding regions. There's no need to apply masks
2107            // because the unmasked parts will be overwritten by fields.
2108            // Write the fields.
2109            self.0.encode(encoder, offset + 0, depth)?;
2110            Ok(())
2111        }
2112    }
2113
2114    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2115        for ManagerRestartDriverHostsResponse
2116    {
2117        #[inline(always)]
2118        fn new_empty() -> Self {
2119            Self { count: fidl::new_empty!(u32, D) }
2120        }
2121
2122        #[inline]
2123        unsafe fn decode(
2124            &mut self,
2125            decoder: &mut fidl::encoding::Decoder<'_, D>,
2126            offset: usize,
2127            _depth: fidl::encoding::Depth,
2128        ) -> fidl::Result<()> {
2129            decoder.debug_check_bounds::<Self>(offset);
2130            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2131            // Verify that padding bytes are zero.
2132            // Copy from the buffer into the object.
2133            unsafe {
2134                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2135            }
2136            Ok(())
2137        }
2138    }
2139
2140    impl fidl::encoding::ValueTypeMarker for NodeInfoIteratorGetNextResponse {
2141        type Borrowed<'a> = &'a Self;
2142        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2143            value
2144        }
2145    }
2146
2147    unsafe impl fidl::encoding::TypeMarker for NodeInfoIteratorGetNextResponse {
2148        type Owned = Self;
2149
2150        #[inline(always)]
2151        fn inline_align(_context: fidl::encoding::Context) -> usize {
2152            8
2153        }
2154
2155        #[inline(always)]
2156        fn inline_size(_context: fidl::encoding::Context) -> usize {
2157            16
2158        }
2159    }
2160
2161    unsafe impl<D: fidl::encoding::ResourceDialect>
2162        fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D>
2163        for &NodeInfoIteratorGetNextResponse
2164    {
2165        #[inline]
2166        unsafe fn encode(
2167            self,
2168            encoder: &mut fidl::encoding::Encoder<'_, D>,
2169            offset: usize,
2170            _depth: fidl::encoding::Depth,
2171        ) -> fidl::Result<()> {
2172            encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
2173            // Delegate to tuple encoding.
2174            fidl::encoding::Encode::<NodeInfoIteratorGetNextResponse, D>::encode(
2175                (
2176                    <fidl::encoding::UnboundedVector<NodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
2177                ),
2178                encoder, offset, _depth
2179            )
2180        }
2181    }
2182    unsafe impl<
2183        D: fidl::encoding::ResourceDialect,
2184        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeInfo>, D>,
2185    > fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D> for (T0,)
2186    {
2187        #[inline]
2188        unsafe fn encode(
2189            self,
2190            encoder: &mut fidl::encoding::Encoder<'_, D>,
2191            offset: usize,
2192            depth: fidl::encoding::Depth,
2193        ) -> fidl::Result<()> {
2194            encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
2195            // Zero out padding regions. There's no need to apply masks
2196            // because the unmasked parts will be overwritten by fields.
2197            // Write the fields.
2198            self.0.encode(encoder, offset + 0, depth)?;
2199            Ok(())
2200        }
2201    }
2202
2203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2204        for NodeInfoIteratorGetNextResponse
2205    {
2206        #[inline(always)]
2207        fn new_empty() -> Self {
2208            Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeInfo>, D) }
2209        }
2210
2211        #[inline]
2212        unsafe fn decode(
2213            &mut self,
2214            decoder: &mut fidl::encoding::Decoder<'_, D>,
2215            offset: usize,
2216            _depth: fidl::encoding::Depth,
2217        ) -> fidl::Result<()> {
2218            decoder.debug_check_bounds::<Self>(offset);
2219            // Verify that padding bytes are zero.
2220            fidl::decode!(
2221                fidl::encoding::UnboundedVector<NodeInfo>,
2222                D,
2223                &mut self.nodes,
2224                decoder,
2225                offset + 0,
2226                _depth
2227            )?;
2228            Ok(())
2229        }
2230    }
2231
2232    impl CompositeNodeInfo {
2233        #[inline(always)]
2234        fn max_ordinal_present(&self) -> u64 {
2235            if let Some(_) = self.moniker {
2236                return 5;
2237            }
2238            if let Some(_) = self.parent_monikers {
2239                return 4;
2240            }
2241            if let Some(_) = self.composite {
2242                return 3;
2243            }
2244            if let Some(_) = self.topological_path {
2245                return 2;
2246            }
2247            if let Some(_) = self.parent_topological_paths {
2248                return 1;
2249            }
2250            0
2251        }
2252    }
2253
2254    impl fidl::encoding::ValueTypeMarker for CompositeNodeInfo {
2255        type Borrowed<'a> = &'a Self;
2256        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2257            value
2258        }
2259    }
2260
2261    unsafe impl fidl::encoding::TypeMarker for CompositeNodeInfo {
2262        type Owned = Self;
2263
2264        #[inline(always)]
2265        fn inline_align(_context: fidl::encoding::Context) -> usize {
2266            8
2267        }
2268
2269        #[inline(always)]
2270        fn inline_size(_context: fidl::encoding::Context) -> usize {
2271            16
2272        }
2273    }
2274
2275    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeInfo, D>
2276        for &CompositeNodeInfo
2277    {
2278        unsafe fn encode(
2279            self,
2280            encoder: &mut fidl::encoding::Encoder<'_, D>,
2281            offset: usize,
2282            mut depth: fidl::encoding::Depth,
2283        ) -> fidl::Result<()> {
2284            encoder.debug_check_bounds::<CompositeNodeInfo>(offset);
2285            // Vector header
2286            let max_ordinal: u64 = self.max_ordinal_present();
2287            encoder.write_num(max_ordinal, offset);
2288            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2289            // Calling encoder.out_of_line_offset(0) is not allowed.
2290            if max_ordinal == 0 {
2291                return Ok(());
2292            }
2293            depth.increment()?;
2294            let envelope_size = 8;
2295            let bytes_len = max_ordinal as usize * envelope_size;
2296            #[allow(unused_variables)]
2297            let offset = encoder.out_of_line_offset(bytes_len);
2298            let mut _prev_end_offset: usize = 0;
2299            if 1 > max_ordinal {
2300                return Ok(());
2301            }
2302
2303            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2304            // are envelope_size bytes.
2305            let cur_offset: usize = (1 - 1) * envelope_size;
2306
2307            // Zero reserved fields.
2308            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2309
2310            // Safety:
2311            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2312            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2313            //   envelope_size bytes, there is always sufficient room.
2314            fidl::encoding::encode_in_envelope_optional::<
2315                fidl::encoding::UnboundedVector<
2316                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2317                >,
2318                D,
2319            >(
2320                self.parent_topological_paths.as_ref().map(
2321                    <fidl::encoding::UnboundedVector<
2322                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2323                    > as fidl::encoding::ValueTypeMarker>::borrow,
2324                ),
2325                encoder,
2326                offset + cur_offset,
2327                depth,
2328            )?;
2329
2330            _prev_end_offset = cur_offset + envelope_size;
2331            if 2 > max_ordinal {
2332                return Ok(());
2333            }
2334
2335            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2336            // are envelope_size bytes.
2337            let cur_offset: usize = (2 - 1) * envelope_size;
2338
2339            // Zero reserved fields.
2340            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2341
2342            // Safety:
2343            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2344            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2345            //   envelope_size bytes, there is always sufficient room.
2346            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2347                self.topological_path.as_ref().map(
2348                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2349                ),
2350                encoder,
2351                offset + cur_offset,
2352                depth,
2353            )?;
2354
2355            _prev_end_offset = cur_offset + envelope_size;
2356            if 3 > max_ordinal {
2357                return Ok(());
2358            }
2359
2360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2361            // are envelope_size bytes.
2362            let cur_offset: usize = (3 - 1) * envelope_size;
2363
2364            // Zero reserved fields.
2365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2366
2367            // Safety:
2368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2370            //   envelope_size bytes, there is always sufficient room.
2371            fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
2372                self.composite
2373                    .as_ref()
2374                    .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
2375                encoder,
2376                offset + cur_offset,
2377                depth,
2378            )?;
2379
2380            _prev_end_offset = cur_offset + envelope_size;
2381            if 4 > max_ordinal {
2382                return Ok(());
2383            }
2384
2385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2386            // are envelope_size bytes.
2387            let cur_offset: usize = (4 - 1) * envelope_size;
2388
2389            // Zero reserved fields.
2390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2391
2392            // Safety:
2393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2395            //   envelope_size bytes, there is always sufficient room.
2396            fidl::encoding::encode_in_envelope_optional::<
2397                fidl::encoding::UnboundedVector<
2398                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2399                >,
2400                D,
2401            >(
2402                self.parent_monikers.as_ref().map(
2403                    <fidl::encoding::UnboundedVector<
2404                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2405                    > as fidl::encoding::ValueTypeMarker>::borrow,
2406                ),
2407                encoder,
2408                offset + cur_offset,
2409                depth,
2410            )?;
2411
2412            _prev_end_offset = cur_offset + envelope_size;
2413            if 5 > max_ordinal {
2414                return Ok(());
2415            }
2416
2417            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2418            // are envelope_size bytes.
2419            let cur_offset: usize = (5 - 1) * envelope_size;
2420
2421            // Zero reserved fields.
2422            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2423
2424            // Safety:
2425            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2426            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2427            //   envelope_size bytes, there is always sufficient room.
2428            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
2429            self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2430            encoder, offset + cur_offset, depth
2431        )?;
2432
2433            _prev_end_offset = cur_offset + envelope_size;
2434
2435            Ok(())
2436        }
2437    }
2438
2439    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeInfo {
2440        #[inline(always)]
2441        fn new_empty() -> Self {
2442            Self::default()
2443        }
2444
2445        unsafe fn decode(
2446            &mut self,
2447            decoder: &mut fidl::encoding::Decoder<'_, D>,
2448            offset: usize,
2449            mut depth: fidl::encoding::Depth,
2450        ) -> fidl::Result<()> {
2451            decoder.debug_check_bounds::<Self>(offset);
2452            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2453                None => return Err(fidl::Error::NotNullable),
2454                Some(len) => len,
2455            };
2456            // Calling decoder.out_of_line_offset(0) is not allowed.
2457            if len == 0 {
2458                return Ok(());
2459            };
2460            depth.increment()?;
2461            let envelope_size = 8;
2462            let bytes_len = len * envelope_size;
2463            let offset = decoder.out_of_line_offset(bytes_len)?;
2464            // Decode the envelope for each type.
2465            let mut _next_ordinal_to_read = 0;
2466            let mut next_offset = offset;
2467            let end_offset = offset + bytes_len;
2468            _next_ordinal_to_read += 1;
2469            if next_offset >= end_offset {
2470                return Ok(());
2471            }
2472
2473            // Decode unknown envelopes for gaps in ordinals.
2474            while _next_ordinal_to_read < 1 {
2475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2476                _next_ordinal_to_read += 1;
2477                next_offset += envelope_size;
2478            }
2479
2480            let next_out_of_line = decoder.next_out_of_line();
2481            let handles_before = decoder.remaining_handles();
2482            if let Some((inlined, num_bytes, num_handles)) =
2483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2484            {
2485                let member_inline_size = <fidl::encoding::UnboundedVector<
2486                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2487                > as fidl::encoding::TypeMarker>::inline_size(
2488                    decoder.context
2489                );
2490                if inlined != (member_inline_size <= 4) {
2491                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2492                }
2493                let inner_offset;
2494                let mut inner_depth = depth.clone();
2495                if inlined {
2496                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2497                    inner_offset = next_offset;
2498                } else {
2499                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2500                    inner_depth.increment()?;
2501                }
2502                let val_ref = self.parent_topological_paths.get_or_insert_with(|| {
2503                    fidl::new_empty!(
2504                        fidl::encoding::UnboundedVector<
2505                            fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2506                        >,
2507                        D
2508                    )
2509                });
2510                fidl::decode!(
2511                    fidl::encoding::UnboundedVector<
2512                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2513                    >,
2514                    D,
2515                    val_ref,
2516                    decoder,
2517                    inner_offset,
2518                    inner_depth
2519                )?;
2520                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2521                {
2522                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2523                }
2524                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2525                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2526                }
2527            }
2528
2529            next_offset += envelope_size;
2530            _next_ordinal_to_read += 1;
2531            if next_offset >= end_offset {
2532                return Ok(());
2533            }
2534
2535            // Decode unknown envelopes for gaps in ordinals.
2536            while _next_ordinal_to_read < 2 {
2537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2538                _next_ordinal_to_read += 1;
2539                next_offset += envelope_size;
2540            }
2541
2542            let next_out_of_line = decoder.next_out_of_line();
2543            let handles_before = decoder.remaining_handles();
2544            if let Some((inlined, num_bytes, num_handles)) =
2545                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2546            {
2547                let member_inline_size =
2548                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2549                        decoder.context,
2550                    );
2551                if inlined != (member_inline_size <= 4) {
2552                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2553                }
2554                let inner_offset;
2555                let mut inner_depth = depth.clone();
2556                if inlined {
2557                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2558                    inner_offset = next_offset;
2559                } else {
2560                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2561                    inner_depth.increment()?;
2562                }
2563                let val_ref = self
2564                    .topological_path
2565                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2566                fidl::decode!(
2567                    fidl::encoding::UnboundedString,
2568                    D,
2569                    val_ref,
2570                    decoder,
2571                    inner_offset,
2572                    inner_depth
2573                )?;
2574                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2575                {
2576                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2577                }
2578                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2579                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2580                }
2581            }
2582
2583            next_offset += envelope_size;
2584            _next_ordinal_to_read += 1;
2585            if next_offset >= end_offset {
2586                return Ok(());
2587            }
2588
2589            // Decode unknown envelopes for gaps in ordinals.
2590            while _next_ordinal_to_read < 3 {
2591                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2592                _next_ordinal_to_read += 1;
2593                next_offset += envelope_size;
2594            }
2595
2596            let next_out_of_line = decoder.next_out_of_line();
2597            let handles_before = decoder.remaining_handles();
2598            if let Some((inlined, num_bytes, num_handles)) =
2599                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2600            {
2601                let member_inline_size =
2602                    <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2603                if inlined != (member_inline_size <= 4) {
2604                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2605                }
2606                let inner_offset;
2607                let mut inner_depth = depth.clone();
2608                if inlined {
2609                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2610                    inner_offset = next_offset;
2611                } else {
2612                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2613                    inner_depth.increment()?;
2614                }
2615                let val_ref =
2616                    self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
2617                fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2618                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2619                {
2620                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2621                }
2622                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2623                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2624                }
2625            }
2626
2627            next_offset += envelope_size;
2628            _next_ordinal_to_read += 1;
2629            if next_offset >= end_offset {
2630                return Ok(());
2631            }
2632
2633            // Decode unknown envelopes for gaps in ordinals.
2634            while _next_ordinal_to_read < 4 {
2635                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2636                _next_ordinal_to_read += 1;
2637                next_offset += envelope_size;
2638            }
2639
2640            let next_out_of_line = decoder.next_out_of_line();
2641            let handles_before = decoder.remaining_handles();
2642            if let Some((inlined, num_bytes, num_handles)) =
2643                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2644            {
2645                let member_inline_size = <fidl::encoding::UnboundedVector<
2646                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2647                > as fidl::encoding::TypeMarker>::inline_size(
2648                    decoder.context
2649                );
2650                if inlined != (member_inline_size <= 4) {
2651                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2652                }
2653                let inner_offset;
2654                let mut inner_depth = depth.clone();
2655                if inlined {
2656                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2657                    inner_offset = next_offset;
2658                } else {
2659                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2660                    inner_depth.increment()?;
2661                }
2662                let val_ref = self.parent_monikers.get_or_insert_with(|| {
2663                    fidl::new_empty!(
2664                        fidl::encoding::UnboundedVector<
2665                            fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2666                        >,
2667                        D
2668                    )
2669                });
2670                fidl::decode!(
2671                    fidl::encoding::UnboundedVector<
2672                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2673                    >,
2674                    D,
2675                    val_ref,
2676                    decoder,
2677                    inner_offset,
2678                    inner_depth
2679                )?;
2680                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2681                {
2682                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2683                }
2684                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2685                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2686                }
2687            }
2688
2689            next_offset += envelope_size;
2690            _next_ordinal_to_read += 1;
2691            if next_offset >= end_offset {
2692                return Ok(());
2693            }
2694
2695            // Decode unknown envelopes for gaps in ordinals.
2696            while _next_ordinal_to_read < 5 {
2697                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2698                _next_ordinal_to_read += 1;
2699                next_offset += envelope_size;
2700            }
2701
2702            let next_out_of_line = decoder.next_out_of_line();
2703            let handles_before = decoder.remaining_handles();
2704            if let Some((inlined, num_bytes, num_handles)) =
2705                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2706            {
2707                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2708                if inlined != (member_inline_size <= 4) {
2709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2710                }
2711                let inner_offset;
2712                let mut inner_depth = depth.clone();
2713                if inlined {
2714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2715                    inner_offset = next_offset;
2716                } else {
2717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2718                    inner_depth.increment()?;
2719                }
2720                let val_ref = self.moniker.get_or_insert_with(|| {
2721                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
2722                });
2723                fidl::decode!(
2724                    fidl::encoding::BoundedString<1024>,
2725                    D,
2726                    val_ref,
2727                    decoder,
2728                    inner_offset,
2729                    inner_depth
2730                )?;
2731                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2732                {
2733                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2734                }
2735                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2736                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2737                }
2738            }
2739
2740            next_offset += envelope_size;
2741
2742            // Decode the remaining unknown envelopes.
2743            while next_offset < end_offset {
2744                _next_ordinal_to_read += 1;
2745                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2746                next_offset += envelope_size;
2747            }
2748
2749            Ok(())
2750        }
2751    }
2752
2753    impl DispatcherDebugStats {
2754        #[inline(always)]
2755        fn max_ordinal_present(&self) -> u64 {
2756            if let Some(_) = self.non_inlined {
2757                return 3;
2758            }
2759            if let Some(_) = self.num_inlined_requests {
2760                return 2;
2761            }
2762            if let Some(_) = self.num_total_requests {
2763                return 1;
2764            }
2765            0
2766        }
2767    }
2768
2769    impl fidl::encoding::ValueTypeMarker for DispatcherDebugStats {
2770        type Borrowed<'a> = &'a Self;
2771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2772            value
2773        }
2774    }
2775
2776    unsafe impl fidl::encoding::TypeMarker for DispatcherDebugStats {
2777        type Owned = Self;
2778
2779        #[inline(always)]
2780        fn inline_align(_context: fidl::encoding::Context) -> usize {
2781            8
2782        }
2783
2784        #[inline(always)]
2785        fn inline_size(_context: fidl::encoding::Context) -> usize {
2786            16
2787        }
2788    }
2789
2790    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherDebugStats, D>
2791        for &DispatcherDebugStats
2792    {
2793        unsafe fn encode(
2794            self,
2795            encoder: &mut fidl::encoding::Encoder<'_, D>,
2796            offset: usize,
2797            mut depth: fidl::encoding::Depth,
2798        ) -> fidl::Result<()> {
2799            encoder.debug_check_bounds::<DispatcherDebugStats>(offset);
2800            // Vector header
2801            let max_ordinal: u64 = self.max_ordinal_present();
2802            encoder.write_num(max_ordinal, offset);
2803            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2804            // Calling encoder.out_of_line_offset(0) is not allowed.
2805            if max_ordinal == 0 {
2806                return Ok(());
2807            }
2808            depth.increment()?;
2809            let envelope_size = 8;
2810            let bytes_len = max_ordinal as usize * envelope_size;
2811            #[allow(unused_variables)]
2812            let offset = encoder.out_of_line_offset(bytes_len);
2813            let mut _prev_end_offset: usize = 0;
2814            if 1 > max_ordinal {
2815                return Ok(());
2816            }
2817
2818            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2819            // are envelope_size bytes.
2820            let cur_offset: usize = (1 - 1) * envelope_size;
2821
2822            // Zero reserved fields.
2823            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2824
2825            // Safety:
2826            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2827            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2828            //   envelope_size bytes, there is always sufficient room.
2829            fidl::encoding::encode_in_envelope_optional::<u64, D>(
2830                self.num_total_requests
2831                    .as_ref()
2832                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2833                encoder,
2834                offset + cur_offset,
2835                depth,
2836            )?;
2837
2838            _prev_end_offset = cur_offset + envelope_size;
2839            if 2 > max_ordinal {
2840                return Ok(());
2841            }
2842
2843            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2844            // are envelope_size bytes.
2845            let cur_offset: usize = (2 - 1) * envelope_size;
2846
2847            // Zero reserved fields.
2848            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2849
2850            // Safety:
2851            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2852            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2853            //   envelope_size bytes, there is always sufficient room.
2854            fidl::encoding::encode_in_envelope_optional::<u64, D>(
2855                self.num_inlined_requests
2856                    .as_ref()
2857                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2858                encoder,
2859                offset + cur_offset,
2860                depth,
2861            )?;
2862
2863            _prev_end_offset = cur_offset + envelope_size;
2864            if 3 > max_ordinal {
2865                return Ok(());
2866            }
2867
2868            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2869            // are envelope_size bytes.
2870            let cur_offset: usize = (3 - 1) * envelope_size;
2871
2872            // Zero reserved fields.
2873            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2874
2875            // Safety:
2876            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2877            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2878            //   envelope_size bytes, there is always sufficient room.
2879            fidl::encoding::encode_in_envelope_optional::<NonInlinedRequestStats, D>(
2880                self.non_inlined
2881                    .as_ref()
2882                    .map(<NonInlinedRequestStats as fidl::encoding::ValueTypeMarker>::borrow),
2883                encoder,
2884                offset + cur_offset,
2885                depth,
2886            )?;
2887
2888            _prev_end_offset = cur_offset + envelope_size;
2889
2890            Ok(())
2891        }
2892    }
2893
2894    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherDebugStats {
2895        #[inline(always)]
2896        fn new_empty() -> Self {
2897            Self::default()
2898        }
2899
2900        unsafe fn decode(
2901            &mut self,
2902            decoder: &mut fidl::encoding::Decoder<'_, D>,
2903            offset: usize,
2904            mut depth: fidl::encoding::Depth,
2905        ) -> fidl::Result<()> {
2906            decoder.debug_check_bounds::<Self>(offset);
2907            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2908                None => return Err(fidl::Error::NotNullable),
2909                Some(len) => len,
2910            };
2911            // Calling decoder.out_of_line_offset(0) is not allowed.
2912            if len == 0 {
2913                return Ok(());
2914            };
2915            depth.increment()?;
2916            let envelope_size = 8;
2917            let bytes_len = len * envelope_size;
2918            let offset = decoder.out_of_line_offset(bytes_len)?;
2919            // Decode the envelope for each type.
2920            let mut _next_ordinal_to_read = 0;
2921            let mut next_offset = offset;
2922            let end_offset = offset + bytes_len;
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 < 1 {
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 =
2941                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2942                if inlined != (member_inline_size <= 4) {
2943                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2944                }
2945                let inner_offset;
2946                let mut inner_depth = depth.clone();
2947                if inlined {
2948                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2949                    inner_offset = next_offset;
2950                } else {
2951                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2952                    inner_depth.increment()?;
2953                }
2954                let val_ref =
2955                    self.num_total_requests.get_or_insert_with(|| fidl::new_empty!(u64, D));
2956                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2958                {
2959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2960                }
2961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2963                }
2964            }
2965
2966            next_offset += envelope_size;
2967            _next_ordinal_to_read += 1;
2968            if next_offset >= end_offset {
2969                return Ok(());
2970            }
2971
2972            // Decode unknown envelopes for gaps in ordinals.
2973            while _next_ordinal_to_read < 2 {
2974                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2975                _next_ordinal_to_read += 1;
2976                next_offset += envelope_size;
2977            }
2978
2979            let next_out_of_line = decoder.next_out_of_line();
2980            let handles_before = decoder.remaining_handles();
2981            if let Some((inlined, num_bytes, num_handles)) =
2982                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2983            {
2984                let member_inline_size =
2985                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2986                if inlined != (member_inline_size <= 4) {
2987                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2988                }
2989                let inner_offset;
2990                let mut inner_depth = depth.clone();
2991                if inlined {
2992                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2993                    inner_offset = next_offset;
2994                } else {
2995                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2996                    inner_depth.increment()?;
2997                }
2998                let val_ref =
2999                    self.num_inlined_requests.get_or_insert_with(|| fidl::new_empty!(u64, D));
3000                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3001                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3002                {
3003                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3004                }
3005                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3006                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3007                }
3008            }
3009
3010            next_offset += envelope_size;
3011            _next_ordinal_to_read += 1;
3012            if next_offset >= end_offset {
3013                return Ok(());
3014            }
3015
3016            // Decode unknown envelopes for gaps in ordinals.
3017            while _next_ordinal_to_read < 3 {
3018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3019                _next_ordinal_to_read += 1;
3020                next_offset += envelope_size;
3021            }
3022
3023            let next_out_of_line = decoder.next_out_of_line();
3024            let handles_before = decoder.remaining_handles();
3025            if let Some((inlined, num_bytes, num_handles)) =
3026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3027            {
3028                let member_inline_size =
3029                    <NonInlinedRequestStats as fidl::encoding::TypeMarker>::inline_size(
3030                        decoder.context,
3031                    );
3032                if inlined != (member_inline_size <= 4) {
3033                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3034                }
3035                let inner_offset;
3036                let mut inner_depth = depth.clone();
3037                if inlined {
3038                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3039                    inner_offset = next_offset;
3040                } else {
3041                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3042                    inner_depth.increment()?;
3043                }
3044                let val_ref = self
3045                    .non_inlined
3046                    .get_or_insert_with(|| fidl::new_empty!(NonInlinedRequestStats, D));
3047                fidl::decode!(
3048                    NonInlinedRequestStats,
3049                    D,
3050                    val_ref,
3051                    decoder,
3052                    inner_offset,
3053                    inner_depth
3054                )?;
3055                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3056                {
3057                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3058                }
3059                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3060                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3061                }
3062            }
3063
3064            next_offset += envelope_size;
3065
3066            // Decode the remaining unknown envelopes.
3067            while next_offset < end_offset {
3068                _next_ordinal_to_read += 1;
3069                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3070                next_offset += envelope_size;
3071            }
3072
3073            Ok(())
3074        }
3075    }
3076
3077    impl DispatcherInfo {
3078        #[inline(always)]
3079        fn max_ordinal_present(&self) -> u64 {
3080            if let Some(_) = self.num_queued_tasks {
3081                return 14;
3082            }
3083            if let Some(_) = self.queued_tasks {
3084                return 13;
3085            }
3086            if let Some(_) = self.debug_stats {
3087                return 12;
3088            }
3089            if let Some(_) = self.destroy_user_initiated {
3090                return 11;
3091            }
3092            if let Some(_) = self.destroy_context {
3093                return 10;
3094            }
3095            if let Some(_) = self.state {
3096                return 9;
3097            }
3098            if let Some(_) = self.allow_sync_calls {
3099                return 8;
3100            }
3101            if let Some(_) = self.synchronized {
3102                return 7;
3103            }
3104            if let Some(_) = self.driver_ptr {
3105                return 6;
3106            }
3107            if let Some(_) = self.dispatcher_ptr {
3108                return 5;
3109            }
3110            if let Some(_) = self.scheduler_role {
3111                return 4;
3112            }
3113            if let Some(_) = self.options {
3114                return 3;
3115            }
3116            if let Some(_) = self.name {
3117                return 2;
3118            }
3119            if let Some(_) = self.driver {
3120                return 1;
3121            }
3122            0
3123        }
3124    }
3125
3126    impl fidl::encoding::ValueTypeMarker for DispatcherInfo {
3127        type Borrowed<'a> = &'a Self;
3128        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3129            value
3130        }
3131    }
3132
3133    unsafe impl fidl::encoding::TypeMarker for DispatcherInfo {
3134        type Owned = Self;
3135
3136        #[inline(always)]
3137        fn inline_align(_context: fidl::encoding::Context) -> usize {
3138            8
3139        }
3140
3141        #[inline(always)]
3142        fn inline_size(_context: fidl::encoding::Context) -> usize {
3143            16
3144        }
3145    }
3146
3147    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherInfo, D>
3148        for &DispatcherInfo
3149    {
3150        unsafe fn encode(
3151            self,
3152            encoder: &mut fidl::encoding::Encoder<'_, D>,
3153            offset: usize,
3154            mut depth: fidl::encoding::Depth,
3155        ) -> fidl::Result<()> {
3156            encoder.debug_check_bounds::<DispatcherInfo>(offset);
3157            // Vector header
3158            let max_ordinal: u64 = self.max_ordinal_present();
3159            encoder.write_num(max_ordinal, offset);
3160            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3161            // Calling encoder.out_of_line_offset(0) is not allowed.
3162            if max_ordinal == 0 {
3163                return Ok(());
3164            }
3165            depth.increment()?;
3166            let envelope_size = 8;
3167            let bytes_len = max_ordinal as usize * envelope_size;
3168            #[allow(unused_variables)]
3169            let offset = encoder.out_of_line_offset(bytes_len);
3170            let mut _prev_end_offset: usize = 0;
3171            if 1 > max_ordinal {
3172                return Ok(());
3173            }
3174
3175            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3176            // are envelope_size bytes.
3177            let cur_offset: usize = (1 - 1) * envelope_size;
3178
3179            // Zero reserved fields.
3180            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3181
3182            // Safety:
3183            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3184            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3185            //   envelope_size bytes, there is always sufficient room.
3186            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3187            self.driver.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3188            encoder, offset + cur_offset, depth
3189        )?;
3190
3191            _prev_end_offset = cur_offset + envelope_size;
3192            if 2 > max_ordinal {
3193                return Ok(());
3194            }
3195
3196            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3197            // are envelope_size bytes.
3198            let cur_offset: usize = (2 - 1) * envelope_size;
3199
3200            // Zero reserved fields.
3201            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3202
3203            // Safety:
3204            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3205            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3206            //   envelope_size bytes, there is always sufficient room.
3207            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3208                self.name.as_ref().map(
3209                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3210                ),
3211                encoder,
3212                offset + cur_offset,
3213                depth,
3214            )?;
3215
3216            _prev_end_offset = cur_offset + envelope_size;
3217            if 3 > max_ordinal {
3218                return Ok(());
3219            }
3220
3221            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3222            // are envelope_size bytes.
3223            let cur_offset: usize = (3 - 1) * envelope_size;
3224
3225            // Zero reserved fields.
3226            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3227
3228            // Safety:
3229            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3230            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3231            //   envelope_size bytes, there is always sufficient room.
3232            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3233                self.options.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3234                encoder,
3235                offset + cur_offset,
3236                depth,
3237            )?;
3238
3239            _prev_end_offset = cur_offset + envelope_size;
3240            if 4 > max_ordinal {
3241                return Ok(());
3242            }
3243
3244            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3245            // are envelope_size bytes.
3246            let cur_offset: usize = (4 - 1) * envelope_size;
3247
3248            // Zero reserved fields.
3249            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3250
3251            // Safety:
3252            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3253            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3254            //   envelope_size bytes, there is always sufficient room.
3255            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3256                self.scheduler_role.as_ref().map(
3257                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3258                ),
3259                encoder,
3260                offset + cur_offset,
3261                depth,
3262            )?;
3263
3264            _prev_end_offset = cur_offset + envelope_size;
3265            if 5 > max_ordinal {
3266                return Ok(());
3267            }
3268
3269            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3270            // are envelope_size bytes.
3271            let cur_offset: usize = (5 - 1) * envelope_size;
3272
3273            // Zero reserved fields.
3274            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3275
3276            // Safety:
3277            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3278            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3279            //   envelope_size bytes, there is always sufficient room.
3280            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3281                self.dispatcher_ptr.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3282                encoder,
3283                offset + cur_offset,
3284                depth,
3285            )?;
3286
3287            _prev_end_offset = cur_offset + envelope_size;
3288            if 6 > max_ordinal {
3289                return Ok(());
3290            }
3291
3292            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3293            // are envelope_size bytes.
3294            let cur_offset: usize = (6 - 1) * envelope_size;
3295
3296            // Zero reserved fields.
3297            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3298
3299            // Safety:
3300            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3301            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3302            //   envelope_size bytes, there is always sufficient room.
3303            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3304                self.driver_ptr.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3305                encoder,
3306                offset + cur_offset,
3307                depth,
3308            )?;
3309
3310            _prev_end_offset = cur_offset + envelope_size;
3311            if 7 > max_ordinal {
3312                return Ok(());
3313            }
3314
3315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3316            // are envelope_size bytes.
3317            let cur_offset: usize = (7 - 1) * envelope_size;
3318
3319            // Zero reserved fields.
3320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3321
3322            // Safety:
3323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3325            //   envelope_size bytes, there is always sufficient room.
3326            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3327                self.synchronized.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3328                encoder,
3329                offset + cur_offset,
3330                depth,
3331            )?;
3332
3333            _prev_end_offset = cur_offset + envelope_size;
3334            if 8 > max_ordinal {
3335                return Ok(());
3336            }
3337
3338            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3339            // are envelope_size bytes.
3340            let cur_offset: usize = (8 - 1) * envelope_size;
3341
3342            // Zero reserved fields.
3343            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3344
3345            // Safety:
3346            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3347            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3348            //   envelope_size bytes, there is always sufficient room.
3349            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3350                self.allow_sync_calls
3351                    .as_ref()
3352                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3353                encoder,
3354                offset + cur_offset,
3355                depth,
3356            )?;
3357
3358            _prev_end_offset = cur_offset + envelope_size;
3359            if 9 > max_ordinal {
3360                return Ok(());
3361            }
3362
3363            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3364            // are envelope_size bytes.
3365            let cur_offset: usize = (9 - 1) * envelope_size;
3366
3367            // Zero reserved fields.
3368            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3369
3370            // Safety:
3371            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3372            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3373            //   envelope_size bytes, there is always sufficient room.
3374            fidl::encoding::encode_in_envelope_optional::<DispatcherState, D>(
3375                self.state
3376                    .as_ref()
3377                    .map(<DispatcherState as fidl::encoding::ValueTypeMarker>::borrow),
3378                encoder,
3379                offset + cur_offset,
3380                depth,
3381            )?;
3382
3383            _prev_end_offset = cur_offset + envelope_size;
3384            if 10 > max_ordinal {
3385                return Ok(());
3386            }
3387
3388            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3389            // are envelope_size bytes.
3390            let cur_offset: usize = (10 - 1) * envelope_size;
3391
3392            // Zero reserved fields.
3393            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3394
3395            // Safety:
3396            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3397            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3398            //   envelope_size bytes, there is always sufficient room.
3399            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3400                self.destroy_context.as_ref().map(
3401                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3402                ),
3403                encoder,
3404                offset + cur_offset,
3405                depth,
3406            )?;
3407
3408            _prev_end_offset = cur_offset + envelope_size;
3409            if 11 > max_ordinal {
3410                return Ok(());
3411            }
3412
3413            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3414            // are envelope_size bytes.
3415            let cur_offset: usize = (11 - 1) * envelope_size;
3416
3417            // Zero reserved fields.
3418            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3419
3420            // Safety:
3421            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3422            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3423            //   envelope_size bytes, there is always sufficient room.
3424            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3425                self.destroy_user_initiated
3426                    .as_ref()
3427                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3428                encoder,
3429                offset + cur_offset,
3430                depth,
3431            )?;
3432
3433            _prev_end_offset = cur_offset + envelope_size;
3434            if 12 > max_ordinal {
3435                return Ok(());
3436            }
3437
3438            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3439            // are envelope_size bytes.
3440            let cur_offset: usize = (12 - 1) * envelope_size;
3441
3442            // Zero reserved fields.
3443            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3444
3445            // Safety:
3446            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3447            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3448            //   envelope_size bytes, there is always sufficient room.
3449            fidl::encoding::encode_in_envelope_optional::<DispatcherDebugStats, D>(
3450                self.debug_stats
3451                    .as_ref()
3452                    .map(<DispatcherDebugStats as fidl::encoding::ValueTypeMarker>::borrow),
3453                encoder,
3454                offset + cur_offset,
3455                depth,
3456            )?;
3457
3458            _prev_end_offset = cur_offset + envelope_size;
3459            if 13 > max_ordinal {
3460                return Ok(());
3461            }
3462
3463            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3464            // are envelope_size bytes.
3465            let cur_offset: usize = (13 - 1) * envelope_size;
3466
3467            // Zero reserved fields.
3468            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3469
3470            // Safety:
3471            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3472            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3473            //   envelope_size bytes, there is always sufficient room.
3474            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<QueuedTaskInfo>, D>(
3475            self.queued_tasks.as_ref().map(<fidl::encoding::UnboundedVector<QueuedTaskInfo> as fidl::encoding::ValueTypeMarker>::borrow),
3476            encoder, offset + cur_offset, depth
3477        )?;
3478
3479            _prev_end_offset = cur_offset + envelope_size;
3480            if 14 > max_ordinal {
3481                return Ok(());
3482            }
3483
3484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3485            // are envelope_size bytes.
3486            let cur_offset: usize = (14 - 1) * envelope_size;
3487
3488            // Zero reserved fields.
3489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3490
3491            // Safety:
3492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3494            //   envelope_size bytes, there is always sufficient room.
3495            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3496                self.num_queued_tasks
3497                    .as_ref()
3498                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3499                encoder,
3500                offset + cur_offset,
3501                depth,
3502            )?;
3503
3504            _prev_end_offset = cur_offset + envelope_size;
3505
3506            Ok(())
3507        }
3508    }
3509
3510    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherInfo {
3511        #[inline(always)]
3512        fn new_empty() -> Self {
3513            Self::default()
3514        }
3515
3516        unsafe fn decode(
3517            &mut self,
3518            decoder: &mut fidl::encoding::Decoder<'_, D>,
3519            offset: usize,
3520            mut depth: fidl::encoding::Depth,
3521        ) -> fidl::Result<()> {
3522            decoder.debug_check_bounds::<Self>(offset);
3523            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3524                None => return Err(fidl::Error::NotNullable),
3525                Some(len) => len,
3526            };
3527            // Calling decoder.out_of_line_offset(0) is not allowed.
3528            if len == 0 {
3529                return Ok(());
3530            };
3531            depth.increment()?;
3532            let envelope_size = 8;
3533            let bytes_len = len * envelope_size;
3534            let offset = decoder.out_of_line_offset(bytes_len)?;
3535            // Decode the envelope for each type.
3536            let mut _next_ordinal_to_read = 0;
3537            let mut next_offset = offset;
3538            let end_offset = offset + bytes_len;
3539            _next_ordinal_to_read += 1;
3540            if next_offset >= end_offset {
3541                return Ok(());
3542            }
3543
3544            // Decode unknown envelopes for gaps in ordinals.
3545            while _next_ordinal_to_read < 1 {
3546                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3547                _next_ordinal_to_read += 1;
3548                next_offset += envelope_size;
3549            }
3550
3551            let next_out_of_line = decoder.next_out_of_line();
3552            let handles_before = decoder.remaining_handles();
3553            if let Some((inlined, num_bytes, num_handles)) =
3554                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3555            {
3556                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3557                if inlined != (member_inline_size <= 4) {
3558                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3559                }
3560                let inner_offset;
3561                let mut inner_depth = depth.clone();
3562                if inlined {
3563                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3564                    inner_offset = next_offset;
3565                } else {
3566                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3567                    inner_depth.increment()?;
3568                }
3569                let val_ref = self.driver.get_or_insert_with(|| {
3570                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3571                });
3572                fidl::decode!(
3573                    fidl::encoding::BoundedString<4096>,
3574                    D,
3575                    val_ref,
3576                    decoder,
3577                    inner_offset,
3578                    inner_depth
3579                )?;
3580                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3581                {
3582                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3583                }
3584                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3585                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3586                }
3587            }
3588
3589            next_offset += envelope_size;
3590            _next_ordinal_to_read += 1;
3591            if next_offset >= end_offset {
3592                return Ok(());
3593            }
3594
3595            // Decode unknown envelopes for gaps in ordinals.
3596            while _next_ordinal_to_read < 2 {
3597                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3598                _next_ordinal_to_read += 1;
3599                next_offset += envelope_size;
3600            }
3601
3602            let next_out_of_line = decoder.next_out_of_line();
3603            let handles_before = decoder.remaining_handles();
3604            if let Some((inlined, num_bytes, num_handles)) =
3605                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3606            {
3607                let member_inline_size =
3608                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3609                        decoder.context,
3610                    );
3611                if inlined != (member_inline_size <= 4) {
3612                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3613                }
3614                let inner_offset;
3615                let mut inner_depth = depth.clone();
3616                if inlined {
3617                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3618                    inner_offset = next_offset;
3619                } else {
3620                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3621                    inner_depth.increment()?;
3622                }
3623                let val_ref = self
3624                    .name
3625                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3626                fidl::decode!(
3627                    fidl::encoding::UnboundedString,
3628                    D,
3629                    val_ref,
3630                    decoder,
3631                    inner_offset,
3632                    inner_depth
3633                )?;
3634                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3635                {
3636                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3637                }
3638                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3639                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3640                }
3641            }
3642
3643            next_offset += envelope_size;
3644            _next_ordinal_to_read += 1;
3645            if next_offset >= end_offset {
3646                return Ok(());
3647            }
3648
3649            // Decode unknown envelopes for gaps in ordinals.
3650            while _next_ordinal_to_read < 3 {
3651                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3652                _next_ordinal_to_read += 1;
3653                next_offset += envelope_size;
3654            }
3655
3656            let next_out_of_line = decoder.next_out_of_line();
3657            let handles_before = decoder.remaining_handles();
3658            if let Some((inlined, num_bytes, num_handles)) =
3659                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3660            {
3661                let member_inline_size =
3662                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3663                if inlined != (member_inline_size <= 4) {
3664                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3665                }
3666                let inner_offset;
3667                let mut inner_depth = depth.clone();
3668                if inlined {
3669                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3670                    inner_offset = next_offset;
3671                } else {
3672                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3673                    inner_depth.increment()?;
3674                }
3675                let val_ref = self.options.get_or_insert_with(|| fidl::new_empty!(u32, D));
3676                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3677                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3678                {
3679                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3680                }
3681                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3682                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3683                }
3684            }
3685
3686            next_offset += envelope_size;
3687            _next_ordinal_to_read += 1;
3688            if next_offset >= end_offset {
3689                return Ok(());
3690            }
3691
3692            // Decode unknown envelopes for gaps in ordinals.
3693            while _next_ordinal_to_read < 4 {
3694                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3695                _next_ordinal_to_read += 1;
3696                next_offset += envelope_size;
3697            }
3698
3699            let next_out_of_line = decoder.next_out_of_line();
3700            let handles_before = decoder.remaining_handles();
3701            if let Some((inlined, num_bytes, num_handles)) =
3702                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3703            {
3704                let member_inline_size =
3705                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3706                        decoder.context,
3707                    );
3708                if inlined != (member_inline_size <= 4) {
3709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3710                }
3711                let inner_offset;
3712                let mut inner_depth = depth.clone();
3713                if inlined {
3714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3715                    inner_offset = next_offset;
3716                } else {
3717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3718                    inner_depth.increment()?;
3719                }
3720                let val_ref = self
3721                    .scheduler_role
3722                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3723                fidl::decode!(
3724                    fidl::encoding::UnboundedString,
3725                    D,
3726                    val_ref,
3727                    decoder,
3728                    inner_offset,
3729                    inner_depth
3730                )?;
3731                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3732                {
3733                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3734                }
3735                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3736                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3737                }
3738            }
3739
3740            next_offset += envelope_size;
3741            _next_ordinal_to_read += 1;
3742            if next_offset >= end_offset {
3743                return Ok(());
3744            }
3745
3746            // Decode unknown envelopes for gaps in ordinals.
3747            while _next_ordinal_to_read < 5 {
3748                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3749                _next_ordinal_to_read += 1;
3750                next_offset += envelope_size;
3751            }
3752
3753            let next_out_of_line = decoder.next_out_of_line();
3754            let handles_before = decoder.remaining_handles();
3755            if let Some((inlined, num_bytes, num_handles)) =
3756                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3757            {
3758                let member_inline_size =
3759                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3760                if inlined != (member_inline_size <= 4) {
3761                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3762                }
3763                let inner_offset;
3764                let mut inner_depth = depth.clone();
3765                if inlined {
3766                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3767                    inner_offset = next_offset;
3768                } else {
3769                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3770                    inner_depth.increment()?;
3771                }
3772                let val_ref = self.dispatcher_ptr.get_or_insert_with(|| fidl::new_empty!(u64, D));
3773                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3774                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3775                {
3776                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3777                }
3778                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3779                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3780                }
3781            }
3782
3783            next_offset += envelope_size;
3784            _next_ordinal_to_read += 1;
3785            if next_offset >= end_offset {
3786                return Ok(());
3787            }
3788
3789            // Decode unknown envelopes for gaps in ordinals.
3790            while _next_ordinal_to_read < 6 {
3791                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3792                _next_ordinal_to_read += 1;
3793                next_offset += envelope_size;
3794            }
3795
3796            let next_out_of_line = decoder.next_out_of_line();
3797            let handles_before = decoder.remaining_handles();
3798            if let Some((inlined, num_bytes, num_handles)) =
3799                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3800            {
3801                let member_inline_size =
3802                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3803                if inlined != (member_inline_size <= 4) {
3804                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3805                }
3806                let inner_offset;
3807                let mut inner_depth = depth.clone();
3808                if inlined {
3809                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3810                    inner_offset = next_offset;
3811                } else {
3812                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3813                    inner_depth.increment()?;
3814                }
3815                let val_ref = self.driver_ptr.get_or_insert_with(|| fidl::new_empty!(u64, D));
3816                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3818                {
3819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3820                }
3821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3823                }
3824            }
3825
3826            next_offset += envelope_size;
3827            _next_ordinal_to_read += 1;
3828            if next_offset >= end_offset {
3829                return Ok(());
3830            }
3831
3832            // Decode unknown envelopes for gaps in ordinals.
3833            while _next_ordinal_to_read < 7 {
3834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3835                _next_ordinal_to_read += 1;
3836                next_offset += envelope_size;
3837            }
3838
3839            let next_out_of_line = decoder.next_out_of_line();
3840            let handles_before = decoder.remaining_handles();
3841            if let Some((inlined, num_bytes, num_handles)) =
3842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3843            {
3844                let member_inline_size =
3845                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3846                if inlined != (member_inline_size <= 4) {
3847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3848                }
3849                let inner_offset;
3850                let mut inner_depth = depth.clone();
3851                if inlined {
3852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3853                    inner_offset = next_offset;
3854                } else {
3855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3856                    inner_depth.increment()?;
3857                }
3858                let val_ref = self.synchronized.get_or_insert_with(|| fidl::new_empty!(bool, D));
3859                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3860                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3861                {
3862                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3863                }
3864                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3865                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3866                }
3867            }
3868
3869            next_offset += envelope_size;
3870            _next_ordinal_to_read += 1;
3871            if next_offset >= end_offset {
3872                return Ok(());
3873            }
3874
3875            // Decode unknown envelopes for gaps in ordinals.
3876            while _next_ordinal_to_read < 8 {
3877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3878                _next_ordinal_to_read += 1;
3879                next_offset += envelope_size;
3880            }
3881
3882            let next_out_of_line = decoder.next_out_of_line();
3883            let handles_before = decoder.remaining_handles();
3884            if let Some((inlined, num_bytes, num_handles)) =
3885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3886            {
3887                let member_inline_size =
3888                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3889                if inlined != (member_inline_size <= 4) {
3890                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3891                }
3892                let inner_offset;
3893                let mut inner_depth = depth.clone();
3894                if inlined {
3895                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3896                    inner_offset = next_offset;
3897                } else {
3898                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3899                    inner_depth.increment()?;
3900                }
3901                let val_ref =
3902                    self.allow_sync_calls.get_or_insert_with(|| fidl::new_empty!(bool, D));
3903                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3904                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3905                {
3906                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3907                }
3908                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3909                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3910                }
3911            }
3912
3913            next_offset += envelope_size;
3914            _next_ordinal_to_read += 1;
3915            if next_offset >= end_offset {
3916                return Ok(());
3917            }
3918
3919            // Decode unknown envelopes for gaps in ordinals.
3920            while _next_ordinal_to_read < 9 {
3921                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3922                _next_ordinal_to_read += 1;
3923                next_offset += envelope_size;
3924            }
3925
3926            let next_out_of_line = decoder.next_out_of_line();
3927            let handles_before = decoder.remaining_handles();
3928            if let Some((inlined, num_bytes, num_handles)) =
3929                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3930            {
3931                let member_inline_size =
3932                    <DispatcherState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3933                if inlined != (member_inline_size <= 4) {
3934                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3935                }
3936                let inner_offset;
3937                let mut inner_depth = depth.clone();
3938                if inlined {
3939                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3940                    inner_offset = next_offset;
3941                } else {
3942                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3943                    inner_depth.increment()?;
3944                }
3945                let val_ref =
3946                    self.state.get_or_insert_with(|| fidl::new_empty!(DispatcherState, D));
3947                fidl::decode!(DispatcherState, D, val_ref, decoder, inner_offset, inner_depth)?;
3948                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3949                {
3950                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3951                }
3952                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3953                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3954                }
3955            }
3956
3957            next_offset += envelope_size;
3958            _next_ordinal_to_read += 1;
3959            if next_offset >= end_offset {
3960                return Ok(());
3961            }
3962
3963            // Decode unknown envelopes for gaps in ordinals.
3964            while _next_ordinal_to_read < 10 {
3965                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3966                _next_ordinal_to_read += 1;
3967                next_offset += envelope_size;
3968            }
3969
3970            let next_out_of_line = decoder.next_out_of_line();
3971            let handles_before = decoder.remaining_handles();
3972            if let Some((inlined, num_bytes, num_handles)) =
3973                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3974            {
3975                let member_inline_size =
3976                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3977                        decoder.context,
3978                    );
3979                if inlined != (member_inline_size <= 4) {
3980                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3981                }
3982                let inner_offset;
3983                let mut inner_depth = depth.clone();
3984                if inlined {
3985                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3986                    inner_offset = next_offset;
3987                } else {
3988                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3989                    inner_depth.increment()?;
3990                }
3991                let val_ref = self
3992                    .destroy_context
3993                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3994                fidl::decode!(
3995                    fidl::encoding::UnboundedString,
3996                    D,
3997                    val_ref,
3998                    decoder,
3999                    inner_offset,
4000                    inner_depth
4001                )?;
4002                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4003                {
4004                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4005                }
4006                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4007                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4008                }
4009            }
4010
4011            next_offset += envelope_size;
4012            _next_ordinal_to_read += 1;
4013            if next_offset >= end_offset {
4014                return Ok(());
4015            }
4016
4017            // Decode unknown envelopes for gaps in ordinals.
4018            while _next_ordinal_to_read < 11 {
4019                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4020                _next_ordinal_to_read += 1;
4021                next_offset += envelope_size;
4022            }
4023
4024            let next_out_of_line = decoder.next_out_of_line();
4025            let handles_before = decoder.remaining_handles();
4026            if let Some((inlined, num_bytes, num_handles)) =
4027                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4028            {
4029                let member_inline_size =
4030                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4031                if inlined != (member_inline_size <= 4) {
4032                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4033                }
4034                let inner_offset;
4035                let mut inner_depth = depth.clone();
4036                if inlined {
4037                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4038                    inner_offset = next_offset;
4039                } else {
4040                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4041                    inner_depth.increment()?;
4042                }
4043                let val_ref =
4044                    self.destroy_user_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
4045                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4046                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4047                {
4048                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4049                }
4050                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4051                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4052                }
4053            }
4054
4055            next_offset += envelope_size;
4056            _next_ordinal_to_read += 1;
4057            if next_offset >= end_offset {
4058                return Ok(());
4059            }
4060
4061            // Decode unknown envelopes for gaps in ordinals.
4062            while _next_ordinal_to_read < 12 {
4063                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4064                _next_ordinal_to_read += 1;
4065                next_offset += envelope_size;
4066            }
4067
4068            let next_out_of_line = decoder.next_out_of_line();
4069            let handles_before = decoder.remaining_handles();
4070            if let Some((inlined, num_bytes, num_handles)) =
4071                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4072            {
4073                let member_inline_size =
4074                    <DispatcherDebugStats as fidl::encoding::TypeMarker>::inline_size(
4075                        decoder.context,
4076                    );
4077                if inlined != (member_inline_size <= 4) {
4078                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4079                }
4080                let inner_offset;
4081                let mut inner_depth = depth.clone();
4082                if inlined {
4083                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4084                    inner_offset = next_offset;
4085                } else {
4086                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4087                    inner_depth.increment()?;
4088                }
4089                let val_ref = self
4090                    .debug_stats
4091                    .get_or_insert_with(|| fidl::new_empty!(DispatcherDebugStats, D));
4092                fidl::decode!(
4093                    DispatcherDebugStats,
4094                    D,
4095                    val_ref,
4096                    decoder,
4097                    inner_offset,
4098                    inner_depth
4099                )?;
4100                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4101                {
4102                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4103                }
4104                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4105                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4106                }
4107            }
4108
4109            next_offset += envelope_size;
4110            _next_ordinal_to_read += 1;
4111            if next_offset >= end_offset {
4112                return Ok(());
4113            }
4114
4115            // Decode unknown envelopes for gaps in ordinals.
4116            while _next_ordinal_to_read < 13 {
4117                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4118                _next_ordinal_to_read += 1;
4119                next_offset += envelope_size;
4120            }
4121
4122            let next_out_of_line = decoder.next_out_of_line();
4123            let handles_before = decoder.remaining_handles();
4124            if let Some((inlined, num_bytes, num_handles)) =
4125                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4126            {
4127                let member_inline_size = <fidl::encoding::UnboundedVector<QueuedTaskInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4128                if inlined != (member_inline_size <= 4) {
4129                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4130                }
4131                let inner_offset;
4132                let mut inner_depth = depth.clone();
4133                if inlined {
4134                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4135                    inner_offset = next_offset;
4136                } else {
4137                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4138                    inner_depth.increment()?;
4139                }
4140                let val_ref = self.queued_tasks.get_or_insert_with(|| {
4141                    fidl::new_empty!(fidl::encoding::UnboundedVector<QueuedTaskInfo>, D)
4142                });
4143                fidl::decode!(
4144                    fidl::encoding::UnboundedVector<QueuedTaskInfo>,
4145                    D,
4146                    val_ref,
4147                    decoder,
4148                    inner_offset,
4149                    inner_depth
4150                )?;
4151                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4152                {
4153                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4154                }
4155                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4156                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4157                }
4158            }
4159
4160            next_offset += envelope_size;
4161            _next_ordinal_to_read += 1;
4162            if next_offset >= end_offset {
4163                return Ok(());
4164            }
4165
4166            // Decode unknown envelopes for gaps in ordinals.
4167            while _next_ordinal_to_read < 14 {
4168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4169                _next_ordinal_to_read += 1;
4170                next_offset += envelope_size;
4171            }
4172
4173            let next_out_of_line = decoder.next_out_of_line();
4174            let handles_before = decoder.remaining_handles();
4175            if let Some((inlined, num_bytes, num_handles)) =
4176                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4177            {
4178                let member_inline_size =
4179                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4180                if inlined != (member_inline_size <= 4) {
4181                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4182                }
4183                let inner_offset;
4184                let mut inner_depth = depth.clone();
4185                if inlined {
4186                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4187                    inner_offset = next_offset;
4188                } else {
4189                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4190                    inner_depth.increment()?;
4191                }
4192                let val_ref = self.num_queued_tasks.get_or_insert_with(|| fidl::new_empty!(u64, D));
4193                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4194                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4195                {
4196                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4197                }
4198                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4199                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4200                }
4201            }
4202
4203            next_offset += envelope_size;
4204
4205            // Decode the remaining unknown envelopes.
4206            while next_offset < end_offset {
4207                _next_ordinal_to_read += 1;
4208                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4209                next_offset += envelope_size;
4210            }
4211
4212            Ok(())
4213        }
4214    }
4215
4216    impl DriverHostInfo {
4217        #[inline(always)]
4218        fn max_ordinal_present(&self) -> u64 {
4219            if let Some(_) = self.name {
4220                return 5;
4221            }
4222            if let Some(_) = self.dispatchers {
4223                return 4;
4224            }
4225            if let Some(_) = self.drivers {
4226                return 3;
4227            }
4228            if let Some(_) = self.threads {
4229                return 2;
4230            }
4231            if let Some(_) = self.process_koid {
4232                return 1;
4233            }
4234            0
4235        }
4236    }
4237
4238    impl fidl::encoding::ValueTypeMarker for DriverHostInfo {
4239        type Borrowed<'a> = &'a Self;
4240        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4241            value
4242        }
4243    }
4244
4245    unsafe impl fidl::encoding::TypeMarker for DriverHostInfo {
4246        type Owned = Self;
4247
4248        #[inline(always)]
4249        fn inline_align(_context: fidl::encoding::Context) -> usize {
4250            8
4251        }
4252
4253        #[inline(always)]
4254        fn inline_size(_context: fidl::encoding::Context) -> usize {
4255            16
4256        }
4257    }
4258
4259    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverHostInfo, D>
4260        for &DriverHostInfo
4261    {
4262        unsafe fn encode(
4263            self,
4264            encoder: &mut fidl::encoding::Encoder<'_, D>,
4265            offset: usize,
4266            mut depth: fidl::encoding::Depth,
4267        ) -> fidl::Result<()> {
4268            encoder.debug_check_bounds::<DriverHostInfo>(offset);
4269            // Vector header
4270            let max_ordinal: u64 = self.max_ordinal_present();
4271            encoder.write_num(max_ordinal, offset);
4272            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4273            // Calling encoder.out_of_line_offset(0) is not allowed.
4274            if max_ordinal == 0 {
4275                return Ok(());
4276            }
4277            depth.increment()?;
4278            let envelope_size = 8;
4279            let bytes_len = max_ordinal as usize * envelope_size;
4280            #[allow(unused_variables)]
4281            let offset = encoder.out_of_line_offset(bytes_len);
4282            let mut _prev_end_offset: usize = 0;
4283            if 1 > max_ordinal {
4284                return Ok(());
4285            }
4286
4287            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4288            // are envelope_size bytes.
4289            let cur_offset: usize = (1 - 1) * envelope_size;
4290
4291            // Zero reserved fields.
4292            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4293
4294            // Safety:
4295            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4296            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4297            //   envelope_size bytes, there is always sufficient room.
4298            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4299                self.process_koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4300                encoder,
4301                offset + cur_offset,
4302                depth,
4303            )?;
4304
4305            _prev_end_offset = cur_offset + envelope_size;
4306            if 2 > max_ordinal {
4307                return Ok(());
4308            }
4309
4310            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4311            // are envelope_size bytes.
4312            let cur_offset: usize = (2 - 1) * envelope_size;
4313
4314            // Zero reserved fields.
4315            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4316
4317            // Safety:
4318            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4319            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4320            //   envelope_size bytes, there is always sufficient room.
4321            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ThreadInfo>, D>(
4322            self.threads.as_ref().map(<fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::ValueTypeMarker>::borrow),
4323            encoder, offset + cur_offset, depth
4324        )?;
4325
4326            _prev_end_offset = cur_offset + envelope_size;
4327            if 3 > max_ordinal {
4328                return Ok(());
4329            }
4330
4331            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4332            // are envelope_size bytes.
4333            let cur_offset: usize = (3 - 1) * envelope_size;
4334
4335            // Zero reserved fields.
4336            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4337
4338            // Safety:
4339            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4340            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4341            //   envelope_size bytes, there is always sufficient room.
4342            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>, D>(
4343            self.drivers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow),
4344            encoder, offset + cur_offset, depth
4345        )?;
4346
4347            _prev_end_offset = cur_offset + envelope_size;
4348            if 4 > max_ordinal {
4349                return Ok(());
4350            }
4351
4352            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4353            // are envelope_size bytes.
4354            let cur_offset: usize = (4 - 1) * envelope_size;
4355
4356            // Zero reserved fields.
4357            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4358
4359            // Safety:
4360            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4361            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4362            //   envelope_size bytes, there is always sufficient room.
4363            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DispatcherInfo>, D>(
4364            self.dispatchers.as_ref().map(<fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::ValueTypeMarker>::borrow),
4365            encoder, offset + cur_offset, depth
4366        )?;
4367
4368            _prev_end_offset = cur_offset + envelope_size;
4369            if 5 > max_ordinal {
4370                return Ok(());
4371            }
4372
4373            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4374            // are envelope_size bytes.
4375            let cur_offset: usize = (5 - 1) * envelope_size;
4376
4377            // Zero reserved fields.
4378            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4379
4380            // Safety:
4381            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4382            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4383            //   envelope_size bytes, there is always sufficient room.
4384            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4385                self.name.as_ref().map(
4386                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4387                ),
4388                encoder,
4389                offset + cur_offset,
4390                depth,
4391            )?;
4392
4393            _prev_end_offset = cur_offset + envelope_size;
4394
4395            Ok(())
4396        }
4397    }
4398
4399    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverHostInfo {
4400        #[inline(always)]
4401        fn new_empty() -> Self {
4402            Self::default()
4403        }
4404
4405        unsafe fn decode(
4406            &mut self,
4407            decoder: &mut fidl::encoding::Decoder<'_, D>,
4408            offset: usize,
4409            mut depth: fidl::encoding::Depth,
4410        ) -> fidl::Result<()> {
4411            decoder.debug_check_bounds::<Self>(offset);
4412            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4413                None => return Err(fidl::Error::NotNullable),
4414                Some(len) => len,
4415            };
4416            // Calling decoder.out_of_line_offset(0) is not allowed.
4417            if len == 0 {
4418                return Ok(());
4419            };
4420            depth.increment()?;
4421            let envelope_size = 8;
4422            let bytes_len = len * envelope_size;
4423            let offset = decoder.out_of_line_offset(bytes_len)?;
4424            // Decode the envelope for each type.
4425            let mut _next_ordinal_to_read = 0;
4426            let mut next_offset = offset;
4427            let end_offset = offset + bytes_len;
4428            _next_ordinal_to_read += 1;
4429            if next_offset >= end_offset {
4430                return Ok(());
4431            }
4432
4433            // Decode unknown envelopes for gaps in ordinals.
4434            while _next_ordinal_to_read < 1 {
4435                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4436                _next_ordinal_to_read += 1;
4437                next_offset += envelope_size;
4438            }
4439
4440            let next_out_of_line = decoder.next_out_of_line();
4441            let handles_before = decoder.remaining_handles();
4442            if let Some((inlined, num_bytes, num_handles)) =
4443                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4444            {
4445                let member_inline_size =
4446                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4447                if inlined != (member_inline_size <= 4) {
4448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4449                }
4450                let inner_offset;
4451                let mut inner_depth = depth.clone();
4452                if inlined {
4453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4454                    inner_offset = next_offset;
4455                } else {
4456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4457                    inner_depth.increment()?;
4458                }
4459                let val_ref = self.process_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4460                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4462                {
4463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4464                }
4465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4467                }
4468            }
4469
4470            next_offset += envelope_size;
4471            _next_ordinal_to_read += 1;
4472            if next_offset >= end_offset {
4473                return Ok(());
4474            }
4475
4476            // Decode unknown envelopes for gaps in ordinals.
4477            while _next_ordinal_to_read < 2 {
4478                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4479                _next_ordinal_to_read += 1;
4480                next_offset += envelope_size;
4481            }
4482
4483            let next_out_of_line = decoder.next_out_of_line();
4484            let handles_before = decoder.remaining_handles();
4485            if let Some((inlined, num_bytes, num_handles)) =
4486                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4487            {
4488                let member_inline_size = <fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4489                if inlined != (member_inline_size <= 4) {
4490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4491                }
4492                let inner_offset;
4493                let mut inner_depth = depth.clone();
4494                if inlined {
4495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4496                    inner_offset = next_offset;
4497                } else {
4498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4499                    inner_depth.increment()?;
4500                }
4501                let val_ref = self.threads.get_or_insert_with(|| {
4502                    fidl::new_empty!(fidl::encoding::UnboundedVector<ThreadInfo>, D)
4503                });
4504                fidl::decode!(
4505                    fidl::encoding::UnboundedVector<ThreadInfo>,
4506                    D,
4507                    val_ref,
4508                    decoder,
4509                    inner_offset,
4510                    inner_depth
4511                )?;
4512                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4513                {
4514                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4515                }
4516                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4517                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4518                }
4519            }
4520
4521            next_offset += envelope_size;
4522            _next_ordinal_to_read += 1;
4523            if next_offset >= end_offset {
4524                return Ok(());
4525            }
4526
4527            // Decode unknown envelopes for gaps in ordinals.
4528            while _next_ordinal_to_read < 3 {
4529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4530                _next_ordinal_to_read += 1;
4531                next_offset += envelope_size;
4532            }
4533
4534            let next_out_of_line = decoder.next_out_of_line();
4535            let handles_before = decoder.remaining_handles();
4536            if let Some((inlined, num_bytes, num_handles)) =
4537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4538            {
4539                let member_inline_size = <fidl::encoding::UnboundedVector<
4540                    fidl::encoding::BoundedString<4096>,
4541                > as fidl::encoding::TypeMarker>::inline_size(
4542                    decoder.context
4543                );
4544                if inlined != (member_inline_size <= 4) {
4545                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4546                }
4547                let inner_offset;
4548                let mut inner_depth = depth.clone();
4549                if inlined {
4550                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4551                    inner_offset = next_offset;
4552                } else {
4553                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4554                    inner_depth.increment()?;
4555                }
4556                let val_ref = self.drivers.get_or_insert_with(|| {
4557                    fidl::new_empty!(
4558                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
4559                        D
4560                    )
4561                });
4562                fidl::decode!(
4563                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
4564                    D,
4565                    val_ref,
4566                    decoder,
4567                    inner_offset,
4568                    inner_depth
4569                )?;
4570                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4571                {
4572                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4573                }
4574                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4575                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4576                }
4577            }
4578
4579            next_offset += envelope_size;
4580            _next_ordinal_to_read += 1;
4581            if next_offset >= end_offset {
4582                return Ok(());
4583            }
4584
4585            // Decode unknown envelopes for gaps in ordinals.
4586            while _next_ordinal_to_read < 4 {
4587                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4588                _next_ordinal_to_read += 1;
4589                next_offset += envelope_size;
4590            }
4591
4592            let next_out_of_line = decoder.next_out_of_line();
4593            let handles_before = decoder.remaining_handles();
4594            if let Some((inlined, num_bytes, num_handles)) =
4595                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4596            {
4597                let member_inline_size = <fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4598                if inlined != (member_inline_size <= 4) {
4599                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4600                }
4601                let inner_offset;
4602                let mut inner_depth = depth.clone();
4603                if inlined {
4604                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4605                    inner_offset = next_offset;
4606                } else {
4607                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4608                    inner_depth.increment()?;
4609                }
4610                let val_ref = self.dispatchers.get_or_insert_with(|| {
4611                    fidl::new_empty!(fidl::encoding::UnboundedVector<DispatcherInfo>, D)
4612                });
4613                fidl::decode!(
4614                    fidl::encoding::UnboundedVector<DispatcherInfo>,
4615                    D,
4616                    val_ref,
4617                    decoder,
4618                    inner_offset,
4619                    inner_depth
4620                )?;
4621                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4622                {
4623                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4624                }
4625                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4626                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4627                }
4628            }
4629
4630            next_offset += envelope_size;
4631            _next_ordinal_to_read += 1;
4632            if next_offset >= end_offset {
4633                return Ok(());
4634            }
4635
4636            // Decode unknown envelopes for gaps in ordinals.
4637            while _next_ordinal_to_read < 5 {
4638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4639                _next_ordinal_to_read += 1;
4640                next_offset += envelope_size;
4641            }
4642
4643            let next_out_of_line = decoder.next_out_of_line();
4644            let handles_before = decoder.remaining_handles();
4645            if let Some((inlined, num_bytes, num_handles)) =
4646                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4647            {
4648                let member_inline_size =
4649                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4650                        decoder.context,
4651                    );
4652                if inlined != (member_inline_size <= 4) {
4653                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4654                }
4655                let inner_offset;
4656                let mut inner_depth = depth.clone();
4657                if inlined {
4658                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4659                    inner_offset = next_offset;
4660                } else {
4661                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4662                    inner_depth.increment()?;
4663                }
4664                let val_ref = self
4665                    .name
4666                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4667                fidl::decode!(
4668                    fidl::encoding::UnboundedString,
4669                    D,
4670                    val_ref,
4671                    decoder,
4672                    inner_offset,
4673                    inner_depth
4674                )?;
4675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4676                {
4677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4678                }
4679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4681                }
4682            }
4683
4684            next_offset += envelope_size;
4685
4686            // Decode the remaining unknown envelopes.
4687            while next_offset < end_offset {
4688                _next_ordinal_to_read += 1;
4689                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4690                next_offset += envelope_size;
4691            }
4692
4693            Ok(())
4694        }
4695    }
4696
4697    impl NodeBindingInfo {
4698        #[inline(always)]
4699        fn max_ordinal_present(&self) -> u64 {
4700            if let Some(_) = self.composite_parents {
4701                return 3;
4702            }
4703            if let Some(_) = self.driver_url {
4704                return 2;
4705            }
4706            if let Some(_) = self.node_name {
4707                return 1;
4708            }
4709            0
4710        }
4711    }
4712
4713    impl fidl::encoding::ValueTypeMarker for NodeBindingInfo {
4714        type Borrowed<'a> = &'a Self;
4715        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4716            value
4717        }
4718    }
4719
4720    unsafe impl fidl::encoding::TypeMarker for NodeBindingInfo {
4721        type Owned = Self;
4722
4723        #[inline(always)]
4724        fn inline_align(_context: fidl::encoding::Context) -> usize {
4725            8
4726        }
4727
4728        #[inline(always)]
4729        fn inline_size(_context: fidl::encoding::Context) -> usize {
4730            16
4731        }
4732    }
4733
4734    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBindingInfo, D>
4735        for &NodeBindingInfo
4736    {
4737        unsafe fn encode(
4738            self,
4739            encoder: &mut fidl::encoding::Encoder<'_, D>,
4740            offset: usize,
4741            mut depth: fidl::encoding::Depth,
4742        ) -> fidl::Result<()> {
4743            encoder.debug_check_bounds::<NodeBindingInfo>(offset);
4744            // Vector header
4745            let max_ordinal: u64 = self.max_ordinal_present();
4746            encoder.write_num(max_ordinal, offset);
4747            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4748            // Calling encoder.out_of_line_offset(0) is not allowed.
4749            if max_ordinal == 0 {
4750                return Ok(());
4751            }
4752            depth.increment()?;
4753            let envelope_size = 8;
4754            let bytes_len = max_ordinal as usize * envelope_size;
4755            #[allow(unused_variables)]
4756            let offset = encoder.out_of_line_offset(bytes_len);
4757            let mut _prev_end_offset: usize = 0;
4758            if 1 > max_ordinal {
4759                return Ok(());
4760            }
4761
4762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4763            // are envelope_size bytes.
4764            let cur_offset: usize = (1 - 1) * envelope_size;
4765
4766            // Zero reserved fields.
4767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4768
4769            // Safety:
4770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4772            //   envelope_size bytes, there is always sufficient room.
4773            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4774            self.node_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4775            encoder, offset + cur_offset, depth
4776        )?;
4777
4778            _prev_end_offset = cur_offset + envelope_size;
4779            if 2 > 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 = (2 - 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::<fidl::encoding::BoundedString<4096>, D>(
4795            self.driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4796            encoder, offset + cur_offset, depth
4797        )?;
4798
4799            _prev_end_offset = cur_offset + envelope_size;
4800            if 3 > max_ordinal {
4801                return Ok(());
4802            }
4803
4804            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4805            // are envelope_size bytes.
4806            let cur_offset: usize = (3 - 1) * envelope_size;
4807
4808            // Zero reserved fields.
4809            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4810
4811            // Safety:
4812            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4813            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4814            //   envelope_size bytes, there is always sufficient room.
4815            fidl::encoding::encode_in_envelope_optional::<
4816                fidl::encoding::UnboundedVector<
4817                    fidl_fuchsia_driver_framework_common::CompositeParent,
4818                >,
4819                D,
4820            >(
4821                self.composite_parents.as_ref().map(
4822                    <fidl::encoding::UnboundedVector<
4823                        fidl_fuchsia_driver_framework_common::CompositeParent,
4824                    > as fidl::encoding::ValueTypeMarker>::borrow,
4825                ),
4826                encoder,
4827                offset + cur_offset,
4828                depth,
4829            )?;
4830
4831            _prev_end_offset = cur_offset + envelope_size;
4832
4833            Ok(())
4834        }
4835    }
4836
4837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBindingInfo {
4838        #[inline(always)]
4839        fn new_empty() -> Self {
4840            Self::default()
4841        }
4842
4843        unsafe fn decode(
4844            &mut self,
4845            decoder: &mut fidl::encoding::Decoder<'_, D>,
4846            offset: usize,
4847            mut depth: fidl::encoding::Depth,
4848        ) -> fidl::Result<()> {
4849            decoder.debug_check_bounds::<Self>(offset);
4850            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4851                None => return Err(fidl::Error::NotNullable),
4852                Some(len) => len,
4853            };
4854            // Calling decoder.out_of_line_offset(0) is not allowed.
4855            if len == 0 {
4856                return Ok(());
4857            };
4858            depth.increment()?;
4859            let envelope_size = 8;
4860            let bytes_len = len * envelope_size;
4861            let offset = decoder.out_of_line_offset(bytes_len)?;
4862            // Decode the envelope for each type.
4863            let mut _next_ordinal_to_read = 0;
4864            let mut next_offset = offset;
4865            let end_offset = offset + bytes_len;
4866            _next_ordinal_to_read += 1;
4867            if next_offset >= end_offset {
4868                return Ok(());
4869            }
4870
4871            // Decode unknown envelopes for gaps in ordinals.
4872            while _next_ordinal_to_read < 1 {
4873                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4874                _next_ordinal_to_read += 1;
4875                next_offset += envelope_size;
4876            }
4877
4878            let next_out_of_line = decoder.next_out_of_line();
4879            let handles_before = decoder.remaining_handles();
4880            if let Some((inlined, num_bytes, num_handles)) =
4881                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4882            {
4883                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4884                if inlined != (member_inline_size <= 4) {
4885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4886                }
4887                let inner_offset;
4888                let mut inner_depth = depth.clone();
4889                if inlined {
4890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4891                    inner_offset = next_offset;
4892                } else {
4893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4894                    inner_depth.increment()?;
4895                }
4896                let val_ref = self.node_name.get_or_insert_with(|| {
4897                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4898                });
4899                fidl::decode!(
4900                    fidl::encoding::BoundedString<1024>,
4901                    D,
4902                    val_ref,
4903                    decoder,
4904                    inner_offset,
4905                    inner_depth
4906                )?;
4907                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4908                {
4909                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4910                }
4911                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4912                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4913                }
4914            }
4915
4916            next_offset += envelope_size;
4917            _next_ordinal_to_read += 1;
4918            if next_offset >= end_offset {
4919                return Ok(());
4920            }
4921
4922            // Decode unknown envelopes for gaps in ordinals.
4923            while _next_ordinal_to_read < 2 {
4924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4925                _next_ordinal_to_read += 1;
4926                next_offset += envelope_size;
4927            }
4928
4929            let next_out_of_line = decoder.next_out_of_line();
4930            let handles_before = decoder.remaining_handles();
4931            if let Some((inlined, num_bytes, num_handles)) =
4932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4933            {
4934                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4935                if inlined != (member_inline_size <= 4) {
4936                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4937                }
4938                let inner_offset;
4939                let mut inner_depth = depth.clone();
4940                if inlined {
4941                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4942                    inner_offset = next_offset;
4943                } else {
4944                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4945                    inner_depth.increment()?;
4946                }
4947                let val_ref = self.driver_url.get_or_insert_with(|| {
4948                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4949                });
4950                fidl::decode!(
4951                    fidl::encoding::BoundedString<4096>,
4952                    D,
4953                    val_ref,
4954                    decoder,
4955                    inner_offset,
4956                    inner_depth
4957                )?;
4958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4959                {
4960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4961                }
4962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4964                }
4965            }
4966
4967            next_offset += envelope_size;
4968            _next_ordinal_to_read += 1;
4969            if next_offset >= end_offset {
4970                return Ok(());
4971            }
4972
4973            // Decode unknown envelopes for gaps in ordinals.
4974            while _next_ordinal_to_read < 3 {
4975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4976                _next_ordinal_to_read += 1;
4977                next_offset += envelope_size;
4978            }
4979
4980            let next_out_of_line = decoder.next_out_of_line();
4981            let handles_before = decoder.remaining_handles();
4982            if let Some((inlined, num_bytes, num_handles)) =
4983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4984            {
4985                let member_inline_size = <fidl::encoding::UnboundedVector<
4986                    fidl_fuchsia_driver_framework_common::CompositeParent,
4987                > as fidl::encoding::TypeMarker>::inline_size(
4988                    decoder.context
4989                );
4990                if inlined != (member_inline_size <= 4) {
4991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4992                }
4993                let inner_offset;
4994                let mut inner_depth = depth.clone();
4995                if inlined {
4996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4997                    inner_offset = next_offset;
4998                } else {
4999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5000                    inner_depth.increment()?;
5001                }
5002                let val_ref = self.composite_parents.get_or_insert_with(|| {
5003                    fidl::new_empty!(
5004                        fidl::encoding::UnboundedVector<
5005                            fidl_fuchsia_driver_framework_common::CompositeParent,
5006                        >,
5007                        D
5008                    )
5009                });
5010                fidl::decode!(
5011                    fidl::encoding::UnboundedVector<
5012                        fidl_fuchsia_driver_framework_common::CompositeParent,
5013                    >,
5014                    D,
5015                    val_ref,
5016                    decoder,
5017                    inner_offset,
5018                    inner_depth
5019                )?;
5020                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5021                {
5022                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5023                }
5024                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5025                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5026                }
5027            }
5028
5029            next_offset += envelope_size;
5030
5031            // Decode the remaining unknown envelopes.
5032            while next_offset < end_offset {
5033                _next_ordinal_to_read += 1;
5034                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5035                next_offset += envelope_size;
5036            }
5037
5038            Ok(())
5039        }
5040    }
5041
5042    impl NodeInfo {
5043        #[inline(always)]
5044        fn max_ordinal_present(&self) -> u64 {
5045            if let Some(_) = self.is_running {
5046                return 13;
5047            }
5048            if let Some(_) = self.topological_path {
5049                return 12;
5050            }
5051            if let Some(_) = self.bus_topology {
5052                return 11;
5053            }
5054            if let Some(_) = self.quarantined {
5055                return 10;
5056            }
5057            if let Some(_) = self.offer_list {
5058                return 9;
5059            }
5060            if let Some(_) = self.node_property_list {
5061                return 8;
5062            }
5063            if let Some(_) = self.moniker {
5064                return 7;
5065            }
5066            if let Some(_) = self.bound_driver_url {
5067                return 5;
5068            }
5069            if let Some(_) = self.driver_host_koid {
5070                return 4;
5071            }
5072            if let Some(_) = self.child_ids {
5073                return 3;
5074            }
5075            if let Some(_) = self.parent_ids {
5076                return 2;
5077            }
5078            if let Some(_) = self.id {
5079                return 1;
5080            }
5081            0
5082        }
5083    }
5084
5085    impl fidl::encoding::ValueTypeMarker for NodeInfo {
5086        type Borrowed<'a> = &'a Self;
5087        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5088            value
5089        }
5090    }
5091
5092    unsafe impl fidl::encoding::TypeMarker for NodeInfo {
5093        type Owned = Self;
5094
5095        #[inline(always)]
5096        fn inline_align(_context: fidl::encoding::Context) -> usize {
5097            8
5098        }
5099
5100        #[inline(always)]
5101        fn inline_size(_context: fidl::encoding::Context) -> usize {
5102            16
5103        }
5104    }
5105
5106    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeInfo, D> for &NodeInfo {
5107        unsafe fn encode(
5108            self,
5109            encoder: &mut fidl::encoding::Encoder<'_, D>,
5110            offset: usize,
5111            mut depth: fidl::encoding::Depth,
5112        ) -> fidl::Result<()> {
5113            encoder.debug_check_bounds::<NodeInfo>(offset);
5114            // Vector header
5115            let max_ordinal: u64 = self.max_ordinal_present();
5116            encoder.write_num(max_ordinal, offset);
5117            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5118            // Calling encoder.out_of_line_offset(0) is not allowed.
5119            if max_ordinal == 0 {
5120                return Ok(());
5121            }
5122            depth.increment()?;
5123            let envelope_size = 8;
5124            let bytes_len = max_ordinal as usize * envelope_size;
5125            #[allow(unused_variables)]
5126            let offset = encoder.out_of_line_offset(bytes_len);
5127            let mut _prev_end_offset: usize = 0;
5128            if 1 > max_ordinal {
5129                return Ok(());
5130            }
5131
5132            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5133            // are envelope_size bytes.
5134            let cur_offset: usize = (1 - 1) * envelope_size;
5135
5136            // Zero reserved fields.
5137            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5138
5139            // Safety:
5140            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5141            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5142            //   envelope_size bytes, there is always sufficient room.
5143            fidl::encoding::encode_in_envelope_optional::<u64, D>(
5144                self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5145                encoder,
5146                offset + cur_offset,
5147                depth,
5148            )?;
5149
5150            _prev_end_offset = cur_offset + envelope_size;
5151            if 2 > max_ordinal {
5152                return Ok(());
5153            }
5154
5155            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5156            // are envelope_size bytes.
5157            let cur_offset: usize = (2 - 1) * envelope_size;
5158
5159            // Zero reserved fields.
5160            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5161
5162            // Safety:
5163            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5164            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5165            //   envelope_size bytes, there is always sufficient room.
5166            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
5167            self.parent_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
5168            encoder, offset + cur_offset, depth
5169        )?;
5170
5171            _prev_end_offset = cur_offset + envelope_size;
5172            if 3 > max_ordinal {
5173                return Ok(());
5174            }
5175
5176            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5177            // are envelope_size bytes.
5178            let cur_offset: usize = (3 - 1) * envelope_size;
5179
5180            // Zero reserved fields.
5181            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5182
5183            // Safety:
5184            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5185            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5186            //   envelope_size bytes, there is always sufficient room.
5187            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
5188            self.child_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
5189            encoder, offset + cur_offset, depth
5190        )?;
5191
5192            _prev_end_offset = cur_offset + envelope_size;
5193            if 4 > max_ordinal {
5194                return Ok(());
5195            }
5196
5197            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5198            // are envelope_size bytes.
5199            let cur_offset: usize = (4 - 1) * envelope_size;
5200
5201            // Zero reserved fields.
5202            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5203
5204            // Safety:
5205            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5206            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5207            //   envelope_size bytes, there is always sufficient room.
5208            fidl::encoding::encode_in_envelope_optional::<u64, D>(
5209                self.driver_host_koid
5210                    .as_ref()
5211                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5212                encoder,
5213                offset + cur_offset,
5214                depth,
5215            )?;
5216
5217            _prev_end_offset = cur_offset + envelope_size;
5218            if 5 > max_ordinal {
5219                return Ok(());
5220            }
5221
5222            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5223            // are envelope_size bytes.
5224            let cur_offset: usize = (5 - 1) * envelope_size;
5225
5226            // Zero reserved fields.
5227            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5228
5229            // Safety:
5230            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5231            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5232            //   envelope_size bytes, there is always sufficient room.
5233            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5234            self.bound_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5235            encoder, offset + cur_offset, depth
5236        )?;
5237
5238            _prev_end_offset = cur_offset + envelope_size;
5239            if 7 > max_ordinal {
5240                return Ok(());
5241            }
5242
5243            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5244            // are envelope_size bytes.
5245            let cur_offset: usize = (7 - 1) * envelope_size;
5246
5247            // Zero reserved fields.
5248            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5249
5250            // Safety:
5251            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5252            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5253            //   envelope_size bytes, there is always sufficient room.
5254            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
5255            self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
5256            encoder, offset + cur_offset, depth
5257        )?;
5258
5259            _prev_end_offset = cur_offset + envelope_size;
5260            if 8 > max_ordinal {
5261                return Ok(());
5262            }
5263
5264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5265            // are envelope_size bytes.
5266            let cur_offset: usize = (8 - 1) * envelope_size;
5267
5268            // Zero reserved fields.
5269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5270
5271            // Safety:
5272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5274            //   envelope_size bytes, there is always sufficient room.
5275            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D>(
5276            self.node_property_list.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5277            encoder, offset + cur_offset, depth
5278        )?;
5279
5280            _prev_end_offset = cur_offset + envelope_size;
5281            if 9 > max_ordinal {
5282                return Ok(());
5283            }
5284
5285            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5286            // are envelope_size bytes.
5287            let cur_offset: usize = (9 - 1) * envelope_size;
5288
5289            // Zero reserved fields.
5290            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5291
5292            // Safety:
5293            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5294            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5295            //   envelope_size bytes, there is always sufficient room.
5296            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>, D>(
5297            self.offer_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer> as fidl::encoding::ValueTypeMarker>::borrow),
5298            encoder, offset + cur_offset, depth
5299        )?;
5300
5301            _prev_end_offset = cur_offset + envelope_size;
5302            if 10 > max_ordinal {
5303                return Ok(());
5304            }
5305
5306            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5307            // are envelope_size bytes.
5308            let cur_offset: usize = (10 - 1) * envelope_size;
5309
5310            // Zero reserved fields.
5311            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5312
5313            // Safety:
5314            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5315            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5316            //   envelope_size bytes, there is always sufficient room.
5317            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5318                self.quarantined.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5319                encoder,
5320                offset + cur_offset,
5321                depth,
5322            )?;
5323
5324            _prev_end_offset = cur_offset + envelope_size;
5325            if 11 > max_ordinal {
5326                return Ok(());
5327            }
5328
5329            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5330            // are envelope_size bytes.
5331            let cur_offset: usize = (11 - 1) * envelope_size;
5332
5333            // Zero reserved fields.
5334            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5335
5336            // Safety:
5337            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5338            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5339            //   envelope_size bytes, there is always sufficient room.
5340            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D>(
5341            self.bus_topology.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20> as fidl::encoding::ValueTypeMarker>::borrow),
5342            encoder, offset + cur_offset, depth
5343        )?;
5344
5345            _prev_end_offset = cur_offset + envelope_size;
5346            if 12 > max_ordinal {
5347                return Ok(());
5348            }
5349
5350            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5351            // are envelope_size bytes.
5352            let cur_offset: usize = (12 - 1) * envelope_size;
5353
5354            // Zero reserved fields.
5355            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5356
5357            // Safety:
5358            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5359            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5360            //   envelope_size bytes, there is always sufficient room.
5361            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
5362            self.topological_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
5363            encoder, offset + cur_offset, depth
5364        )?;
5365
5366            _prev_end_offset = cur_offset + envelope_size;
5367            if 13 > max_ordinal {
5368                return Ok(());
5369            }
5370
5371            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5372            // are envelope_size bytes.
5373            let cur_offset: usize = (13 - 1) * envelope_size;
5374
5375            // Zero reserved fields.
5376            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5377
5378            // Safety:
5379            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5380            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5381            //   envelope_size bytes, there is always sufficient room.
5382            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5383                self.is_running.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5384                encoder,
5385                offset + cur_offset,
5386                depth,
5387            )?;
5388
5389            _prev_end_offset = cur_offset + envelope_size;
5390
5391            Ok(())
5392        }
5393    }
5394
5395    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeInfo {
5396        #[inline(always)]
5397        fn new_empty() -> Self {
5398            Self::default()
5399        }
5400
5401        unsafe fn decode(
5402            &mut self,
5403            decoder: &mut fidl::encoding::Decoder<'_, D>,
5404            offset: usize,
5405            mut depth: fidl::encoding::Depth,
5406        ) -> fidl::Result<()> {
5407            decoder.debug_check_bounds::<Self>(offset);
5408            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5409                None => return Err(fidl::Error::NotNullable),
5410                Some(len) => len,
5411            };
5412            // Calling decoder.out_of_line_offset(0) is not allowed.
5413            if len == 0 {
5414                return Ok(());
5415            };
5416            depth.increment()?;
5417            let envelope_size = 8;
5418            let bytes_len = len * envelope_size;
5419            let offset = decoder.out_of_line_offset(bytes_len)?;
5420            // Decode the envelope for each type.
5421            let mut _next_ordinal_to_read = 0;
5422            let mut next_offset = offset;
5423            let end_offset = offset + bytes_len;
5424            _next_ordinal_to_read += 1;
5425            if next_offset >= end_offset {
5426                return Ok(());
5427            }
5428
5429            // Decode unknown envelopes for gaps in ordinals.
5430            while _next_ordinal_to_read < 1 {
5431                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5432                _next_ordinal_to_read += 1;
5433                next_offset += envelope_size;
5434            }
5435
5436            let next_out_of_line = decoder.next_out_of_line();
5437            let handles_before = decoder.remaining_handles();
5438            if let Some((inlined, num_bytes, num_handles)) =
5439                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5440            {
5441                let member_inline_size =
5442                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5443                if inlined != (member_inline_size <= 4) {
5444                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5445                }
5446                let inner_offset;
5447                let mut inner_depth = depth.clone();
5448                if inlined {
5449                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5450                    inner_offset = next_offset;
5451                } else {
5452                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5453                    inner_depth.increment()?;
5454                }
5455                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5456                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5457                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5458                {
5459                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5460                }
5461                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5462                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5463                }
5464            }
5465
5466            next_offset += envelope_size;
5467            _next_ordinal_to_read += 1;
5468            if next_offset >= end_offset {
5469                return Ok(());
5470            }
5471
5472            // Decode unknown envelopes for gaps in ordinals.
5473            while _next_ordinal_to_read < 2 {
5474                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5475                _next_ordinal_to_read += 1;
5476                next_offset += envelope_size;
5477            }
5478
5479            let next_out_of_line = decoder.next_out_of_line();
5480            let handles_before = decoder.remaining_handles();
5481            if let Some((inlined, num_bytes, num_handles)) =
5482                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5483            {
5484                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5485                if inlined != (member_inline_size <= 4) {
5486                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5487                }
5488                let inner_offset;
5489                let mut inner_depth = depth.clone();
5490                if inlined {
5491                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5492                    inner_offset = next_offset;
5493                } else {
5494                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5495                    inner_depth.increment()?;
5496                }
5497                let val_ref = self.parent_ids.get_or_insert_with(|| {
5498                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
5499                });
5500                fidl::decode!(
5501                    fidl::encoding::UnboundedVector<u64>,
5502                    D,
5503                    val_ref,
5504                    decoder,
5505                    inner_offset,
5506                    inner_depth
5507                )?;
5508                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5509                {
5510                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5511                }
5512                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5513                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5514                }
5515            }
5516
5517            next_offset += envelope_size;
5518            _next_ordinal_to_read += 1;
5519            if next_offset >= end_offset {
5520                return Ok(());
5521            }
5522
5523            // Decode unknown envelopes for gaps in ordinals.
5524            while _next_ordinal_to_read < 3 {
5525                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5526                _next_ordinal_to_read += 1;
5527                next_offset += envelope_size;
5528            }
5529
5530            let next_out_of_line = decoder.next_out_of_line();
5531            let handles_before = decoder.remaining_handles();
5532            if let Some((inlined, num_bytes, num_handles)) =
5533                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5534            {
5535                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5536                if inlined != (member_inline_size <= 4) {
5537                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5538                }
5539                let inner_offset;
5540                let mut inner_depth = depth.clone();
5541                if inlined {
5542                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5543                    inner_offset = next_offset;
5544                } else {
5545                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5546                    inner_depth.increment()?;
5547                }
5548                let val_ref = self.child_ids.get_or_insert_with(|| {
5549                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
5550                });
5551                fidl::decode!(
5552                    fidl::encoding::UnboundedVector<u64>,
5553                    D,
5554                    val_ref,
5555                    decoder,
5556                    inner_offset,
5557                    inner_depth
5558                )?;
5559                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5560                {
5561                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5562                }
5563                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5564                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5565                }
5566            }
5567
5568            next_offset += envelope_size;
5569            _next_ordinal_to_read += 1;
5570            if next_offset >= end_offset {
5571                return Ok(());
5572            }
5573
5574            // Decode unknown envelopes for gaps in ordinals.
5575            while _next_ordinal_to_read < 4 {
5576                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5577                _next_ordinal_to_read += 1;
5578                next_offset += envelope_size;
5579            }
5580
5581            let next_out_of_line = decoder.next_out_of_line();
5582            let handles_before = decoder.remaining_handles();
5583            if let Some((inlined, num_bytes, num_handles)) =
5584                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5585            {
5586                let member_inline_size =
5587                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5588                if inlined != (member_inline_size <= 4) {
5589                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5590                }
5591                let inner_offset;
5592                let mut inner_depth = depth.clone();
5593                if inlined {
5594                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5595                    inner_offset = next_offset;
5596                } else {
5597                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5598                    inner_depth.increment()?;
5599                }
5600                let val_ref = self.driver_host_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
5601                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5602                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5603                {
5604                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5605                }
5606                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5607                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5608                }
5609            }
5610
5611            next_offset += envelope_size;
5612            _next_ordinal_to_read += 1;
5613            if next_offset >= end_offset {
5614                return Ok(());
5615            }
5616
5617            // Decode unknown envelopes for gaps in ordinals.
5618            while _next_ordinal_to_read < 5 {
5619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5620                _next_ordinal_to_read += 1;
5621                next_offset += envelope_size;
5622            }
5623
5624            let next_out_of_line = decoder.next_out_of_line();
5625            let handles_before = decoder.remaining_handles();
5626            if let Some((inlined, num_bytes, num_handles)) =
5627                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5628            {
5629                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5630                if inlined != (member_inline_size <= 4) {
5631                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5632                }
5633                let inner_offset;
5634                let mut inner_depth = depth.clone();
5635                if inlined {
5636                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5637                    inner_offset = next_offset;
5638                } else {
5639                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5640                    inner_depth.increment()?;
5641                }
5642                let val_ref = self.bound_driver_url.get_or_insert_with(|| {
5643                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5644                });
5645                fidl::decode!(
5646                    fidl::encoding::BoundedString<4096>,
5647                    D,
5648                    val_ref,
5649                    decoder,
5650                    inner_offset,
5651                    inner_depth
5652                )?;
5653                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5654                {
5655                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5656                }
5657                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5658                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5659                }
5660            }
5661
5662            next_offset += envelope_size;
5663            _next_ordinal_to_read += 1;
5664            if next_offset >= end_offset {
5665                return Ok(());
5666            }
5667
5668            // Decode unknown envelopes for gaps in ordinals.
5669            while _next_ordinal_to_read < 7 {
5670                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5671                _next_ordinal_to_read += 1;
5672                next_offset += envelope_size;
5673            }
5674
5675            let next_out_of_line = decoder.next_out_of_line();
5676            let handles_before = decoder.remaining_handles();
5677            if let Some((inlined, num_bytes, num_handles)) =
5678                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5679            {
5680                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5681                if inlined != (member_inline_size <= 4) {
5682                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5683                }
5684                let inner_offset;
5685                let mut inner_depth = depth.clone();
5686                if inlined {
5687                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5688                    inner_offset = next_offset;
5689                } else {
5690                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5691                    inner_depth.increment()?;
5692                }
5693                let val_ref = self.moniker.get_or_insert_with(|| {
5694                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
5695                });
5696                fidl::decode!(
5697                    fidl::encoding::BoundedString<1024>,
5698                    D,
5699                    val_ref,
5700                    decoder,
5701                    inner_offset,
5702                    inner_depth
5703                )?;
5704                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5705                {
5706                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5707                }
5708                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5709                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5710                }
5711            }
5712
5713            next_offset += envelope_size;
5714            _next_ordinal_to_read += 1;
5715            if next_offset >= end_offset {
5716                return Ok(());
5717            }
5718
5719            // Decode unknown envelopes for gaps in ordinals.
5720            while _next_ordinal_to_read < 8 {
5721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5722                _next_ordinal_to_read += 1;
5723                next_offset += envelope_size;
5724            }
5725
5726            let next_out_of_line = decoder.next_out_of_line();
5727            let handles_before = decoder.remaining_handles();
5728            if let Some((inlined, num_bytes, num_handles)) =
5729                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5730            {
5731                let member_inline_size = <fidl::encoding::Vector<
5732                    fidl_fuchsia_driver_framework_common::NodeProperty2,
5733                    64,
5734                > as fidl::encoding::TypeMarker>::inline_size(
5735                    decoder.context
5736                );
5737                if inlined != (member_inline_size <= 4) {
5738                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5739                }
5740                let inner_offset;
5741                let mut inner_depth = depth.clone();
5742                if inlined {
5743                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5744                    inner_offset = next_offset;
5745                } else {
5746                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5747                    inner_depth.increment()?;
5748                }
5749                let val_ref =
5750                self.node_property_list.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D));
5751                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
5752                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5753                {
5754                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5755                }
5756                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5757                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5758                }
5759            }
5760
5761            next_offset += envelope_size;
5762            _next_ordinal_to_read += 1;
5763            if next_offset >= end_offset {
5764                return Ok(());
5765            }
5766
5767            // Decode unknown envelopes for gaps in ordinals.
5768            while _next_ordinal_to_read < 9 {
5769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5770                _next_ordinal_to_read += 1;
5771                next_offset += envelope_size;
5772            }
5773
5774            let next_out_of_line = decoder.next_out_of_line();
5775            let handles_before = decoder.remaining_handles();
5776            if let Some((inlined, num_bytes, num_handles)) =
5777                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5778            {
5779                let member_inline_size = <fidl::encoding::UnboundedVector<
5780                    fidl_fuchsia_component_decl_common::Offer,
5781                > as fidl::encoding::TypeMarker>::inline_size(
5782                    decoder.context
5783                );
5784                if inlined != (member_inline_size <= 4) {
5785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5786                }
5787                let inner_offset;
5788                let mut inner_depth = depth.clone();
5789                if inlined {
5790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5791                    inner_offset = next_offset;
5792                } else {
5793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5794                    inner_depth.increment()?;
5795                }
5796                let val_ref = self.offer_list.get_or_insert_with(|| {
5797                    fidl::new_empty!(
5798                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
5799                        D
5800                    )
5801                });
5802                fidl::decode!(
5803                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
5804                    D,
5805                    val_ref,
5806                    decoder,
5807                    inner_offset,
5808                    inner_depth
5809                )?;
5810                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5811                {
5812                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5813                }
5814                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5815                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5816                }
5817            }
5818
5819            next_offset += envelope_size;
5820            _next_ordinal_to_read += 1;
5821            if next_offset >= end_offset {
5822                return Ok(());
5823            }
5824
5825            // Decode unknown envelopes for gaps in ordinals.
5826            while _next_ordinal_to_read < 10 {
5827                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5828                _next_ordinal_to_read += 1;
5829                next_offset += envelope_size;
5830            }
5831
5832            let next_out_of_line = decoder.next_out_of_line();
5833            let handles_before = decoder.remaining_handles();
5834            if let Some((inlined, num_bytes, num_handles)) =
5835                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5836            {
5837                let member_inline_size =
5838                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5839                if inlined != (member_inline_size <= 4) {
5840                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5841                }
5842                let inner_offset;
5843                let mut inner_depth = depth.clone();
5844                if inlined {
5845                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5846                    inner_offset = next_offset;
5847                } else {
5848                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5849                    inner_depth.increment()?;
5850                }
5851                let val_ref = self.quarantined.get_or_insert_with(|| fidl::new_empty!(bool, D));
5852                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5853                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5854                {
5855                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5856                }
5857                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5858                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5859                }
5860            }
5861
5862            next_offset += envelope_size;
5863            _next_ordinal_to_read += 1;
5864            if next_offset >= end_offset {
5865                return Ok(());
5866            }
5867
5868            // Decode unknown envelopes for gaps in ordinals.
5869            while _next_ordinal_to_read < 11 {
5870                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5871                _next_ordinal_to_read += 1;
5872                next_offset += envelope_size;
5873            }
5874
5875            let next_out_of_line = decoder.next_out_of_line();
5876            let handles_before = decoder.remaining_handles();
5877            if let Some((inlined, num_bytes, num_handles)) =
5878                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5879            {
5880                let member_inline_size = <fidl::encoding::Vector<
5881                    fidl_fuchsia_driver_framework_common::BusInfo,
5882                    20,
5883                > as fidl::encoding::TypeMarker>::inline_size(
5884                    decoder.context
5885                );
5886                if inlined != (member_inline_size <= 4) {
5887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5888                }
5889                let inner_offset;
5890                let mut inner_depth = depth.clone();
5891                if inlined {
5892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5893                    inner_offset = next_offset;
5894                } else {
5895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5896                    inner_depth.increment()?;
5897                }
5898                let val_ref =
5899                self.bus_topology.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D));
5900                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D, val_ref, decoder, inner_offset, inner_depth)?;
5901                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5902                {
5903                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5904                }
5905                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5906                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5907                }
5908            }
5909
5910            next_offset += envelope_size;
5911            _next_ordinal_to_read += 1;
5912            if next_offset >= end_offset {
5913                return Ok(());
5914            }
5915
5916            // Decode unknown envelopes for gaps in ordinals.
5917            while _next_ordinal_to_read < 12 {
5918                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5919                _next_ordinal_to_read += 1;
5920                next_offset += envelope_size;
5921            }
5922
5923            let next_out_of_line = decoder.next_out_of_line();
5924            let handles_before = decoder.remaining_handles();
5925            if let Some((inlined, num_bytes, num_handles)) =
5926                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5927            {
5928                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5929                if inlined != (member_inline_size <= 4) {
5930                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5931                }
5932                let inner_offset;
5933                let mut inner_depth = depth.clone();
5934                if inlined {
5935                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5936                    inner_offset = next_offset;
5937                } else {
5938                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5939                    inner_depth.increment()?;
5940                }
5941                let val_ref = self.topological_path.get_or_insert_with(|| {
5942                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
5943                });
5944                fidl::decode!(
5945                    fidl::encoding::BoundedString<1024>,
5946                    D,
5947                    val_ref,
5948                    decoder,
5949                    inner_offset,
5950                    inner_depth
5951                )?;
5952                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5953                {
5954                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5955                }
5956                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5957                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5958                }
5959            }
5960
5961            next_offset += envelope_size;
5962            _next_ordinal_to_read += 1;
5963            if next_offset >= end_offset {
5964                return Ok(());
5965            }
5966
5967            // Decode unknown envelopes for gaps in ordinals.
5968            while _next_ordinal_to_read < 13 {
5969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5970                _next_ordinal_to_read += 1;
5971                next_offset += envelope_size;
5972            }
5973
5974            let next_out_of_line = decoder.next_out_of_line();
5975            let handles_before = decoder.remaining_handles();
5976            if let Some((inlined, num_bytes, num_handles)) =
5977                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5978            {
5979                let member_inline_size =
5980                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5981                if inlined != (member_inline_size <= 4) {
5982                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5983                }
5984                let inner_offset;
5985                let mut inner_depth = depth.clone();
5986                if inlined {
5987                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5988                    inner_offset = next_offset;
5989                } else {
5990                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5991                    inner_depth.increment()?;
5992                }
5993                let val_ref = self.is_running.get_or_insert_with(|| fidl::new_empty!(bool, D));
5994                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5995                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5996                {
5997                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5998                }
5999                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6000                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6001                }
6002            }
6003
6004            next_offset += envelope_size;
6005
6006            // Decode the remaining unknown envelopes.
6007            while next_offset < end_offset {
6008                _next_ordinal_to_read += 1;
6009                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6010                next_offset += envelope_size;
6011            }
6012
6013            Ok(())
6014        }
6015    }
6016
6017    impl NonInlinedRequestStats {
6018        #[inline(always)]
6019        fn max_ordinal_present(&self) -> u64 {
6020            if let Some(_) = self.no_thread_migration {
6021                return 7;
6022            }
6023            if let Some(_) = self.channel_wait_not_yet_registered {
6024                return 6;
6025            }
6026            if let Some(_) = self.reentrant {
6027                return 5;
6028            }
6029            if let Some(_) = self.unknown_thread {
6030                return 4;
6031            }
6032            if let Some(_) = self.task {
6033                return 3;
6034            }
6035            if let Some(_) = self.parallel_dispatch {
6036                return 2;
6037            }
6038            if let Some(_) = self.allow_sync_calls {
6039                return 1;
6040            }
6041            0
6042        }
6043    }
6044
6045    impl fidl::encoding::ValueTypeMarker for NonInlinedRequestStats {
6046        type Borrowed<'a> = &'a Self;
6047        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6048            value
6049        }
6050    }
6051
6052    unsafe impl fidl::encoding::TypeMarker for NonInlinedRequestStats {
6053        type Owned = Self;
6054
6055        #[inline(always)]
6056        fn inline_align(_context: fidl::encoding::Context) -> usize {
6057            8
6058        }
6059
6060        #[inline(always)]
6061        fn inline_size(_context: fidl::encoding::Context) -> usize {
6062            16
6063        }
6064    }
6065
6066    unsafe impl<D: fidl::encoding::ResourceDialect>
6067        fidl::encoding::Encode<NonInlinedRequestStats, D> for &NonInlinedRequestStats
6068    {
6069        unsafe fn encode(
6070            self,
6071            encoder: &mut fidl::encoding::Encoder<'_, D>,
6072            offset: usize,
6073            mut depth: fidl::encoding::Depth,
6074        ) -> fidl::Result<()> {
6075            encoder.debug_check_bounds::<NonInlinedRequestStats>(offset);
6076            // Vector header
6077            let max_ordinal: u64 = self.max_ordinal_present();
6078            encoder.write_num(max_ordinal, offset);
6079            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6080            // Calling encoder.out_of_line_offset(0) is not allowed.
6081            if max_ordinal == 0 {
6082                return Ok(());
6083            }
6084            depth.increment()?;
6085            let envelope_size = 8;
6086            let bytes_len = max_ordinal as usize * envelope_size;
6087            #[allow(unused_variables)]
6088            let offset = encoder.out_of_line_offset(bytes_len);
6089            let mut _prev_end_offset: usize = 0;
6090            if 1 > max_ordinal {
6091                return Ok(());
6092            }
6093
6094            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6095            // are envelope_size bytes.
6096            let cur_offset: usize = (1 - 1) * envelope_size;
6097
6098            // Zero reserved fields.
6099            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6100
6101            // Safety:
6102            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6103            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6104            //   envelope_size bytes, there is always sufficient room.
6105            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6106                self.allow_sync_calls
6107                    .as_ref()
6108                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6109                encoder,
6110                offset + cur_offset,
6111                depth,
6112            )?;
6113
6114            _prev_end_offset = cur_offset + envelope_size;
6115            if 2 > max_ordinal {
6116                return Ok(());
6117            }
6118
6119            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6120            // are envelope_size bytes.
6121            let cur_offset: usize = (2 - 1) * envelope_size;
6122
6123            // Zero reserved fields.
6124            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6125
6126            // Safety:
6127            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6128            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6129            //   envelope_size bytes, there is always sufficient room.
6130            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6131                self.parallel_dispatch
6132                    .as_ref()
6133                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6134                encoder,
6135                offset + cur_offset,
6136                depth,
6137            )?;
6138
6139            _prev_end_offset = cur_offset + envelope_size;
6140            if 3 > max_ordinal {
6141                return Ok(());
6142            }
6143
6144            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6145            // are envelope_size bytes.
6146            let cur_offset: usize = (3 - 1) * envelope_size;
6147
6148            // Zero reserved fields.
6149            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6150
6151            // Safety:
6152            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6153            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6154            //   envelope_size bytes, there is always sufficient room.
6155            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6156                self.task.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6157                encoder,
6158                offset + cur_offset,
6159                depth,
6160            )?;
6161
6162            _prev_end_offset = cur_offset + envelope_size;
6163            if 4 > max_ordinal {
6164                return Ok(());
6165            }
6166
6167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6168            // are envelope_size bytes.
6169            let cur_offset: usize = (4 - 1) * envelope_size;
6170
6171            // Zero reserved fields.
6172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6173
6174            // Safety:
6175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6177            //   envelope_size bytes, there is always sufficient room.
6178            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6179                self.unknown_thread.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6180                encoder,
6181                offset + cur_offset,
6182                depth,
6183            )?;
6184
6185            _prev_end_offset = cur_offset + envelope_size;
6186            if 5 > max_ordinal {
6187                return Ok(());
6188            }
6189
6190            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6191            // are envelope_size bytes.
6192            let cur_offset: usize = (5 - 1) * envelope_size;
6193
6194            // Zero reserved fields.
6195            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6196
6197            // Safety:
6198            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6199            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6200            //   envelope_size bytes, there is always sufficient room.
6201            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6202                self.reentrant.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6203                encoder,
6204                offset + cur_offset,
6205                depth,
6206            )?;
6207
6208            _prev_end_offset = cur_offset + envelope_size;
6209            if 6 > max_ordinal {
6210                return Ok(());
6211            }
6212
6213            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6214            // are envelope_size bytes.
6215            let cur_offset: usize = (6 - 1) * envelope_size;
6216
6217            // Zero reserved fields.
6218            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6219
6220            // Safety:
6221            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6222            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6223            //   envelope_size bytes, there is always sufficient room.
6224            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6225                self.channel_wait_not_yet_registered
6226                    .as_ref()
6227                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6228                encoder,
6229                offset + cur_offset,
6230                depth,
6231            )?;
6232
6233            _prev_end_offset = cur_offset + envelope_size;
6234            if 7 > max_ordinal {
6235                return Ok(());
6236            }
6237
6238            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6239            // are envelope_size bytes.
6240            let cur_offset: usize = (7 - 1) * envelope_size;
6241
6242            // Zero reserved fields.
6243            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6244
6245            // Safety:
6246            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6247            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6248            //   envelope_size bytes, there is always sufficient room.
6249            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6250                self.no_thread_migration
6251                    .as_ref()
6252                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6253                encoder,
6254                offset + cur_offset,
6255                depth,
6256            )?;
6257
6258            _prev_end_offset = cur_offset + envelope_size;
6259
6260            Ok(())
6261        }
6262    }
6263
6264    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6265        for NonInlinedRequestStats
6266    {
6267        #[inline(always)]
6268        fn new_empty() -> Self {
6269            Self::default()
6270        }
6271
6272        unsafe fn decode(
6273            &mut self,
6274            decoder: &mut fidl::encoding::Decoder<'_, D>,
6275            offset: usize,
6276            mut depth: fidl::encoding::Depth,
6277        ) -> fidl::Result<()> {
6278            decoder.debug_check_bounds::<Self>(offset);
6279            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6280                None => return Err(fidl::Error::NotNullable),
6281                Some(len) => len,
6282            };
6283            // Calling decoder.out_of_line_offset(0) is not allowed.
6284            if len == 0 {
6285                return Ok(());
6286            };
6287            depth.increment()?;
6288            let envelope_size = 8;
6289            let bytes_len = len * envelope_size;
6290            let offset = decoder.out_of_line_offset(bytes_len)?;
6291            // Decode the envelope for each type.
6292            let mut _next_ordinal_to_read = 0;
6293            let mut next_offset = offset;
6294            let end_offset = offset + bytes_len;
6295            _next_ordinal_to_read += 1;
6296            if next_offset >= end_offset {
6297                return Ok(());
6298            }
6299
6300            // Decode unknown envelopes for gaps in ordinals.
6301            while _next_ordinal_to_read < 1 {
6302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6303                _next_ordinal_to_read += 1;
6304                next_offset += envelope_size;
6305            }
6306
6307            let next_out_of_line = decoder.next_out_of_line();
6308            let handles_before = decoder.remaining_handles();
6309            if let Some((inlined, num_bytes, num_handles)) =
6310                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6311            {
6312                let member_inline_size =
6313                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6314                if inlined != (member_inline_size <= 4) {
6315                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6316                }
6317                let inner_offset;
6318                let mut inner_depth = depth.clone();
6319                if inlined {
6320                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6321                    inner_offset = next_offset;
6322                } else {
6323                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6324                    inner_depth.increment()?;
6325                }
6326                let val_ref = self.allow_sync_calls.get_or_insert_with(|| fidl::new_empty!(u64, D));
6327                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6329                {
6330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6331                }
6332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6334                }
6335            }
6336
6337            next_offset += envelope_size;
6338            _next_ordinal_to_read += 1;
6339            if next_offset >= end_offset {
6340                return Ok(());
6341            }
6342
6343            // Decode unknown envelopes for gaps in ordinals.
6344            while _next_ordinal_to_read < 2 {
6345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6346                _next_ordinal_to_read += 1;
6347                next_offset += envelope_size;
6348            }
6349
6350            let next_out_of_line = decoder.next_out_of_line();
6351            let handles_before = decoder.remaining_handles();
6352            if let Some((inlined, num_bytes, num_handles)) =
6353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6354            {
6355                let member_inline_size =
6356                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6357                if inlined != (member_inline_size <= 4) {
6358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6359                }
6360                let inner_offset;
6361                let mut inner_depth = depth.clone();
6362                if inlined {
6363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6364                    inner_offset = next_offset;
6365                } else {
6366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6367                    inner_depth.increment()?;
6368                }
6369                let val_ref =
6370                    self.parallel_dispatch.get_or_insert_with(|| fidl::new_empty!(u64, D));
6371                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6373                {
6374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6375                }
6376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6378                }
6379            }
6380
6381            next_offset += envelope_size;
6382            _next_ordinal_to_read += 1;
6383            if next_offset >= end_offset {
6384                return Ok(());
6385            }
6386
6387            // Decode unknown envelopes for gaps in ordinals.
6388            while _next_ordinal_to_read < 3 {
6389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6390                _next_ordinal_to_read += 1;
6391                next_offset += envelope_size;
6392            }
6393
6394            let next_out_of_line = decoder.next_out_of_line();
6395            let handles_before = decoder.remaining_handles();
6396            if let Some((inlined, num_bytes, num_handles)) =
6397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6398            {
6399                let member_inline_size =
6400                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6401                if inlined != (member_inline_size <= 4) {
6402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6403                }
6404                let inner_offset;
6405                let mut inner_depth = depth.clone();
6406                if inlined {
6407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6408                    inner_offset = next_offset;
6409                } else {
6410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6411                    inner_depth.increment()?;
6412                }
6413                let val_ref = self.task.get_or_insert_with(|| fidl::new_empty!(u64, D));
6414                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6416                {
6417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6418                }
6419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6421                }
6422            }
6423
6424            next_offset += envelope_size;
6425            _next_ordinal_to_read += 1;
6426            if next_offset >= end_offset {
6427                return Ok(());
6428            }
6429
6430            // Decode unknown envelopes for gaps in ordinals.
6431            while _next_ordinal_to_read < 4 {
6432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6433                _next_ordinal_to_read += 1;
6434                next_offset += envelope_size;
6435            }
6436
6437            let next_out_of_line = decoder.next_out_of_line();
6438            let handles_before = decoder.remaining_handles();
6439            if let Some((inlined, num_bytes, num_handles)) =
6440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6441            {
6442                let member_inline_size =
6443                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6444                if inlined != (member_inline_size <= 4) {
6445                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6446                }
6447                let inner_offset;
6448                let mut inner_depth = depth.clone();
6449                if inlined {
6450                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6451                    inner_offset = next_offset;
6452                } else {
6453                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6454                    inner_depth.increment()?;
6455                }
6456                let val_ref = self.unknown_thread.get_or_insert_with(|| fidl::new_empty!(u64, D));
6457                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6458                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6459                {
6460                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6461                }
6462                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6463                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6464                }
6465            }
6466
6467            next_offset += envelope_size;
6468            _next_ordinal_to_read += 1;
6469            if next_offset >= end_offset {
6470                return Ok(());
6471            }
6472
6473            // Decode unknown envelopes for gaps in ordinals.
6474            while _next_ordinal_to_read < 5 {
6475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6476                _next_ordinal_to_read += 1;
6477                next_offset += envelope_size;
6478            }
6479
6480            let next_out_of_line = decoder.next_out_of_line();
6481            let handles_before = decoder.remaining_handles();
6482            if let Some((inlined, num_bytes, num_handles)) =
6483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6484            {
6485                let member_inline_size =
6486                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6487                if inlined != (member_inline_size <= 4) {
6488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6489                }
6490                let inner_offset;
6491                let mut inner_depth = depth.clone();
6492                if inlined {
6493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6494                    inner_offset = next_offset;
6495                } else {
6496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6497                    inner_depth.increment()?;
6498                }
6499                let val_ref = self.reentrant.get_or_insert_with(|| fidl::new_empty!(u64, D));
6500                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6502                {
6503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6504                }
6505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6507                }
6508            }
6509
6510            next_offset += envelope_size;
6511            _next_ordinal_to_read += 1;
6512            if next_offset >= end_offset {
6513                return Ok(());
6514            }
6515
6516            // Decode unknown envelopes for gaps in ordinals.
6517            while _next_ordinal_to_read < 6 {
6518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6519                _next_ordinal_to_read += 1;
6520                next_offset += envelope_size;
6521            }
6522
6523            let next_out_of_line = decoder.next_out_of_line();
6524            let handles_before = decoder.remaining_handles();
6525            if let Some((inlined, num_bytes, num_handles)) =
6526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6527            {
6528                let member_inline_size =
6529                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6530                if inlined != (member_inline_size <= 4) {
6531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6532                }
6533                let inner_offset;
6534                let mut inner_depth = depth.clone();
6535                if inlined {
6536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6537                    inner_offset = next_offset;
6538                } else {
6539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6540                    inner_depth.increment()?;
6541                }
6542                let val_ref = self
6543                    .channel_wait_not_yet_registered
6544                    .get_or_insert_with(|| fidl::new_empty!(u64, D));
6545                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6547                {
6548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6549                }
6550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6552                }
6553            }
6554
6555            next_offset += envelope_size;
6556            _next_ordinal_to_read += 1;
6557            if next_offset >= end_offset {
6558                return Ok(());
6559            }
6560
6561            // Decode unknown envelopes for gaps in ordinals.
6562            while _next_ordinal_to_read < 7 {
6563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6564                _next_ordinal_to_read += 1;
6565                next_offset += envelope_size;
6566            }
6567
6568            let next_out_of_line = decoder.next_out_of_line();
6569            let handles_before = decoder.remaining_handles();
6570            if let Some((inlined, num_bytes, num_handles)) =
6571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6572            {
6573                let member_inline_size =
6574                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6575                if inlined != (member_inline_size <= 4) {
6576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6577                }
6578                let inner_offset;
6579                let mut inner_depth = depth.clone();
6580                if inlined {
6581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6582                    inner_offset = next_offset;
6583                } else {
6584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6585                    inner_depth.increment()?;
6586                }
6587                let val_ref =
6588                    self.no_thread_migration.get_or_insert_with(|| fidl::new_empty!(u64, D));
6589                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6590                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6591                {
6592                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6593                }
6594                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6595                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6596                }
6597            }
6598
6599            next_offset += envelope_size;
6600
6601            // Decode the remaining unknown envelopes.
6602            while next_offset < end_offset {
6603                _next_ordinal_to_read += 1;
6604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6605                next_offset += envelope_size;
6606            }
6607
6608            Ok(())
6609        }
6610    }
6611
6612    impl QueuedTaskInfo {
6613        #[inline(always)]
6614        fn max_ordinal_present(&self) -> u64 {
6615            if let Some(_) = self.initiating_driver_url {
6616                return 6;
6617            }
6618            if let Some(_) = self.initiating_driver {
6619                return 5;
6620            }
6621            if let Some(_) = self.initiating_dispatcher_name {
6622                return 4;
6623            }
6624            if let Some(_) = self.initiating_dispatcher {
6625                return 3;
6626            }
6627            if let Some(_) = self.handler {
6628                return 2;
6629            }
6630            if let Some(_) = self.ptr {
6631                return 1;
6632            }
6633            0
6634        }
6635    }
6636
6637    impl fidl::encoding::ValueTypeMarker for QueuedTaskInfo {
6638        type Borrowed<'a> = &'a Self;
6639        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6640            value
6641        }
6642    }
6643
6644    unsafe impl fidl::encoding::TypeMarker for QueuedTaskInfo {
6645        type Owned = Self;
6646
6647        #[inline(always)]
6648        fn inline_align(_context: fidl::encoding::Context) -> usize {
6649            8
6650        }
6651
6652        #[inline(always)]
6653        fn inline_size(_context: fidl::encoding::Context) -> usize {
6654            16
6655        }
6656    }
6657
6658    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<QueuedTaskInfo, D>
6659        for &QueuedTaskInfo
6660    {
6661        unsafe fn encode(
6662            self,
6663            encoder: &mut fidl::encoding::Encoder<'_, D>,
6664            offset: usize,
6665            mut depth: fidl::encoding::Depth,
6666        ) -> fidl::Result<()> {
6667            encoder.debug_check_bounds::<QueuedTaskInfo>(offset);
6668            // Vector header
6669            let max_ordinal: u64 = self.max_ordinal_present();
6670            encoder.write_num(max_ordinal, offset);
6671            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6672            // Calling encoder.out_of_line_offset(0) is not allowed.
6673            if max_ordinal == 0 {
6674                return Ok(());
6675            }
6676            depth.increment()?;
6677            let envelope_size = 8;
6678            let bytes_len = max_ordinal as usize * envelope_size;
6679            #[allow(unused_variables)]
6680            let offset = encoder.out_of_line_offset(bytes_len);
6681            let mut _prev_end_offset: usize = 0;
6682            if 1 > max_ordinal {
6683                return Ok(());
6684            }
6685
6686            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6687            // are envelope_size bytes.
6688            let cur_offset: usize = (1 - 1) * envelope_size;
6689
6690            // Zero reserved fields.
6691            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6692
6693            // Safety:
6694            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6695            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6696            //   envelope_size bytes, there is always sufficient room.
6697            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6698                self.ptr.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6699                encoder,
6700                offset + cur_offset,
6701                depth,
6702            )?;
6703
6704            _prev_end_offset = cur_offset + envelope_size;
6705            if 2 > max_ordinal {
6706                return Ok(());
6707            }
6708
6709            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6710            // are envelope_size bytes.
6711            let cur_offset: usize = (2 - 1) * envelope_size;
6712
6713            // Zero reserved fields.
6714            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6715
6716            // Safety:
6717            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6718            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6719            //   envelope_size bytes, there is always sufficient room.
6720            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6721                self.handler.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6722                encoder,
6723                offset + cur_offset,
6724                depth,
6725            )?;
6726
6727            _prev_end_offset = cur_offset + envelope_size;
6728            if 3 > max_ordinal {
6729                return Ok(());
6730            }
6731
6732            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6733            // are envelope_size bytes.
6734            let cur_offset: usize = (3 - 1) * envelope_size;
6735
6736            // Zero reserved fields.
6737            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6738
6739            // Safety:
6740            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6741            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6742            //   envelope_size bytes, there is always sufficient room.
6743            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6744                self.initiating_dispatcher
6745                    .as_ref()
6746                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6747                encoder,
6748                offset + cur_offset,
6749                depth,
6750            )?;
6751
6752            _prev_end_offset = cur_offset + envelope_size;
6753            if 4 > max_ordinal {
6754                return Ok(());
6755            }
6756
6757            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6758            // are envelope_size bytes.
6759            let cur_offset: usize = (4 - 1) * envelope_size;
6760
6761            // Zero reserved fields.
6762            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6763
6764            // Safety:
6765            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6766            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6767            //   envelope_size bytes, there is always sufficient room.
6768            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6769                self.initiating_dispatcher_name.as_ref().map(
6770                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6771                ),
6772                encoder,
6773                offset + cur_offset,
6774                depth,
6775            )?;
6776
6777            _prev_end_offset = cur_offset + envelope_size;
6778            if 5 > max_ordinal {
6779                return Ok(());
6780            }
6781
6782            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6783            // are envelope_size bytes.
6784            let cur_offset: usize = (5 - 1) * envelope_size;
6785
6786            // Zero reserved fields.
6787            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6788
6789            // Safety:
6790            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6791            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6792            //   envelope_size bytes, there is always sufficient room.
6793            fidl::encoding::encode_in_envelope_optional::<u64, D>(
6794                self.initiating_driver
6795                    .as_ref()
6796                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6797                encoder,
6798                offset + cur_offset,
6799                depth,
6800            )?;
6801
6802            _prev_end_offset = cur_offset + envelope_size;
6803            if 6 > max_ordinal {
6804                return Ok(());
6805            }
6806
6807            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6808            // are envelope_size bytes.
6809            let cur_offset: usize = (6 - 1) * envelope_size;
6810
6811            // Zero reserved fields.
6812            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6813
6814            // Safety:
6815            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6816            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6817            //   envelope_size bytes, there is always sufficient room.
6818            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6819            self.initiating_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6820            encoder, offset + cur_offset, depth
6821        )?;
6822
6823            _prev_end_offset = cur_offset + envelope_size;
6824
6825            Ok(())
6826        }
6827    }
6828
6829    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for QueuedTaskInfo {
6830        #[inline(always)]
6831        fn new_empty() -> Self {
6832            Self::default()
6833        }
6834
6835        unsafe fn decode(
6836            &mut self,
6837            decoder: &mut fidl::encoding::Decoder<'_, D>,
6838            offset: usize,
6839            mut depth: fidl::encoding::Depth,
6840        ) -> fidl::Result<()> {
6841            decoder.debug_check_bounds::<Self>(offset);
6842            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6843                None => return Err(fidl::Error::NotNullable),
6844                Some(len) => len,
6845            };
6846            // Calling decoder.out_of_line_offset(0) is not allowed.
6847            if len == 0 {
6848                return Ok(());
6849            };
6850            depth.increment()?;
6851            let envelope_size = 8;
6852            let bytes_len = len * envelope_size;
6853            let offset = decoder.out_of_line_offset(bytes_len)?;
6854            // Decode the envelope for each type.
6855            let mut _next_ordinal_to_read = 0;
6856            let mut next_offset = offset;
6857            let end_offset = offset + bytes_len;
6858            _next_ordinal_to_read += 1;
6859            if next_offset >= end_offset {
6860                return Ok(());
6861            }
6862
6863            // Decode unknown envelopes for gaps in ordinals.
6864            while _next_ordinal_to_read < 1 {
6865                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6866                _next_ordinal_to_read += 1;
6867                next_offset += envelope_size;
6868            }
6869
6870            let next_out_of_line = decoder.next_out_of_line();
6871            let handles_before = decoder.remaining_handles();
6872            if let Some((inlined, num_bytes, num_handles)) =
6873                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6874            {
6875                let member_inline_size =
6876                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6877                if inlined != (member_inline_size <= 4) {
6878                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6879                }
6880                let inner_offset;
6881                let mut inner_depth = depth.clone();
6882                if inlined {
6883                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6884                    inner_offset = next_offset;
6885                } else {
6886                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6887                    inner_depth.increment()?;
6888                }
6889                let val_ref = self.ptr.get_or_insert_with(|| fidl::new_empty!(u64, D));
6890                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6891                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6892                {
6893                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6894                }
6895                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6896                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6897                }
6898            }
6899
6900            next_offset += envelope_size;
6901            _next_ordinal_to_read += 1;
6902            if next_offset >= end_offset {
6903                return Ok(());
6904            }
6905
6906            // Decode unknown envelopes for gaps in ordinals.
6907            while _next_ordinal_to_read < 2 {
6908                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6909                _next_ordinal_to_read += 1;
6910                next_offset += envelope_size;
6911            }
6912
6913            let next_out_of_line = decoder.next_out_of_line();
6914            let handles_before = decoder.remaining_handles();
6915            if let Some((inlined, num_bytes, num_handles)) =
6916                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6917            {
6918                let member_inline_size =
6919                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6920                if inlined != (member_inline_size <= 4) {
6921                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6922                }
6923                let inner_offset;
6924                let mut inner_depth = depth.clone();
6925                if inlined {
6926                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6927                    inner_offset = next_offset;
6928                } else {
6929                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6930                    inner_depth.increment()?;
6931                }
6932                let val_ref = self.handler.get_or_insert_with(|| fidl::new_empty!(u64, D));
6933                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6934                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6935                {
6936                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6937                }
6938                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6939                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6940                }
6941            }
6942
6943            next_offset += envelope_size;
6944            _next_ordinal_to_read += 1;
6945            if next_offset >= end_offset {
6946                return Ok(());
6947            }
6948
6949            // Decode unknown envelopes for gaps in ordinals.
6950            while _next_ordinal_to_read < 3 {
6951                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6952                _next_ordinal_to_read += 1;
6953                next_offset += envelope_size;
6954            }
6955
6956            let next_out_of_line = decoder.next_out_of_line();
6957            let handles_before = decoder.remaining_handles();
6958            if let Some((inlined, num_bytes, num_handles)) =
6959                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6960            {
6961                let member_inline_size =
6962                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6963                if inlined != (member_inline_size <= 4) {
6964                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6965                }
6966                let inner_offset;
6967                let mut inner_depth = depth.clone();
6968                if inlined {
6969                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6970                    inner_offset = next_offset;
6971                } else {
6972                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6973                    inner_depth.increment()?;
6974                }
6975                let val_ref =
6976                    self.initiating_dispatcher.get_or_insert_with(|| fidl::new_empty!(u64, D));
6977                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6979                {
6980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6981                }
6982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6984                }
6985            }
6986
6987            next_offset += envelope_size;
6988            _next_ordinal_to_read += 1;
6989            if next_offset >= end_offset {
6990                return Ok(());
6991            }
6992
6993            // Decode unknown envelopes for gaps in ordinals.
6994            while _next_ordinal_to_read < 4 {
6995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6996                _next_ordinal_to_read += 1;
6997                next_offset += envelope_size;
6998            }
6999
7000            let next_out_of_line = decoder.next_out_of_line();
7001            let handles_before = decoder.remaining_handles();
7002            if let Some((inlined, num_bytes, num_handles)) =
7003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7004            {
7005                let member_inline_size =
7006                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7007                        decoder.context,
7008                    );
7009                if inlined != (member_inline_size <= 4) {
7010                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7011                }
7012                let inner_offset;
7013                let mut inner_depth = depth.clone();
7014                if inlined {
7015                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7016                    inner_offset = next_offset;
7017                } else {
7018                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7019                    inner_depth.increment()?;
7020                }
7021                let val_ref = self
7022                    .initiating_dispatcher_name
7023                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7024                fidl::decode!(
7025                    fidl::encoding::UnboundedString,
7026                    D,
7027                    val_ref,
7028                    decoder,
7029                    inner_offset,
7030                    inner_depth
7031                )?;
7032                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7033                {
7034                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7035                }
7036                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7037                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7038                }
7039            }
7040
7041            next_offset += envelope_size;
7042            _next_ordinal_to_read += 1;
7043            if next_offset >= end_offset {
7044                return Ok(());
7045            }
7046
7047            // Decode unknown envelopes for gaps in ordinals.
7048            while _next_ordinal_to_read < 5 {
7049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7050                _next_ordinal_to_read += 1;
7051                next_offset += envelope_size;
7052            }
7053
7054            let next_out_of_line = decoder.next_out_of_line();
7055            let handles_before = decoder.remaining_handles();
7056            if let Some((inlined, num_bytes, num_handles)) =
7057                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7058            {
7059                let member_inline_size =
7060                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7061                if inlined != (member_inline_size <= 4) {
7062                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7063                }
7064                let inner_offset;
7065                let mut inner_depth = depth.clone();
7066                if inlined {
7067                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7068                    inner_offset = next_offset;
7069                } else {
7070                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7071                    inner_depth.increment()?;
7072                }
7073                let val_ref =
7074                    self.initiating_driver.get_or_insert_with(|| fidl::new_empty!(u64, D));
7075                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7076                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7077                {
7078                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7079                }
7080                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7081                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7082                }
7083            }
7084
7085            next_offset += envelope_size;
7086            _next_ordinal_to_read += 1;
7087            if next_offset >= end_offset {
7088                return Ok(());
7089            }
7090
7091            // Decode unknown envelopes for gaps in ordinals.
7092            while _next_ordinal_to_read < 6 {
7093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7094                _next_ordinal_to_read += 1;
7095                next_offset += envelope_size;
7096            }
7097
7098            let next_out_of_line = decoder.next_out_of_line();
7099            let handles_before = decoder.remaining_handles();
7100            if let Some((inlined, num_bytes, num_handles)) =
7101                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7102            {
7103                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7104                if inlined != (member_inline_size <= 4) {
7105                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7106                }
7107                let inner_offset;
7108                let mut inner_depth = depth.clone();
7109                if inlined {
7110                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7111                    inner_offset = next_offset;
7112                } else {
7113                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7114                    inner_depth.increment()?;
7115                }
7116                let val_ref = self.initiating_driver_url.get_or_insert_with(|| {
7117                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7118                });
7119                fidl::decode!(
7120                    fidl::encoding::BoundedString<4096>,
7121                    D,
7122                    val_ref,
7123                    decoder,
7124                    inner_offset,
7125                    inner_depth
7126                )?;
7127                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7128                {
7129                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7130                }
7131                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7132                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7133                }
7134            }
7135
7136            next_offset += envelope_size;
7137
7138            // Decode the remaining unknown envelopes.
7139            while next_offset < end_offset {
7140                _next_ordinal_to_read += 1;
7141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7142                next_offset += envelope_size;
7143            }
7144
7145            Ok(())
7146        }
7147    }
7148
7149    impl TestNodeAddArgs {
7150        #[inline(always)]
7151        fn max_ordinal_present(&self) -> u64 {
7152            if let Some(_) = self.properties {
7153                return 2;
7154            }
7155            if let Some(_) = self.name {
7156                return 1;
7157            }
7158            0
7159        }
7160    }
7161
7162    impl fidl::encoding::ValueTypeMarker for TestNodeAddArgs {
7163        type Borrowed<'a> = &'a Self;
7164        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7165            value
7166        }
7167    }
7168
7169    unsafe impl fidl::encoding::TypeMarker for TestNodeAddArgs {
7170        type Owned = Self;
7171
7172        #[inline(always)]
7173        fn inline_align(_context: fidl::encoding::Context) -> usize {
7174            8
7175        }
7176
7177        #[inline(always)]
7178        fn inline_size(_context: fidl::encoding::Context) -> usize {
7179            16
7180        }
7181    }
7182
7183    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TestNodeAddArgs, D>
7184        for &TestNodeAddArgs
7185    {
7186        unsafe fn encode(
7187            self,
7188            encoder: &mut fidl::encoding::Encoder<'_, D>,
7189            offset: usize,
7190            mut depth: fidl::encoding::Depth,
7191        ) -> fidl::Result<()> {
7192            encoder.debug_check_bounds::<TestNodeAddArgs>(offset);
7193            // Vector header
7194            let max_ordinal: u64 = self.max_ordinal_present();
7195            encoder.write_num(max_ordinal, offset);
7196            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7197            // Calling encoder.out_of_line_offset(0) is not allowed.
7198            if max_ordinal == 0 {
7199                return Ok(());
7200            }
7201            depth.increment()?;
7202            let envelope_size = 8;
7203            let bytes_len = max_ordinal as usize * envelope_size;
7204            #[allow(unused_variables)]
7205            let offset = encoder.out_of_line_offset(bytes_len);
7206            let mut _prev_end_offset: usize = 0;
7207            if 1 > max_ordinal {
7208                return Ok(());
7209            }
7210
7211            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7212            // are envelope_size bytes.
7213            let cur_offset: usize = (1 - 1) * envelope_size;
7214
7215            // Zero reserved fields.
7216            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7217
7218            // Safety:
7219            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7220            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7221            //   envelope_size bytes, there is always sufficient room.
7222            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
7223            self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
7224            encoder, offset + cur_offset, depth
7225        )?;
7226
7227            _prev_end_offset = cur_offset + envelope_size;
7228            if 2 > max_ordinal {
7229                return Ok(());
7230            }
7231
7232            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7233            // are envelope_size bytes.
7234            let cur_offset: usize = (2 - 1) * envelope_size;
7235
7236            // Zero reserved fields.
7237            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7238
7239            // Safety:
7240            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7241            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7242            //   envelope_size bytes, there is always sufficient room.
7243            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D>(
7244            self.properties.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7245            encoder, offset + cur_offset, depth
7246        )?;
7247
7248            _prev_end_offset = cur_offset + envelope_size;
7249
7250            Ok(())
7251        }
7252    }
7253
7254    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TestNodeAddArgs {
7255        #[inline(always)]
7256        fn new_empty() -> Self {
7257            Self::default()
7258        }
7259
7260        unsafe fn decode(
7261            &mut self,
7262            decoder: &mut fidl::encoding::Decoder<'_, D>,
7263            offset: usize,
7264            mut depth: fidl::encoding::Depth,
7265        ) -> fidl::Result<()> {
7266            decoder.debug_check_bounds::<Self>(offset);
7267            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7268                None => return Err(fidl::Error::NotNullable),
7269                Some(len) => len,
7270            };
7271            // Calling decoder.out_of_line_offset(0) is not allowed.
7272            if len == 0 {
7273                return Ok(());
7274            };
7275            depth.increment()?;
7276            let envelope_size = 8;
7277            let bytes_len = len * envelope_size;
7278            let offset = decoder.out_of_line_offset(bytes_len)?;
7279            // Decode the envelope for each type.
7280            let mut _next_ordinal_to_read = 0;
7281            let mut next_offset = offset;
7282            let end_offset = offset + bytes_len;
7283            _next_ordinal_to_read += 1;
7284            if next_offset >= end_offset {
7285                return Ok(());
7286            }
7287
7288            // Decode unknown envelopes for gaps in ordinals.
7289            while _next_ordinal_to_read < 1 {
7290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7291                _next_ordinal_to_read += 1;
7292                next_offset += envelope_size;
7293            }
7294
7295            let next_out_of_line = decoder.next_out_of_line();
7296            let handles_before = decoder.remaining_handles();
7297            if let Some((inlined, num_bytes, num_handles)) =
7298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7299            {
7300                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7301                if inlined != (member_inline_size <= 4) {
7302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7303                }
7304                let inner_offset;
7305                let mut inner_depth = depth.clone();
7306                if inlined {
7307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7308                    inner_offset = next_offset;
7309                } else {
7310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7311                    inner_depth.increment()?;
7312                }
7313                let val_ref = self.name.get_or_insert_with(|| {
7314                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
7315                });
7316                fidl::decode!(
7317                    fidl::encoding::BoundedString<1024>,
7318                    D,
7319                    val_ref,
7320                    decoder,
7321                    inner_offset,
7322                    inner_depth
7323                )?;
7324                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7325                {
7326                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7327                }
7328                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7329                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7330                }
7331            }
7332
7333            next_offset += envelope_size;
7334            _next_ordinal_to_read += 1;
7335            if next_offset >= end_offset {
7336                return Ok(());
7337            }
7338
7339            // Decode unknown envelopes for gaps in ordinals.
7340            while _next_ordinal_to_read < 2 {
7341                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7342                _next_ordinal_to_read += 1;
7343                next_offset += envelope_size;
7344            }
7345
7346            let next_out_of_line = decoder.next_out_of_line();
7347            let handles_before = decoder.remaining_handles();
7348            if let Some((inlined, num_bytes, num_handles)) =
7349                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7350            {
7351                let member_inline_size = <fidl::encoding::Vector<
7352                    fidl_fuchsia_driver_framework_common::NodeProperty2,
7353                    64,
7354                > as fidl::encoding::TypeMarker>::inline_size(
7355                    decoder.context
7356                );
7357                if inlined != (member_inline_size <= 4) {
7358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7359                }
7360                let inner_offset;
7361                let mut inner_depth = depth.clone();
7362                if inlined {
7363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7364                    inner_offset = next_offset;
7365                } else {
7366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7367                    inner_depth.increment()?;
7368                }
7369                let val_ref =
7370                self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D));
7371                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty2, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7373                {
7374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7375                }
7376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7378                }
7379            }
7380
7381            next_offset += envelope_size;
7382
7383            // Decode the remaining unknown envelopes.
7384            while next_offset < end_offset {
7385                _next_ordinal_to_read += 1;
7386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7387                next_offset += envelope_size;
7388            }
7389
7390            Ok(())
7391        }
7392    }
7393
7394    impl ThreadInfo {
7395        #[inline(always)]
7396        fn max_ordinal_present(&self) -> u64 {
7397            if let Some(_) = self.scheduler_role {
7398                return 3;
7399            }
7400            if let Some(_) = self.name {
7401                return 2;
7402            }
7403            if let Some(_) = self.koid {
7404                return 1;
7405            }
7406            0
7407        }
7408    }
7409
7410    impl fidl::encoding::ValueTypeMarker for ThreadInfo {
7411        type Borrowed<'a> = &'a Self;
7412        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7413            value
7414        }
7415    }
7416
7417    unsafe impl fidl::encoding::TypeMarker for ThreadInfo {
7418        type Owned = Self;
7419
7420        #[inline(always)]
7421        fn inline_align(_context: fidl::encoding::Context) -> usize {
7422            8
7423        }
7424
7425        #[inline(always)]
7426        fn inline_size(_context: fidl::encoding::Context) -> usize {
7427            16
7428        }
7429    }
7430
7431    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadInfo, D>
7432        for &ThreadInfo
7433    {
7434        unsafe fn encode(
7435            self,
7436            encoder: &mut fidl::encoding::Encoder<'_, D>,
7437            offset: usize,
7438            mut depth: fidl::encoding::Depth,
7439        ) -> fidl::Result<()> {
7440            encoder.debug_check_bounds::<ThreadInfo>(offset);
7441            // Vector header
7442            let max_ordinal: u64 = self.max_ordinal_present();
7443            encoder.write_num(max_ordinal, offset);
7444            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7445            // Calling encoder.out_of_line_offset(0) is not allowed.
7446            if max_ordinal == 0 {
7447                return Ok(());
7448            }
7449            depth.increment()?;
7450            let envelope_size = 8;
7451            let bytes_len = max_ordinal as usize * envelope_size;
7452            #[allow(unused_variables)]
7453            let offset = encoder.out_of_line_offset(bytes_len);
7454            let mut _prev_end_offset: usize = 0;
7455            if 1 > max_ordinal {
7456                return Ok(());
7457            }
7458
7459            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7460            // are envelope_size bytes.
7461            let cur_offset: usize = (1 - 1) * envelope_size;
7462
7463            // Zero reserved fields.
7464            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7465
7466            // Safety:
7467            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7468            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7469            //   envelope_size bytes, there is always sufficient room.
7470            fidl::encoding::encode_in_envelope_optional::<u64, D>(
7471                self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
7472                encoder,
7473                offset + cur_offset,
7474                depth,
7475            )?;
7476
7477            _prev_end_offset = cur_offset + envelope_size;
7478            if 2 > max_ordinal {
7479                return Ok(());
7480            }
7481
7482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7483            // are envelope_size bytes.
7484            let cur_offset: usize = (2 - 1) * envelope_size;
7485
7486            // Zero reserved fields.
7487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7488
7489            // Safety:
7490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7492            //   envelope_size bytes, there is always sufficient room.
7493            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
7494                self.name.as_ref().map(
7495                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
7496                ),
7497                encoder,
7498                offset + cur_offset,
7499                depth,
7500            )?;
7501
7502            _prev_end_offset = cur_offset + envelope_size;
7503            if 3 > max_ordinal {
7504                return Ok(());
7505            }
7506
7507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7508            // are envelope_size bytes.
7509            let cur_offset: usize = (3 - 1) * envelope_size;
7510
7511            // Zero reserved fields.
7512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7513
7514            // Safety:
7515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7517            //   envelope_size bytes, there is always sufficient room.
7518            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
7519                self.scheduler_role.as_ref().map(
7520                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
7521                ),
7522                encoder,
7523                offset + cur_offset,
7524                depth,
7525            )?;
7526
7527            _prev_end_offset = cur_offset + envelope_size;
7528
7529            Ok(())
7530        }
7531    }
7532
7533    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadInfo {
7534        #[inline(always)]
7535        fn new_empty() -> Self {
7536            Self::default()
7537        }
7538
7539        unsafe fn decode(
7540            &mut self,
7541            decoder: &mut fidl::encoding::Decoder<'_, D>,
7542            offset: usize,
7543            mut depth: fidl::encoding::Depth,
7544        ) -> fidl::Result<()> {
7545            decoder.debug_check_bounds::<Self>(offset);
7546            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7547                None => return Err(fidl::Error::NotNullable),
7548                Some(len) => len,
7549            };
7550            // Calling decoder.out_of_line_offset(0) is not allowed.
7551            if len == 0 {
7552                return Ok(());
7553            };
7554            depth.increment()?;
7555            let envelope_size = 8;
7556            let bytes_len = len * envelope_size;
7557            let offset = decoder.out_of_line_offset(bytes_len)?;
7558            // Decode the envelope for each type.
7559            let mut _next_ordinal_to_read = 0;
7560            let mut next_offset = offset;
7561            let end_offset = offset + bytes_len;
7562            _next_ordinal_to_read += 1;
7563            if next_offset >= end_offset {
7564                return Ok(());
7565            }
7566
7567            // Decode unknown envelopes for gaps in ordinals.
7568            while _next_ordinal_to_read < 1 {
7569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7570                _next_ordinal_to_read += 1;
7571                next_offset += envelope_size;
7572            }
7573
7574            let next_out_of_line = decoder.next_out_of_line();
7575            let handles_before = decoder.remaining_handles();
7576            if let Some((inlined, num_bytes, num_handles)) =
7577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7578            {
7579                let member_inline_size =
7580                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7581                if inlined != (member_inline_size <= 4) {
7582                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7583                }
7584                let inner_offset;
7585                let mut inner_depth = depth.clone();
7586                if inlined {
7587                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7588                    inner_offset = next_offset;
7589                } else {
7590                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7591                    inner_depth.increment()?;
7592                }
7593                let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
7594                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7596                {
7597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7598                }
7599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7601                }
7602            }
7603
7604            next_offset += envelope_size;
7605            _next_ordinal_to_read += 1;
7606            if next_offset >= end_offset {
7607                return Ok(());
7608            }
7609
7610            // Decode unknown envelopes for gaps in ordinals.
7611            while _next_ordinal_to_read < 2 {
7612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7613                _next_ordinal_to_read += 1;
7614                next_offset += envelope_size;
7615            }
7616
7617            let next_out_of_line = decoder.next_out_of_line();
7618            let handles_before = decoder.remaining_handles();
7619            if let Some((inlined, num_bytes, num_handles)) =
7620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7621            {
7622                let member_inline_size =
7623                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7624                        decoder.context,
7625                    );
7626                if inlined != (member_inline_size <= 4) {
7627                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7628                }
7629                let inner_offset;
7630                let mut inner_depth = depth.clone();
7631                if inlined {
7632                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7633                    inner_offset = next_offset;
7634                } else {
7635                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7636                    inner_depth.increment()?;
7637                }
7638                let val_ref = self
7639                    .name
7640                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7641                fidl::decode!(
7642                    fidl::encoding::UnboundedString,
7643                    D,
7644                    val_ref,
7645                    decoder,
7646                    inner_offset,
7647                    inner_depth
7648                )?;
7649                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7650                {
7651                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7652                }
7653                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7654                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7655                }
7656            }
7657
7658            next_offset += envelope_size;
7659            _next_ordinal_to_read += 1;
7660            if next_offset >= end_offset {
7661                return Ok(());
7662            }
7663
7664            // Decode unknown envelopes for gaps in ordinals.
7665            while _next_ordinal_to_read < 3 {
7666                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7667                _next_ordinal_to_read += 1;
7668                next_offset += envelope_size;
7669            }
7670
7671            let next_out_of_line = decoder.next_out_of_line();
7672            let handles_before = decoder.remaining_handles();
7673            if let Some((inlined, num_bytes, num_handles)) =
7674                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7675            {
7676                let member_inline_size =
7677                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7678                        decoder.context,
7679                    );
7680                if inlined != (member_inline_size <= 4) {
7681                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7682                }
7683                let inner_offset;
7684                let mut inner_depth = depth.clone();
7685                if inlined {
7686                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7687                    inner_offset = next_offset;
7688                } else {
7689                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7690                    inner_depth.increment()?;
7691                }
7692                let val_ref = self
7693                    .scheduler_role
7694                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7695                fidl::decode!(
7696                    fidl::encoding::UnboundedString,
7697                    D,
7698                    val_ref,
7699                    decoder,
7700                    inner_offset,
7701                    inner_depth
7702                )?;
7703                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7704                {
7705                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7706                }
7707                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7708                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7709                }
7710            }
7711
7712            next_offset += envelope_size;
7713
7714            // Decode the remaining unknown envelopes.
7715            while next_offset < end_offset {
7716                _next_ordinal_to_read += 1;
7717                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7718                next_offset += envelope_size;
7719            }
7720
7721            Ok(())
7722        }
7723    }
7724
7725    impl fidl::encoding::ValueTypeMarker for CompositeInfo {
7726        type Borrowed<'a> = &'a Self;
7727        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7728            value
7729        }
7730    }
7731
7732    unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
7733        type Owned = Self;
7734
7735        #[inline(always)]
7736        fn inline_align(_context: fidl::encoding::Context) -> usize {
7737            8
7738        }
7739
7740        #[inline(always)]
7741        fn inline_size(_context: fidl::encoding::Context) -> usize {
7742            16
7743        }
7744    }
7745
7746    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
7747        for &CompositeInfo
7748    {
7749        #[inline]
7750        unsafe fn encode(
7751            self,
7752            encoder: &mut fidl::encoding::Encoder<'_, D>,
7753            offset: usize,
7754            _depth: fidl::encoding::Depth,
7755        ) -> fidl::Result<()> {
7756            encoder.debug_check_bounds::<CompositeInfo>(offset);
7757            encoder.write_num::<u64>(self.ordinal(), offset);
7758            match self {
7759            CompositeInfo::Composite(ref val) => {
7760                fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework_common::CompositeInfo, D>(
7761                    <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
7762                    encoder, offset + 8, _depth
7763                )
7764            }
7765        }
7766        }
7767    }
7768
7769    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
7770        #[inline(always)]
7771        fn new_empty() -> Self {
7772            Self::Composite(fidl::new_empty!(
7773                fidl_fuchsia_driver_framework_common::CompositeInfo,
7774                D
7775            ))
7776        }
7777
7778        #[inline]
7779        unsafe fn decode(
7780            &mut self,
7781            decoder: &mut fidl::encoding::Decoder<'_, D>,
7782            offset: usize,
7783            mut depth: fidl::encoding::Depth,
7784        ) -> fidl::Result<()> {
7785            decoder.debug_check_bounds::<Self>(offset);
7786            #[allow(unused_variables)]
7787            let next_out_of_line = decoder.next_out_of_line();
7788            let handles_before = decoder.remaining_handles();
7789            let (ordinal, inlined, num_bytes, num_handles) =
7790                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7791
7792            let member_inline_size = match ordinal {
7793            2 => <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7794            _ => return Err(fidl::Error::UnknownUnionTag),
7795        };
7796
7797            if inlined != (member_inline_size <= 4) {
7798                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7799            }
7800            let _inner_offset;
7801            if inlined {
7802                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7803                _inner_offset = offset + 8;
7804            } else {
7805                depth.increment()?;
7806                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7807            }
7808            match ordinal {
7809                2 => {
7810                    #[allow(irrefutable_let_patterns)]
7811                    if let CompositeInfo::Composite(_) = self {
7812                        // Do nothing, read the value into the object
7813                    } else {
7814                        // Initialize `self` to the right variant
7815                        *self = CompositeInfo::Composite(fidl::new_empty!(
7816                            fidl_fuchsia_driver_framework_common::CompositeInfo,
7817                            D
7818                        ));
7819                    }
7820                    #[allow(irrefutable_let_patterns)]
7821                    if let CompositeInfo::Composite(ref mut val) = self {
7822                        fidl::decode!(
7823                            fidl_fuchsia_driver_framework_common::CompositeInfo,
7824                            D,
7825                            val,
7826                            decoder,
7827                            _inner_offset,
7828                            depth
7829                        )?;
7830                    } else {
7831                        unreachable!()
7832                    }
7833                }
7834                ordinal => panic!("unexpected ordinal {:?}", ordinal),
7835            }
7836            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7837                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7838            }
7839            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7840                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7841            }
7842            Ok(())
7843        }
7844    }
7845}