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
21bitflags! {
22    /// These flags indicate when a |fuchsia.driver.index.DriverIndex::MatchDriver| call should be
23    /// made for a node that is restarting in order to find a new driver, instead of reusing the driver
24    /// that was previously bound to the node.
25    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
26    pub struct RestartRematchFlags: u32 {
27        /// Rematch nodes that are currently bound to the requested driver. The requested driver is
28        /// the driver url that the restart operation was initiated for.
29        const REQUESTED = 1;
30        /// Rematch nodes that are currently bound to a driver other than the requested driver. These
31        /// are nodes that are affected by the restart of the requested driver, for example when
32        /// it is a colocated parent.
33        const NON_REQUESTED = 2;
34        /// Rematch nodes that are created as part of a completed composite spec.
35        const COMPOSITE_SPEC = 8;
36    }
37}
38
39impl RestartRematchFlags {
40    #[inline(always)]
41    pub fn from_bits_allow_unknown(bits: u32) -> Self {
42        Self::from_bits_retain(bits)
43    }
44
45    #[inline(always)]
46    pub fn has_unknown_bits(&self) -> bool {
47        self.get_unknown_bits() != 0
48    }
49
50    #[inline(always)]
51    pub fn get_unknown_bits(&self) -> u32 {
52        self.bits() & !Self::all().bits()
53    }
54}
55
56#[derive(Clone, Debug, PartialEq)]
57pub struct CompositeInfoIteratorGetNextResponse {
58    pub composites: Vec<CompositeNodeInfo>,
59}
60
61impl fidl::Persistable for CompositeInfoIteratorGetNextResponse {}
62
63#[derive(Clone, Debug, PartialEq)]
64pub struct CompositeNodeSpecIteratorGetNextResponse {
65    pub specs: Vec<fidl_fuchsia_driver_framework__common::CompositeInfo>,
66}
67
68impl fidl::Persistable for CompositeNodeSpecIteratorGetNextResponse {}
69
70#[derive(Clone, Debug, PartialEq)]
71pub struct DriverHostInfoIteratorGetNextResponse {
72    pub driver_hosts: Vec<DriverHostInfo>,
73}
74
75impl fidl::Persistable for DriverHostInfoIteratorGetNextResponse {}
76
77#[derive(Clone, Debug, PartialEq)]
78pub struct DriverInfoIteratorGetNextResponse {
79    pub drivers: Vec<fidl_fuchsia_driver_framework__common::DriverInfo>,
80}
81
82impl fidl::Persistable for DriverInfoIteratorGetNextResponse {}
83
84#[derive(Clone, Debug, PartialEq)]
85pub struct ManagerAddTestNodeRequest {
86    pub args: TestNodeAddArgs,
87}
88
89impl fidl::Persistable for ManagerAddTestNodeRequest {}
90
91#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
92pub struct ManagerDisableDriverRequest {
93    pub driver_url: String,
94    pub package_hash: Option<String>,
95}
96
97impl fidl::Persistable for ManagerDisableDriverRequest {}
98
99#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
100pub struct ManagerEnableDriverRequest {
101    pub driver_url: String,
102    pub package_hash: Option<String>,
103}
104
105impl fidl::Persistable for ManagerEnableDriverRequest {}
106
107#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
108pub struct ManagerRebindCompositesWithDriverRequest {
109    pub driver_url: String,
110}
111
112impl fidl::Persistable for ManagerRebindCompositesWithDriverRequest {}
113
114#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
115pub struct ManagerRemoveTestNodeRequest {
116    pub name: String,
117}
118
119impl fidl::Persistable for ManagerRemoveTestNodeRequest {}
120
121#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
122pub struct ManagerRestartDriverHostsRequest {
123    pub driver_url: String,
124    pub rematch_flags: RestartRematchFlags,
125}
126
127impl fidl::Persistable for ManagerRestartDriverHostsRequest {}
128
129#[derive(Clone, Debug, PartialEq)]
130pub struct ManagerBindAllUnboundNodes2Response {
131    /// List of new bindings that happened as a result of this.
132    pub binding_result: Vec<NodeBindingInfo>,
133}
134
135impl fidl::Persistable for ManagerBindAllUnboundNodes2Response {}
136
137#[derive(Clone, Debug, PartialEq)]
138pub struct ManagerBindAllUnboundNodesResponse {
139    /// List of new bindings that happened as a result of this.
140    pub binding_result: Vec<NodeBindingInfo>,
141}
142
143impl fidl::Persistable for ManagerBindAllUnboundNodesResponse {}
144
145#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
146#[repr(C)]
147pub struct ManagerRebindCompositesWithDriverResponse {
148    pub count: u32,
149}
150
151impl fidl::Persistable for ManagerRebindCompositesWithDriverResponse {}
152
153#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
154#[repr(C)]
155pub struct ManagerRestartDriverHostsResponse {
156    pub count: u32,
157}
158
159impl fidl::Persistable for ManagerRestartDriverHostsResponse {}
160
161#[derive(Clone, Debug, PartialEq)]
162pub struct NodeInfoIteratorGetNextResponse {
163    pub nodes: Vec<NodeInfo>,
164}
165
166impl fidl::Persistable for NodeInfoIteratorGetNextResponse {}
167
168/// Contains information for a composite node.
169#[derive(Clone, Debug, Default, PartialEq)]
170pub struct CompositeNodeInfo {
171    /// The topological paths of the parent nodes of this composite, ordered by index.
172    pub parent_topological_paths: Option<Vec<Option<String>>>,
173    /// The topological path of the created composite node. Empty if not created.
174    pub topological_path: Option<String>,
175    pub composite: Option<CompositeInfo>,
176    #[doc(hidden)]
177    pub __source_breaking: fidl::marker::SourceBreaking,
178}
179
180impl fidl::Persistable for CompositeNodeInfo {}
181
182/// Contains information for a dispatcher.
183#[derive(Clone, Debug, Default, PartialEq)]
184pub struct DispatcherInfo {
185    /// The driver which created this dispatcher.
186    pub driver: Option<String>,
187    /// The name of the dispatcher.
188    pub name: Option<String>,
189    /// The options the dispatcher was created with.
190    pub options: Option<u32>,
191    /// The scheduler role of the dispatcher.
192    pub scheduler_role: Option<String>,
193    #[doc(hidden)]
194    pub __source_breaking: fidl::marker::SourceBreaking,
195}
196
197impl fidl::Persistable for DispatcherInfo {}
198
199/// Contains information for a driver host.
200#[derive(Clone, Debug, Default, PartialEq)]
201pub struct DriverHostInfo {
202    /// The process KOID of the driver host.
203    pub process_koid: Option<u64>,
204    /// The list of threads of the driver host.
205    pub threads: Option<Vec<ThreadInfo>>,
206    /// List of drivers loaded into this driver host.
207    pub drivers: Option<Vec<String>>,
208    /// List of dispatchers .
209    pub dispatchers: Option<Vec<DispatcherInfo>>,
210    /// Optional name of the driver host.
211    pub name: Option<String>,
212    #[doc(hidden)]
213    pub __source_breaking: fidl::marker::SourceBreaking,
214}
215
216impl fidl::Persistable for DriverHostInfo {}
217
218/// Information about a node binding to either a driver or a composite.
219#[derive(Clone, Debug, Default, PartialEq)]
220pub struct NodeBindingInfo {
221    /// Full topological name of the node.
222    pub node_name: Option<String>,
223    /// This is the component url for the driver that bound to the node.
224    /// If this is present, then |composite_parents| must not be.
225    pub driver_url: Option<String>,
226    /// The composite parents that this node binded to.
227    /// If this is present, then |driver_url| must not be.
228    pub composite_parents: Option<Vec<fidl_fuchsia_driver_framework__common::CompositeParent>>,
229    #[doc(hidden)]
230    pub __source_breaking: fidl::marker::SourceBreaking,
231}
232
233impl fidl::Persistable for NodeBindingInfo {}
234
235#[derive(Clone, Debug, Default, PartialEq)]
236pub struct NodeInfo {
237    /// Unique ID identifying the node.
238    pub id: Option<u64>,
239    /// List of ids representing parents. If more than one, this is a composite node.
240    pub parent_ids: Option<Vec<u64>>,
241    /// List of ids representing children.
242    pub child_ids: Option<Vec<u64>>,
243    /// The process KOID of the driver host the driver resides within.
244    pub driver_host_koid: Option<u64>,
245    /// URL to the driver component manifest
246    pub bound_driver_url: Option<String>,
247    /// The collection-relative moniker of the node.
248    pub moniker: Option<String>,
249    /// Properties of the node.
250    pub node_property_list: Option<Vec<fidl_fuchsia_driver_framework__common::NodeProperty>>,
251    /// Component offers to the node.
252    pub offer_list: Option<Vec<fidl_fuchsia_component_decl__common::Offer>>,
253    /// Whether the node is in a quarantined state. That is, the |bound_driver_url| has failed to
254    /// start, and the node is no longer running its driver instance.
255    pub quarantined: Option<bool>,
256    /// Information about the node's bus topology.
257    pub bus_topology: Option<Vec<fidl_fuchsia_driver_framework__common::BusInfo>>,
258    #[doc(hidden)]
259    pub __source_breaking: fidl::marker::SourceBreaking,
260}
261
262impl fidl::Persistable for NodeInfo {}
263
264#[derive(Clone, Debug, Default, PartialEq)]
265pub struct TestNodeAddArgs {
266    /// Name of the node.
267    pub name: Option<String>,
268    /// Properties of the node.
269    pub properties: Option<Vec<fidl_fuchsia_driver_framework__common::NodeProperty>>,
270    #[doc(hidden)]
271    pub __source_breaking: fidl::marker::SourceBreaking,
272}
273
274impl fidl::Persistable for TestNodeAddArgs {}
275
276/// Contains information for a thread.
277#[derive(Clone, Debug, Default, PartialEq)]
278pub struct ThreadInfo {
279    /// The koid for the thread.
280    pub koid: Option<u64>,
281    /// The name of the thread.
282    pub name: Option<String>,
283    /// The scheduler role of the thread.
284    pub scheduler_role: Option<String>,
285    #[doc(hidden)]
286    pub __source_breaking: fidl::marker::SourceBreaking,
287}
288
289impl fidl::Persistable for ThreadInfo {}
290
291/// Contains information for a composite.
292#[derive(Clone, Debug, PartialEq)]
293pub enum CompositeInfo {
294    Composite(fidl_fuchsia_driver_framework__common::CompositeInfo),
295}
296
297impl CompositeInfo {
298    #[inline]
299    pub fn ordinal(&self) -> u64 {
300        match *self {
301            Self::Composite(_) => 2,
302        }
303    }
304}
305
306impl fidl::Persistable for CompositeInfo {}
307
308pub mod composite_info_iterator_ordinals {
309    pub const GET_NEXT: u64 = 0x50af808a6e34bb96;
310}
311
312pub mod composite_node_spec_iterator_ordinals {
313    pub const GET_NEXT: u64 = 0x32fd110355479f71;
314}
315
316pub mod driver_host_info_iterator_ordinals {
317    pub const GET_NEXT: u64 = 0xbf58e5cd863a86;
318}
319
320pub mod driver_info_iterator_ordinals {
321    pub const GET_NEXT: u64 = 0x2c394711c6784952;
322}
323
324pub mod manager_ordinals {
325    pub const GET_DRIVER_INFO: u64 = 0x34b1541e24e5d587;
326    pub const GET_COMPOSITE_NODE_SPECS: u64 = 0x258540c7ff37328f;
327    pub const GET_NODE_INFO: u64 = 0x7c272c6b7bcb4f9e;
328    pub const GET_COMPOSITE_INFO: u64 = 0x4456da4372a49a36;
329    pub const GET_DRIVER_HOST_INFO: u64 = 0x366b2c4429d44155;
330    pub const RESTART_DRIVER_HOSTS: u64 = 0x64fb09a17a4dd8c7;
331    pub const DISABLE_DRIVER: u64 = 0x3cabde92ba1ac967;
332    pub const ENABLE_DRIVER: u64 = 0x76a7518712965faf;
333    pub const BIND_ALL_UNBOUND_NODES: u64 = 0x2b4343fe1cfb9f21;
334    pub const BIND_ALL_UNBOUND_NODES2: u64 = 0x3e82ce2d6fc998d7;
335    pub const ADD_TEST_NODE: u64 = 0x774836bbb7fbc5b9;
336    pub const REMOVE_TEST_NODE: u64 = 0x1618ec4e5fc4010e;
337    pub const WAIT_FOR_BOOTUP: u64 = 0x52077de068225cdc;
338    pub const RESTART_WITH_DICTIONARY: u64 = 0x5eb620a85359a10e;
339    pub const REBIND_COMPOSITES_WITH_DRIVER: u64 = 0x175d492045f61f28;
340}
341
342pub mod node_info_iterator_ordinals {
343    pub const GET_NEXT: u64 = 0x33c7c070412f889f;
344}
345
346mod internal {
347    use super::*;
348    unsafe impl fidl::encoding::TypeMarker for RestartRematchFlags {
349        type Owned = Self;
350
351        #[inline(always)]
352        fn inline_align(_context: fidl::encoding::Context) -> usize {
353            4
354        }
355
356        #[inline(always)]
357        fn inline_size(_context: fidl::encoding::Context) -> usize {
358            4
359        }
360    }
361
362    impl fidl::encoding::ValueTypeMarker for RestartRematchFlags {
363        type Borrowed<'a> = Self;
364        #[inline(always)]
365        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
366            *value
367        }
368    }
369
370    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
371        for RestartRematchFlags
372    {
373        #[inline]
374        unsafe fn encode(
375            self,
376            encoder: &mut fidl::encoding::Encoder<'_, D>,
377            offset: usize,
378            _depth: fidl::encoding::Depth,
379        ) -> fidl::Result<()> {
380            encoder.debug_check_bounds::<Self>(offset);
381            encoder.write_num(self.bits(), offset);
382            Ok(())
383        }
384    }
385
386    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RestartRematchFlags {
387        #[inline(always)]
388        fn new_empty() -> Self {
389            Self::empty()
390        }
391
392        #[inline]
393        unsafe fn decode(
394            &mut self,
395            decoder: &mut fidl::encoding::Decoder<'_, D>,
396            offset: usize,
397            _depth: fidl::encoding::Depth,
398        ) -> fidl::Result<()> {
399            decoder.debug_check_bounds::<Self>(offset);
400            let prim = decoder.read_num::<u32>(offset);
401            *self = Self::from_bits_allow_unknown(prim);
402            Ok(())
403        }
404    }
405
406    impl fidl::encoding::ValueTypeMarker for CompositeInfoIteratorGetNextResponse {
407        type Borrowed<'a> = &'a Self;
408        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
409            value
410        }
411    }
412
413    unsafe impl fidl::encoding::TypeMarker for CompositeInfoIteratorGetNextResponse {
414        type Owned = Self;
415
416        #[inline(always)]
417        fn inline_align(_context: fidl::encoding::Context) -> usize {
418            8
419        }
420
421        #[inline(always)]
422        fn inline_size(_context: fidl::encoding::Context) -> usize {
423            16
424        }
425    }
426
427    unsafe impl<D: fidl::encoding::ResourceDialect>
428        fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D>
429        for &CompositeInfoIteratorGetNextResponse
430    {
431        #[inline]
432        unsafe fn encode(
433            self,
434            encoder: &mut fidl::encoding::Encoder<'_, D>,
435            offset: usize,
436            _depth: fidl::encoding::Depth,
437        ) -> fidl::Result<()> {
438            encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
439            // Delegate to tuple encoding.
440            fidl::encoding::Encode::<CompositeInfoIteratorGetNextResponse, D>::encode(
441                (
442                    <fidl::encoding::UnboundedVector<CompositeNodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.composites),
443                ),
444                encoder, offset, _depth
445            )
446        }
447    }
448    unsafe impl<
449        D: fidl::encoding::ResourceDialect,
450        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CompositeNodeInfo>, D>,
451    > fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D> for (T0,)
452    {
453        #[inline]
454        unsafe fn encode(
455            self,
456            encoder: &mut fidl::encoding::Encoder<'_, D>,
457            offset: usize,
458            depth: fidl::encoding::Depth,
459        ) -> fidl::Result<()> {
460            encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
461            // Zero out padding regions. There's no need to apply masks
462            // because the unmasked parts will be overwritten by fields.
463            // Write the fields.
464            self.0.encode(encoder, offset + 0, depth)?;
465            Ok(())
466        }
467    }
468
469    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
470        for CompositeInfoIteratorGetNextResponse
471    {
472        #[inline(always)]
473        fn new_empty() -> Self {
474            Self {
475                composites: fidl::new_empty!(fidl::encoding::UnboundedVector<CompositeNodeInfo>, D),
476            }
477        }
478
479        #[inline]
480        unsafe fn decode(
481            &mut self,
482            decoder: &mut fidl::encoding::Decoder<'_, D>,
483            offset: usize,
484            _depth: fidl::encoding::Depth,
485        ) -> fidl::Result<()> {
486            decoder.debug_check_bounds::<Self>(offset);
487            // Verify that padding bytes are zero.
488            fidl::decode!(
489                fidl::encoding::UnboundedVector<CompositeNodeInfo>,
490                D,
491                &mut self.composites,
492                decoder,
493                offset + 0,
494                _depth
495            )?;
496            Ok(())
497        }
498    }
499
500    impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecIteratorGetNextResponse {
501        type Borrowed<'a> = &'a Self;
502        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
503            value
504        }
505    }
506
507    unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecIteratorGetNextResponse {
508        type Owned = Self;
509
510        #[inline(always)]
511        fn inline_align(_context: fidl::encoding::Context) -> usize {
512            8
513        }
514
515        #[inline(always)]
516        fn inline_size(_context: fidl::encoding::Context) -> usize {
517            16
518        }
519    }
520
521    unsafe impl<D: fidl::encoding::ResourceDialect>
522        fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D>
523        for &CompositeNodeSpecIteratorGetNextResponse
524    {
525        #[inline]
526        unsafe fn encode(
527            self,
528            encoder: &mut fidl::encoding::Encoder<'_, D>,
529            offset: usize,
530            _depth: fidl::encoding::Depth,
531        ) -> fidl::Result<()> {
532            encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
533            // Delegate to tuple encoding.
534            fidl::encoding::Encode::<CompositeNodeSpecIteratorGetNextResponse, D>::encode(
535                (<fidl::encoding::UnboundedVector<
536                    fidl_fuchsia_driver_framework__common::CompositeInfo,
537                > as fidl::encoding::ValueTypeMarker>::borrow(&self.specs),),
538                encoder,
539                offset,
540                _depth,
541            )
542        }
543    }
544    unsafe impl<
545        D: fidl::encoding::ResourceDialect,
546        T0: fidl::encoding::Encode<
547                fidl::encoding::UnboundedVector<
548                    fidl_fuchsia_driver_framework__common::CompositeInfo,
549                >,
550                D,
551            >,
552    > fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D> for (T0,)
553    {
554        #[inline]
555        unsafe fn encode(
556            self,
557            encoder: &mut fidl::encoding::Encoder<'_, D>,
558            offset: usize,
559            depth: fidl::encoding::Depth,
560        ) -> fidl::Result<()> {
561            encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
562            // Zero out padding regions. There's no need to apply masks
563            // because the unmasked parts will be overwritten by fields.
564            // Write the fields.
565            self.0.encode(encoder, offset + 0, depth)?;
566            Ok(())
567        }
568    }
569
570    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
571        for CompositeNodeSpecIteratorGetNextResponse
572    {
573        #[inline(always)]
574        fn new_empty() -> Self {
575            Self {
576                specs: fidl::new_empty!(
577                    fidl::encoding::UnboundedVector<
578                        fidl_fuchsia_driver_framework__common::CompositeInfo,
579                    >,
580                    D
581                ),
582            }
583        }
584
585        #[inline]
586        unsafe fn decode(
587            &mut self,
588            decoder: &mut fidl::encoding::Decoder<'_, D>,
589            offset: usize,
590            _depth: fidl::encoding::Depth,
591        ) -> fidl::Result<()> {
592            decoder.debug_check_bounds::<Self>(offset);
593            // Verify that padding bytes are zero.
594            fidl::decode!(
595                fidl::encoding::UnboundedVector<
596                    fidl_fuchsia_driver_framework__common::CompositeInfo,
597                >,
598                D,
599                &mut self.specs,
600                decoder,
601                offset + 0,
602                _depth
603            )?;
604            Ok(())
605        }
606    }
607
608    impl fidl::encoding::ValueTypeMarker for DriverHostInfoIteratorGetNextResponse {
609        type Borrowed<'a> = &'a Self;
610        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
611            value
612        }
613    }
614
615    unsafe impl fidl::encoding::TypeMarker for DriverHostInfoIteratorGetNextResponse {
616        type Owned = Self;
617
618        #[inline(always)]
619        fn inline_align(_context: fidl::encoding::Context) -> usize {
620            8
621        }
622
623        #[inline(always)]
624        fn inline_size(_context: fidl::encoding::Context) -> usize {
625            16
626        }
627    }
628
629    unsafe impl<D: fidl::encoding::ResourceDialect>
630        fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D>
631        for &DriverHostInfoIteratorGetNextResponse
632    {
633        #[inline]
634        unsafe fn encode(
635            self,
636            encoder: &mut fidl::encoding::Encoder<'_, D>,
637            offset: usize,
638            _depth: fidl::encoding::Depth,
639        ) -> fidl::Result<()> {
640            encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
641            // Delegate to tuple encoding.
642            fidl::encoding::Encode::<DriverHostInfoIteratorGetNextResponse, D>::encode(
643                (
644                    <fidl::encoding::UnboundedVector<DriverHostInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_hosts),
645                ),
646                encoder, offset, _depth
647            )
648        }
649    }
650    unsafe impl<
651        D: fidl::encoding::ResourceDialect,
652        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DriverHostInfo>, D>,
653    > fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D> for (T0,)
654    {
655        #[inline]
656        unsafe fn encode(
657            self,
658            encoder: &mut fidl::encoding::Encoder<'_, D>,
659            offset: usize,
660            depth: fidl::encoding::Depth,
661        ) -> fidl::Result<()> {
662            encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
663            // Zero out padding regions. There's no need to apply masks
664            // because the unmasked parts will be overwritten by fields.
665            // Write the fields.
666            self.0.encode(encoder, offset + 0, depth)?;
667            Ok(())
668        }
669    }
670
671    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
672        for DriverHostInfoIteratorGetNextResponse
673    {
674        #[inline(always)]
675        fn new_empty() -> Self {
676            Self {
677                driver_hosts: fidl::new_empty!(fidl::encoding::UnboundedVector<DriverHostInfo>, D),
678            }
679        }
680
681        #[inline]
682        unsafe fn decode(
683            &mut self,
684            decoder: &mut fidl::encoding::Decoder<'_, D>,
685            offset: usize,
686            _depth: fidl::encoding::Depth,
687        ) -> fidl::Result<()> {
688            decoder.debug_check_bounds::<Self>(offset);
689            // Verify that padding bytes are zero.
690            fidl::decode!(
691                fidl::encoding::UnboundedVector<DriverHostInfo>,
692                D,
693                &mut self.driver_hosts,
694                decoder,
695                offset + 0,
696                _depth
697            )?;
698            Ok(())
699        }
700    }
701
702    impl fidl::encoding::ValueTypeMarker for DriverInfoIteratorGetNextResponse {
703        type Borrowed<'a> = &'a Self;
704        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
705            value
706        }
707    }
708
709    unsafe impl fidl::encoding::TypeMarker for DriverInfoIteratorGetNextResponse {
710        type Owned = Self;
711
712        #[inline(always)]
713        fn inline_align(_context: fidl::encoding::Context) -> usize {
714            8
715        }
716
717        #[inline(always)]
718        fn inline_size(_context: fidl::encoding::Context) -> usize {
719            16
720        }
721    }
722
723    unsafe impl<D: fidl::encoding::ResourceDialect>
724        fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D>
725        for &DriverInfoIteratorGetNextResponse
726    {
727        #[inline]
728        unsafe fn encode(
729            self,
730            encoder: &mut fidl::encoding::Encoder<'_, D>,
731            offset: usize,
732            _depth: fidl::encoding::Depth,
733        ) -> fidl::Result<()> {
734            encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
735            // Delegate to tuple encoding.
736            fidl::encoding::Encode::<DriverInfoIteratorGetNextResponse, D>::encode(
737                (<fidl::encoding::UnboundedVector<
738                    fidl_fuchsia_driver_framework__common::DriverInfo,
739                > as fidl::encoding::ValueTypeMarker>::borrow(&self.drivers),),
740                encoder,
741                offset,
742                _depth,
743            )
744        }
745    }
746    unsafe impl<
747        D: fidl::encoding::ResourceDialect,
748        T0: fidl::encoding::Encode<
749                fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::DriverInfo>,
750                D,
751            >,
752    > fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D> for (T0,)
753    {
754        #[inline]
755        unsafe fn encode(
756            self,
757            encoder: &mut fidl::encoding::Encoder<'_, D>,
758            offset: usize,
759            depth: fidl::encoding::Depth,
760        ) -> fidl::Result<()> {
761            encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
762            // Zero out padding regions. There's no need to apply masks
763            // because the unmasked parts will be overwritten by fields.
764            // Write the fields.
765            self.0.encode(encoder, offset + 0, depth)?;
766            Ok(())
767        }
768    }
769
770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
771        for DriverInfoIteratorGetNextResponse
772    {
773        #[inline(always)]
774        fn new_empty() -> Self {
775            Self {
776                drivers: fidl::new_empty!(
777                    fidl::encoding::UnboundedVector<
778                        fidl_fuchsia_driver_framework__common::DriverInfo,
779                    >,
780                    D
781                ),
782            }
783        }
784
785        #[inline]
786        unsafe fn decode(
787            &mut self,
788            decoder: &mut fidl::encoding::Decoder<'_, D>,
789            offset: usize,
790            _depth: fidl::encoding::Depth,
791        ) -> fidl::Result<()> {
792            decoder.debug_check_bounds::<Self>(offset);
793            // Verify that padding bytes are zero.
794            fidl::decode!(
795                fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::DriverInfo>,
796                D,
797                &mut self.drivers,
798                decoder,
799                offset + 0,
800                _depth
801            )?;
802            Ok(())
803        }
804    }
805
806    impl fidl::encoding::ValueTypeMarker for ManagerAddTestNodeRequest {
807        type Borrowed<'a> = &'a Self;
808        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809            value
810        }
811    }
812
813    unsafe impl fidl::encoding::TypeMarker for ManagerAddTestNodeRequest {
814        type Owned = Self;
815
816        #[inline(always)]
817        fn inline_align(_context: fidl::encoding::Context) -> usize {
818            8
819        }
820
821        #[inline(always)]
822        fn inline_size(_context: fidl::encoding::Context) -> usize {
823            16
824        }
825    }
826
827    unsafe impl<D: fidl::encoding::ResourceDialect>
828        fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for &ManagerAddTestNodeRequest
829    {
830        #[inline]
831        unsafe fn encode(
832            self,
833            encoder: &mut fidl::encoding::Encoder<'_, D>,
834            offset: usize,
835            _depth: fidl::encoding::Depth,
836        ) -> fidl::Result<()> {
837            encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
838            // Delegate to tuple encoding.
839            fidl::encoding::Encode::<ManagerAddTestNodeRequest, D>::encode(
840                (<TestNodeAddArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
841                encoder,
842                offset,
843                _depth,
844            )
845        }
846    }
847    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<TestNodeAddArgs, D>>
848        fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for (T0,)
849    {
850        #[inline]
851        unsafe fn encode(
852            self,
853            encoder: &mut fidl::encoding::Encoder<'_, D>,
854            offset: usize,
855            depth: fidl::encoding::Depth,
856        ) -> fidl::Result<()> {
857            encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
858            // Zero out padding regions. There's no need to apply masks
859            // because the unmasked parts will be overwritten by fields.
860            // Write the fields.
861            self.0.encode(encoder, offset + 0, depth)?;
862            Ok(())
863        }
864    }
865
866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
867        for ManagerAddTestNodeRequest
868    {
869        #[inline(always)]
870        fn new_empty() -> Self {
871            Self { args: fidl::new_empty!(TestNodeAddArgs, D) }
872        }
873
874        #[inline]
875        unsafe fn decode(
876            &mut self,
877            decoder: &mut fidl::encoding::Decoder<'_, D>,
878            offset: usize,
879            _depth: fidl::encoding::Depth,
880        ) -> fidl::Result<()> {
881            decoder.debug_check_bounds::<Self>(offset);
882            // Verify that padding bytes are zero.
883            fidl::decode!(TestNodeAddArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
884            Ok(())
885        }
886    }
887
888    impl fidl::encoding::ValueTypeMarker for ManagerDisableDriverRequest {
889        type Borrowed<'a> = &'a Self;
890        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
891            value
892        }
893    }
894
895    unsafe impl fidl::encoding::TypeMarker for ManagerDisableDriverRequest {
896        type Owned = Self;
897
898        #[inline(always)]
899        fn inline_align(_context: fidl::encoding::Context) -> usize {
900            8
901        }
902
903        #[inline(always)]
904        fn inline_size(_context: fidl::encoding::Context) -> usize {
905            32
906        }
907    }
908
909    unsafe impl<D: fidl::encoding::ResourceDialect>
910        fidl::encoding::Encode<ManagerDisableDriverRequest, D> for &ManagerDisableDriverRequest
911    {
912        #[inline]
913        unsafe fn encode(
914            self,
915            encoder: &mut fidl::encoding::Encoder<'_, D>,
916            offset: usize,
917            _depth: fidl::encoding::Depth,
918        ) -> fidl::Result<()> {
919            encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
920            // Delegate to tuple encoding.
921            fidl::encoding::Encode::<ManagerDisableDriverRequest, D>::encode(
922                (
923                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
924                    <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
925                ),
926                encoder, offset, _depth
927            )
928        }
929    }
930    unsafe impl<
931        D: fidl::encoding::ResourceDialect,
932        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
933        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
934    > fidl::encoding::Encode<ManagerDisableDriverRequest, D> for (T0, T1)
935    {
936        #[inline]
937        unsafe fn encode(
938            self,
939            encoder: &mut fidl::encoding::Encoder<'_, D>,
940            offset: usize,
941            depth: fidl::encoding::Depth,
942        ) -> fidl::Result<()> {
943            encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
944            // Zero out padding regions. There's no need to apply masks
945            // because the unmasked parts will be overwritten by fields.
946            // Write the fields.
947            self.0.encode(encoder, offset + 0, depth)?;
948            self.1.encode(encoder, offset + 16, depth)?;
949            Ok(())
950        }
951    }
952
953    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
954        for ManagerDisableDriverRequest
955    {
956        #[inline(always)]
957        fn new_empty() -> Self {
958            Self {
959                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
960                package_hash: fidl::new_empty!(
961                    fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
962                    D
963                ),
964            }
965        }
966
967        #[inline]
968        unsafe fn decode(
969            &mut self,
970            decoder: &mut fidl::encoding::Decoder<'_, D>,
971            offset: usize,
972            _depth: fidl::encoding::Depth,
973        ) -> fidl::Result<()> {
974            decoder.debug_check_bounds::<Self>(offset);
975            // Verify that padding bytes are zero.
976            fidl::decode!(
977                fidl::encoding::BoundedString<4096>,
978                D,
979                &mut self.driver_url,
980                decoder,
981                offset + 0,
982                _depth
983            )?;
984            fidl::decode!(
985                fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
986                D,
987                &mut self.package_hash,
988                decoder,
989                offset + 16,
990                _depth
991            )?;
992            Ok(())
993        }
994    }
995
996    impl fidl::encoding::ValueTypeMarker for ManagerEnableDriverRequest {
997        type Borrowed<'a> = &'a Self;
998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
999            value
1000        }
1001    }
1002
1003    unsafe impl fidl::encoding::TypeMarker for ManagerEnableDriverRequest {
1004        type Owned = Self;
1005
1006        #[inline(always)]
1007        fn inline_align(_context: fidl::encoding::Context) -> usize {
1008            8
1009        }
1010
1011        #[inline(always)]
1012        fn inline_size(_context: fidl::encoding::Context) -> usize {
1013            32
1014        }
1015    }
1016
1017    unsafe impl<D: fidl::encoding::ResourceDialect>
1018        fidl::encoding::Encode<ManagerEnableDriverRequest, D> for &ManagerEnableDriverRequest
1019    {
1020        #[inline]
1021        unsafe fn encode(
1022            self,
1023            encoder: &mut fidl::encoding::Encoder<'_, D>,
1024            offset: usize,
1025            _depth: fidl::encoding::Depth,
1026        ) -> fidl::Result<()> {
1027            encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1028            // Delegate to tuple encoding.
1029            fidl::encoding::Encode::<ManagerEnableDriverRequest, D>::encode(
1030                (
1031                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1032                    <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1033                ),
1034                encoder, offset, _depth
1035            )
1036        }
1037    }
1038    unsafe impl<
1039        D: fidl::encoding::ResourceDialect,
1040        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1041        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1042    > fidl::encoding::Encode<ManagerEnableDriverRequest, D> for (T0, T1)
1043    {
1044        #[inline]
1045        unsafe fn encode(
1046            self,
1047            encoder: &mut fidl::encoding::Encoder<'_, D>,
1048            offset: usize,
1049            depth: fidl::encoding::Depth,
1050        ) -> fidl::Result<()> {
1051            encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1052            // Zero out padding regions. There's no need to apply masks
1053            // because the unmasked parts will be overwritten by fields.
1054            // Write the fields.
1055            self.0.encode(encoder, offset + 0, depth)?;
1056            self.1.encode(encoder, offset + 16, depth)?;
1057            Ok(())
1058        }
1059    }
1060
1061    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1062        for ManagerEnableDriverRequest
1063    {
1064        #[inline(always)]
1065        fn new_empty() -> Self {
1066            Self {
1067                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1068                package_hash: fidl::new_empty!(
1069                    fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1070                    D
1071                ),
1072            }
1073        }
1074
1075        #[inline]
1076        unsafe fn decode(
1077            &mut self,
1078            decoder: &mut fidl::encoding::Decoder<'_, D>,
1079            offset: usize,
1080            _depth: fidl::encoding::Depth,
1081        ) -> fidl::Result<()> {
1082            decoder.debug_check_bounds::<Self>(offset);
1083            // Verify that padding bytes are zero.
1084            fidl::decode!(
1085                fidl::encoding::BoundedString<4096>,
1086                D,
1087                &mut self.driver_url,
1088                decoder,
1089                offset + 0,
1090                _depth
1091            )?;
1092            fidl::decode!(
1093                fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1094                D,
1095                &mut self.package_hash,
1096                decoder,
1097                offset + 16,
1098                _depth
1099            )?;
1100            Ok(())
1101        }
1102    }
1103
1104    impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverRequest {
1105        type Borrowed<'a> = &'a Self;
1106        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1107            value
1108        }
1109    }
1110
1111    unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverRequest {
1112        type Owned = Self;
1113
1114        #[inline(always)]
1115        fn inline_align(_context: fidl::encoding::Context) -> usize {
1116            8
1117        }
1118
1119        #[inline(always)]
1120        fn inline_size(_context: fidl::encoding::Context) -> usize {
1121            16
1122        }
1123    }
1124
1125    unsafe impl<D: fidl::encoding::ResourceDialect>
1126        fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D>
1127        for &ManagerRebindCompositesWithDriverRequest
1128    {
1129        #[inline]
1130        unsafe fn encode(
1131            self,
1132            encoder: &mut fidl::encoding::Encoder<'_, D>,
1133            offset: usize,
1134            _depth: fidl::encoding::Depth,
1135        ) -> fidl::Result<()> {
1136            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1137            // Delegate to tuple encoding.
1138            fidl::encoding::Encode::<ManagerRebindCompositesWithDriverRequest, D>::encode(
1139                (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1140                    &self.driver_url,
1141                ),),
1142                encoder,
1143                offset,
1144                _depth,
1145            )
1146        }
1147    }
1148    unsafe impl<
1149        D: fidl::encoding::ResourceDialect,
1150        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1151    > fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D> for (T0,)
1152    {
1153        #[inline]
1154        unsafe fn encode(
1155            self,
1156            encoder: &mut fidl::encoding::Encoder<'_, D>,
1157            offset: usize,
1158            depth: fidl::encoding::Depth,
1159        ) -> fidl::Result<()> {
1160            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1161            // Zero out padding regions. There's no need to apply masks
1162            // because the unmasked parts will be overwritten by fields.
1163            // Write the fields.
1164            self.0.encode(encoder, offset + 0, depth)?;
1165            Ok(())
1166        }
1167    }
1168
1169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1170        for ManagerRebindCompositesWithDriverRequest
1171    {
1172        #[inline(always)]
1173        fn new_empty() -> Self {
1174            Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1175        }
1176
1177        #[inline]
1178        unsafe fn decode(
1179            &mut self,
1180            decoder: &mut fidl::encoding::Decoder<'_, D>,
1181            offset: usize,
1182            _depth: fidl::encoding::Depth,
1183        ) -> fidl::Result<()> {
1184            decoder.debug_check_bounds::<Self>(offset);
1185            // Verify that padding bytes are zero.
1186            fidl::decode!(
1187                fidl::encoding::BoundedString<4096>,
1188                D,
1189                &mut self.driver_url,
1190                decoder,
1191                offset + 0,
1192                _depth
1193            )?;
1194            Ok(())
1195        }
1196    }
1197
1198    impl fidl::encoding::ValueTypeMarker for ManagerRemoveTestNodeRequest {
1199        type Borrowed<'a> = &'a Self;
1200        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1201            value
1202        }
1203    }
1204
1205    unsafe impl fidl::encoding::TypeMarker for ManagerRemoveTestNodeRequest {
1206        type Owned = Self;
1207
1208        #[inline(always)]
1209        fn inline_align(_context: fidl::encoding::Context) -> usize {
1210            8
1211        }
1212
1213        #[inline(always)]
1214        fn inline_size(_context: fidl::encoding::Context) -> usize {
1215            16
1216        }
1217    }
1218
1219    unsafe impl<D: fidl::encoding::ResourceDialect>
1220        fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for &ManagerRemoveTestNodeRequest
1221    {
1222        #[inline]
1223        unsafe fn encode(
1224            self,
1225            encoder: &mut fidl::encoding::Encoder<'_, D>,
1226            offset: usize,
1227            _depth: fidl::encoding::Depth,
1228        ) -> fidl::Result<()> {
1229            encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1230            // Delegate to tuple encoding.
1231            fidl::encoding::Encode::<ManagerRemoveTestNodeRequest, D>::encode(
1232                (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1233                    &self.name,
1234                ),),
1235                encoder,
1236                offset,
1237                _depth,
1238            )
1239        }
1240    }
1241    unsafe impl<
1242        D: fidl::encoding::ResourceDialect,
1243        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1244    > fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for (T0,)
1245    {
1246        #[inline]
1247        unsafe fn encode(
1248            self,
1249            encoder: &mut fidl::encoding::Encoder<'_, D>,
1250            offset: usize,
1251            depth: fidl::encoding::Depth,
1252        ) -> fidl::Result<()> {
1253            encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1254            // Zero out padding regions. There's no need to apply masks
1255            // because the unmasked parts will be overwritten by fields.
1256            // Write the fields.
1257            self.0.encode(encoder, offset + 0, depth)?;
1258            Ok(())
1259        }
1260    }
1261
1262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1263        for ManagerRemoveTestNodeRequest
1264    {
1265        #[inline(always)]
1266        fn new_empty() -> Self {
1267            Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1268        }
1269
1270        #[inline]
1271        unsafe fn decode(
1272            &mut self,
1273            decoder: &mut fidl::encoding::Decoder<'_, D>,
1274            offset: usize,
1275            _depth: fidl::encoding::Depth,
1276        ) -> fidl::Result<()> {
1277            decoder.debug_check_bounds::<Self>(offset);
1278            // Verify that padding bytes are zero.
1279            fidl::decode!(
1280                fidl::encoding::BoundedString<1024>,
1281                D,
1282                &mut self.name,
1283                decoder,
1284                offset + 0,
1285                _depth
1286            )?;
1287            Ok(())
1288        }
1289    }
1290
1291    impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsRequest {
1292        type Borrowed<'a> = &'a Self;
1293        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1294            value
1295        }
1296    }
1297
1298    unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsRequest {
1299        type Owned = Self;
1300
1301        #[inline(always)]
1302        fn inline_align(_context: fidl::encoding::Context) -> usize {
1303            8
1304        }
1305
1306        #[inline(always)]
1307        fn inline_size(_context: fidl::encoding::Context) -> usize {
1308            24
1309        }
1310    }
1311
1312    unsafe impl<D: fidl::encoding::ResourceDialect>
1313        fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D>
1314        for &ManagerRestartDriverHostsRequest
1315    {
1316        #[inline]
1317        unsafe fn encode(
1318            self,
1319            encoder: &mut fidl::encoding::Encoder<'_, D>,
1320            offset: usize,
1321            _depth: fidl::encoding::Depth,
1322        ) -> fidl::Result<()> {
1323            encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1324            // Delegate to tuple encoding.
1325            fidl::encoding::Encode::<ManagerRestartDriverHostsRequest, D>::encode(
1326                (
1327                    <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1328                    <RestartRematchFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.rematch_flags),
1329                ),
1330                encoder, offset, _depth
1331            )
1332        }
1333    }
1334    unsafe impl<
1335        D: fidl::encoding::ResourceDialect,
1336        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1337        T1: fidl::encoding::Encode<RestartRematchFlags, D>,
1338    > fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D> for (T0, T1)
1339    {
1340        #[inline]
1341        unsafe fn encode(
1342            self,
1343            encoder: &mut fidl::encoding::Encoder<'_, D>,
1344            offset: usize,
1345            depth: fidl::encoding::Depth,
1346        ) -> fidl::Result<()> {
1347            encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1348            // Zero out padding regions. There's no need to apply masks
1349            // because the unmasked parts will be overwritten by fields.
1350            unsafe {
1351                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1352                (ptr as *mut u64).write_unaligned(0);
1353            }
1354            // Write the fields.
1355            self.0.encode(encoder, offset + 0, depth)?;
1356            self.1.encode(encoder, offset + 16, depth)?;
1357            Ok(())
1358        }
1359    }
1360
1361    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1362        for ManagerRestartDriverHostsRequest
1363    {
1364        #[inline(always)]
1365        fn new_empty() -> Self {
1366            Self {
1367                driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1368                rematch_flags: fidl::new_empty!(RestartRematchFlags, D),
1369            }
1370        }
1371
1372        #[inline]
1373        unsafe fn decode(
1374            &mut self,
1375            decoder: &mut fidl::encoding::Decoder<'_, D>,
1376            offset: usize,
1377            _depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            decoder.debug_check_bounds::<Self>(offset);
1380            // Verify that padding bytes are zero.
1381            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1382            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1383            let mask = 0xffffffff00000000u64;
1384            let maskedval = padval & mask;
1385            if maskedval != 0 {
1386                return Err(fidl::Error::NonZeroPadding {
1387                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1388                });
1389            }
1390            fidl::decode!(
1391                fidl::encoding::BoundedString<4096>,
1392                D,
1393                &mut self.driver_url,
1394                decoder,
1395                offset + 0,
1396                _depth
1397            )?;
1398            fidl::decode!(
1399                RestartRematchFlags,
1400                D,
1401                &mut self.rematch_flags,
1402                decoder,
1403                offset + 16,
1404                _depth
1405            )?;
1406            Ok(())
1407        }
1408    }
1409
1410    impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodes2Response {
1411        type Borrowed<'a> = &'a Self;
1412        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1413            value
1414        }
1415    }
1416
1417    unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodes2Response {
1418        type Owned = Self;
1419
1420        #[inline(always)]
1421        fn inline_align(_context: fidl::encoding::Context) -> usize {
1422            8
1423        }
1424
1425        #[inline(always)]
1426        fn inline_size(_context: fidl::encoding::Context) -> usize {
1427            16
1428        }
1429    }
1430
1431    unsafe impl<D: fidl::encoding::ResourceDialect>
1432        fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D>
1433        for &ManagerBindAllUnboundNodes2Response
1434    {
1435        #[inline]
1436        unsafe fn encode(
1437            self,
1438            encoder: &mut fidl::encoding::Encoder<'_, D>,
1439            offset: usize,
1440            _depth: fidl::encoding::Depth,
1441        ) -> fidl::Result<()> {
1442            encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1443            // Delegate to tuple encoding.
1444            fidl::encoding::Encode::<ManagerBindAllUnboundNodes2Response, D>::encode(
1445                (
1446                    <fidl::encoding::Vector<NodeBindingInfo, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1447                ),
1448                encoder, offset, _depth
1449            )
1450        }
1451    }
1452    unsafe impl<
1453        D: fidl::encoding::ResourceDialect,
1454        T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 256>, D>,
1455    > fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D> for (T0,)
1456    {
1457        #[inline]
1458        unsafe fn encode(
1459            self,
1460            encoder: &mut fidl::encoding::Encoder<'_, D>,
1461            offset: usize,
1462            depth: fidl::encoding::Depth,
1463        ) -> fidl::Result<()> {
1464            encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1465            // Zero out padding regions. There's no need to apply masks
1466            // because the unmasked parts will be overwritten by fields.
1467            // Write the fields.
1468            self.0.encode(encoder, offset + 0, depth)?;
1469            Ok(())
1470        }
1471    }
1472
1473    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1474        for ManagerBindAllUnboundNodes2Response
1475    {
1476        #[inline(always)]
1477        fn new_empty() -> Self {
1478            Self {
1479                binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 256>, D),
1480            }
1481        }
1482
1483        #[inline]
1484        unsafe fn decode(
1485            &mut self,
1486            decoder: &mut fidl::encoding::Decoder<'_, D>,
1487            offset: usize,
1488            _depth: fidl::encoding::Depth,
1489        ) -> fidl::Result<()> {
1490            decoder.debug_check_bounds::<Self>(offset);
1491            // Verify that padding bytes are zero.
1492            fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 256>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1493            Ok(())
1494        }
1495    }
1496
1497    impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodesResponse {
1498        type Borrowed<'a> = &'a Self;
1499        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1500            value
1501        }
1502    }
1503
1504    unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodesResponse {
1505        type Owned = Self;
1506
1507        #[inline(always)]
1508        fn inline_align(_context: fidl::encoding::Context) -> usize {
1509            8
1510        }
1511
1512        #[inline(always)]
1513        fn inline_size(_context: fidl::encoding::Context) -> usize {
1514            16
1515        }
1516    }
1517
1518    unsafe impl<D: fidl::encoding::ResourceDialect>
1519        fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D>
1520        for &ManagerBindAllUnboundNodesResponse
1521    {
1522        #[inline]
1523        unsafe fn encode(
1524            self,
1525            encoder: &mut fidl::encoding::Encoder<'_, D>,
1526            offset: usize,
1527            _depth: fidl::encoding::Depth,
1528        ) -> fidl::Result<()> {
1529            encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1530            // Delegate to tuple encoding.
1531            fidl::encoding::Encode::<ManagerBindAllUnboundNodesResponse, D>::encode(
1532                (
1533                    <fidl::encoding::Vector<NodeBindingInfo, 10> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1534                ),
1535                encoder, offset, _depth
1536            )
1537        }
1538    }
1539    unsafe impl<
1540        D: fidl::encoding::ResourceDialect,
1541        T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 10>, D>,
1542    > fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D> for (T0,)
1543    {
1544        #[inline]
1545        unsafe fn encode(
1546            self,
1547            encoder: &mut fidl::encoding::Encoder<'_, D>,
1548            offset: usize,
1549            depth: fidl::encoding::Depth,
1550        ) -> fidl::Result<()> {
1551            encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1552            // Zero out padding regions. There's no need to apply masks
1553            // because the unmasked parts will be overwritten by fields.
1554            // Write the fields.
1555            self.0.encode(encoder, offset + 0, depth)?;
1556            Ok(())
1557        }
1558    }
1559
1560    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1561        for ManagerBindAllUnboundNodesResponse
1562    {
1563        #[inline(always)]
1564        fn new_empty() -> Self {
1565            Self {
1566                binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 10>, D),
1567            }
1568        }
1569
1570        #[inline]
1571        unsafe fn decode(
1572            &mut self,
1573            decoder: &mut fidl::encoding::Decoder<'_, D>,
1574            offset: usize,
1575            _depth: fidl::encoding::Depth,
1576        ) -> fidl::Result<()> {
1577            decoder.debug_check_bounds::<Self>(offset);
1578            // Verify that padding bytes are zero.
1579            fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 10>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1580            Ok(())
1581        }
1582    }
1583
1584    impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverResponse {
1585        type Borrowed<'a> = &'a Self;
1586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1587            value
1588        }
1589    }
1590
1591    unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverResponse {
1592        type Owned = Self;
1593
1594        #[inline(always)]
1595        fn inline_align(_context: fidl::encoding::Context) -> usize {
1596            4
1597        }
1598
1599        #[inline(always)]
1600        fn inline_size(_context: fidl::encoding::Context) -> usize {
1601            4
1602        }
1603        #[inline(always)]
1604        fn encode_is_copy() -> bool {
1605            true
1606        }
1607
1608        #[inline(always)]
1609        fn decode_is_copy() -> bool {
1610            true
1611        }
1612    }
1613
1614    unsafe impl<D: fidl::encoding::ResourceDialect>
1615        fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D>
1616        for &ManagerRebindCompositesWithDriverResponse
1617    {
1618        #[inline]
1619        unsafe fn encode(
1620            self,
1621            encoder: &mut fidl::encoding::Encoder<'_, D>,
1622            offset: usize,
1623            _depth: fidl::encoding::Depth,
1624        ) -> fidl::Result<()> {
1625            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1626            unsafe {
1627                // Copy the object into the buffer.
1628                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1629                (buf_ptr as *mut ManagerRebindCompositesWithDriverResponse).write_unaligned(
1630                    (self as *const ManagerRebindCompositesWithDriverResponse).read(),
1631                );
1632                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1633                // done second because the memcpy will write garbage to these bytes.
1634            }
1635            Ok(())
1636        }
1637    }
1638    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1639        fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D> for (T0,)
1640    {
1641        #[inline]
1642        unsafe fn encode(
1643            self,
1644            encoder: &mut fidl::encoding::Encoder<'_, D>,
1645            offset: usize,
1646            depth: fidl::encoding::Depth,
1647        ) -> fidl::Result<()> {
1648            encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1649            // Zero out padding regions. There's no need to apply masks
1650            // because the unmasked parts will be overwritten by fields.
1651            // Write the fields.
1652            self.0.encode(encoder, offset + 0, depth)?;
1653            Ok(())
1654        }
1655    }
1656
1657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1658        for ManagerRebindCompositesWithDriverResponse
1659    {
1660        #[inline(always)]
1661        fn new_empty() -> Self {
1662            Self { count: fidl::new_empty!(u32, D) }
1663        }
1664
1665        #[inline]
1666        unsafe fn decode(
1667            &mut self,
1668            decoder: &mut fidl::encoding::Decoder<'_, D>,
1669            offset: usize,
1670            _depth: fidl::encoding::Depth,
1671        ) -> fidl::Result<()> {
1672            decoder.debug_check_bounds::<Self>(offset);
1673            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1674            // Verify that padding bytes are zero.
1675            // Copy from the buffer into the object.
1676            unsafe {
1677                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1678            }
1679            Ok(())
1680        }
1681    }
1682
1683    impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsResponse {
1684        type Borrowed<'a> = &'a Self;
1685        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1686            value
1687        }
1688    }
1689
1690    unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsResponse {
1691        type Owned = Self;
1692
1693        #[inline(always)]
1694        fn inline_align(_context: fidl::encoding::Context) -> usize {
1695            4
1696        }
1697
1698        #[inline(always)]
1699        fn inline_size(_context: fidl::encoding::Context) -> usize {
1700            4
1701        }
1702        #[inline(always)]
1703        fn encode_is_copy() -> bool {
1704            true
1705        }
1706
1707        #[inline(always)]
1708        fn decode_is_copy() -> bool {
1709            true
1710        }
1711    }
1712
1713    unsafe impl<D: fidl::encoding::ResourceDialect>
1714        fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D>
1715        for &ManagerRestartDriverHostsResponse
1716    {
1717        #[inline]
1718        unsafe fn encode(
1719            self,
1720            encoder: &mut fidl::encoding::Encoder<'_, D>,
1721            offset: usize,
1722            _depth: fidl::encoding::Depth,
1723        ) -> fidl::Result<()> {
1724            encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1725            unsafe {
1726                // Copy the object into the buffer.
1727                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1728                (buf_ptr as *mut ManagerRestartDriverHostsResponse)
1729                    .write_unaligned((self as *const ManagerRestartDriverHostsResponse).read());
1730                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1731                // done second because the memcpy will write garbage to these bytes.
1732            }
1733            Ok(())
1734        }
1735    }
1736    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1737        fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D> for (T0,)
1738    {
1739        #[inline]
1740        unsafe fn encode(
1741            self,
1742            encoder: &mut fidl::encoding::Encoder<'_, D>,
1743            offset: usize,
1744            depth: fidl::encoding::Depth,
1745        ) -> fidl::Result<()> {
1746            encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1747            // Zero out padding regions. There's no need to apply masks
1748            // because the unmasked parts will be overwritten by fields.
1749            // Write the fields.
1750            self.0.encode(encoder, offset + 0, depth)?;
1751            Ok(())
1752        }
1753    }
1754
1755    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1756        for ManagerRestartDriverHostsResponse
1757    {
1758        #[inline(always)]
1759        fn new_empty() -> Self {
1760            Self { count: fidl::new_empty!(u32, D) }
1761        }
1762
1763        #[inline]
1764        unsafe fn decode(
1765            &mut self,
1766            decoder: &mut fidl::encoding::Decoder<'_, D>,
1767            offset: usize,
1768            _depth: fidl::encoding::Depth,
1769        ) -> fidl::Result<()> {
1770            decoder.debug_check_bounds::<Self>(offset);
1771            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1772            // Verify that padding bytes are zero.
1773            // Copy from the buffer into the object.
1774            unsafe {
1775                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1776            }
1777            Ok(())
1778        }
1779    }
1780
1781    impl fidl::encoding::ValueTypeMarker for NodeInfoIteratorGetNextResponse {
1782        type Borrowed<'a> = &'a Self;
1783        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1784            value
1785        }
1786    }
1787
1788    unsafe impl fidl::encoding::TypeMarker for NodeInfoIteratorGetNextResponse {
1789        type Owned = Self;
1790
1791        #[inline(always)]
1792        fn inline_align(_context: fidl::encoding::Context) -> usize {
1793            8
1794        }
1795
1796        #[inline(always)]
1797        fn inline_size(_context: fidl::encoding::Context) -> usize {
1798            16
1799        }
1800    }
1801
1802    unsafe impl<D: fidl::encoding::ResourceDialect>
1803        fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D>
1804        for &NodeInfoIteratorGetNextResponse
1805    {
1806        #[inline]
1807        unsafe fn encode(
1808            self,
1809            encoder: &mut fidl::encoding::Encoder<'_, D>,
1810            offset: usize,
1811            _depth: fidl::encoding::Depth,
1812        ) -> fidl::Result<()> {
1813            encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1814            // Delegate to tuple encoding.
1815            fidl::encoding::Encode::<NodeInfoIteratorGetNextResponse, D>::encode(
1816                (
1817                    <fidl::encoding::UnboundedVector<NodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
1818                ),
1819                encoder, offset, _depth
1820            )
1821        }
1822    }
1823    unsafe impl<
1824        D: fidl::encoding::ResourceDialect,
1825        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeInfo>, D>,
1826    > fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D> for (T0,)
1827    {
1828        #[inline]
1829        unsafe fn encode(
1830            self,
1831            encoder: &mut fidl::encoding::Encoder<'_, D>,
1832            offset: usize,
1833            depth: fidl::encoding::Depth,
1834        ) -> fidl::Result<()> {
1835            encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1836            // Zero out padding regions. There's no need to apply masks
1837            // because the unmasked parts will be overwritten by fields.
1838            // Write the fields.
1839            self.0.encode(encoder, offset + 0, depth)?;
1840            Ok(())
1841        }
1842    }
1843
1844    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1845        for NodeInfoIteratorGetNextResponse
1846    {
1847        #[inline(always)]
1848        fn new_empty() -> Self {
1849            Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeInfo>, D) }
1850        }
1851
1852        #[inline]
1853        unsafe fn decode(
1854            &mut self,
1855            decoder: &mut fidl::encoding::Decoder<'_, D>,
1856            offset: usize,
1857            _depth: fidl::encoding::Depth,
1858        ) -> fidl::Result<()> {
1859            decoder.debug_check_bounds::<Self>(offset);
1860            // Verify that padding bytes are zero.
1861            fidl::decode!(
1862                fidl::encoding::UnboundedVector<NodeInfo>,
1863                D,
1864                &mut self.nodes,
1865                decoder,
1866                offset + 0,
1867                _depth
1868            )?;
1869            Ok(())
1870        }
1871    }
1872
1873    impl CompositeNodeInfo {
1874        #[inline(always)]
1875        fn max_ordinal_present(&self) -> u64 {
1876            if let Some(_) = self.composite {
1877                return 3;
1878            }
1879            if let Some(_) = self.topological_path {
1880                return 2;
1881            }
1882            if let Some(_) = self.parent_topological_paths {
1883                return 1;
1884            }
1885            0
1886        }
1887    }
1888
1889    impl fidl::encoding::ValueTypeMarker for CompositeNodeInfo {
1890        type Borrowed<'a> = &'a Self;
1891        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1892            value
1893        }
1894    }
1895
1896    unsafe impl fidl::encoding::TypeMarker for CompositeNodeInfo {
1897        type Owned = Self;
1898
1899        #[inline(always)]
1900        fn inline_align(_context: fidl::encoding::Context) -> usize {
1901            8
1902        }
1903
1904        #[inline(always)]
1905        fn inline_size(_context: fidl::encoding::Context) -> usize {
1906            16
1907        }
1908    }
1909
1910    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeInfo, D>
1911        for &CompositeNodeInfo
1912    {
1913        unsafe fn encode(
1914            self,
1915            encoder: &mut fidl::encoding::Encoder<'_, D>,
1916            offset: usize,
1917            mut depth: fidl::encoding::Depth,
1918        ) -> fidl::Result<()> {
1919            encoder.debug_check_bounds::<CompositeNodeInfo>(offset);
1920            // Vector header
1921            let max_ordinal: u64 = self.max_ordinal_present();
1922            encoder.write_num(max_ordinal, offset);
1923            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1924            // Calling encoder.out_of_line_offset(0) is not allowed.
1925            if max_ordinal == 0 {
1926                return Ok(());
1927            }
1928            depth.increment()?;
1929            let envelope_size = 8;
1930            let bytes_len = max_ordinal as usize * envelope_size;
1931            #[allow(unused_variables)]
1932            let offset = encoder.out_of_line_offset(bytes_len);
1933            let mut _prev_end_offset: usize = 0;
1934            if 1 > max_ordinal {
1935                return Ok(());
1936            }
1937
1938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1939            // are envelope_size bytes.
1940            let cur_offset: usize = (1 - 1) * envelope_size;
1941
1942            // Zero reserved fields.
1943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1944
1945            // Safety:
1946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1948            //   envelope_size bytes, there is always sufficient room.
1949            fidl::encoding::encode_in_envelope_optional::<
1950                fidl::encoding::UnboundedVector<
1951                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1952                >,
1953                D,
1954            >(
1955                self.parent_topological_paths.as_ref().map(
1956                    <fidl::encoding::UnboundedVector<
1957                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1958                    > as fidl::encoding::ValueTypeMarker>::borrow,
1959                ),
1960                encoder,
1961                offset + cur_offset,
1962                depth,
1963            )?;
1964
1965            _prev_end_offset = cur_offset + envelope_size;
1966            if 2 > max_ordinal {
1967                return Ok(());
1968            }
1969
1970            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1971            // are envelope_size bytes.
1972            let cur_offset: usize = (2 - 1) * envelope_size;
1973
1974            // Zero reserved fields.
1975            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1976
1977            // Safety:
1978            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1979            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1980            //   envelope_size bytes, there is always sufficient room.
1981            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1982                self.topological_path.as_ref().map(
1983                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1984                ),
1985                encoder,
1986                offset + cur_offset,
1987                depth,
1988            )?;
1989
1990            _prev_end_offset = cur_offset + envelope_size;
1991            if 3 > max_ordinal {
1992                return Ok(());
1993            }
1994
1995            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1996            // are envelope_size bytes.
1997            let cur_offset: usize = (3 - 1) * envelope_size;
1998
1999            // Zero reserved fields.
2000            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2001
2002            // Safety:
2003            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2004            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2005            //   envelope_size bytes, there is always sufficient room.
2006            fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
2007                self.composite
2008                    .as_ref()
2009                    .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
2010                encoder,
2011                offset + cur_offset,
2012                depth,
2013            )?;
2014
2015            _prev_end_offset = cur_offset + envelope_size;
2016
2017            Ok(())
2018        }
2019    }
2020
2021    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeInfo {
2022        #[inline(always)]
2023        fn new_empty() -> Self {
2024            Self::default()
2025        }
2026
2027        unsafe fn decode(
2028            &mut self,
2029            decoder: &mut fidl::encoding::Decoder<'_, D>,
2030            offset: usize,
2031            mut depth: fidl::encoding::Depth,
2032        ) -> fidl::Result<()> {
2033            decoder.debug_check_bounds::<Self>(offset);
2034            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2035                None => return Err(fidl::Error::NotNullable),
2036                Some(len) => len,
2037            };
2038            // Calling decoder.out_of_line_offset(0) is not allowed.
2039            if len == 0 {
2040                return Ok(());
2041            };
2042            depth.increment()?;
2043            let envelope_size = 8;
2044            let bytes_len = len * envelope_size;
2045            let offset = decoder.out_of_line_offset(bytes_len)?;
2046            // Decode the envelope for each type.
2047            let mut _next_ordinal_to_read = 0;
2048            let mut next_offset = offset;
2049            let end_offset = offset + bytes_len;
2050            _next_ordinal_to_read += 1;
2051            if next_offset >= end_offset {
2052                return Ok(());
2053            }
2054
2055            // Decode unknown envelopes for gaps in ordinals.
2056            while _next_ordinal_to_read < 1 {
2057                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2058                _next_ordinal_to_read += 1;
2059                next_offset += envelope_size;
2060            }
2061
2062            let next_out_of_line = decoder.next_out_of_line();
2063            let handles_before = decoder.remaining_handles();
2064            if let Some((inlined, num_bytes, num_handles)) =
2065                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2066            {
2067                let member_inline_size = <fidl::encoding::UnboundedVector<
2068                    fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2069                > as fidl::encoding::TypeMarker>::inline_size(
2070                    decoder.context
2071                );
2072                if inlined != (member_inline_size <= 4) {
2073                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2074                }
2075                let inner_offset;
2076                let mut inner_depth = depth.clone();
2077                if inlined {
2078                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2079                    inner_offset = next_offset;
2080                } else {
2081                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2082                    inner_depth.increment()?;
2083                }
2084                let val_ref = self.parent_topological_paths.get_or_insert_with(|| {
2085                    fidl::new_empty!(
2086                        fidl::encoding::UnboundedVector<
2087                            fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2088                        >,
2089                        D
2090                    )
2091                });
2092                fidl::decode!(
2093                    fidl::encoding::UnboundedVector<
2094                        fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2095                    >,
2096                    D,
2097                    val_ref,
2098                    decoder,
2099                    inner_offset,
2100                    inner_depth
2101                )?;
2102                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2103                {
2104                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2105                }
2106                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2107                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2108                }
2109            }
2110
2111            next_offset += envelope_size;
2112            _next_ordinal_to_read += 1;
2113            if next_offset >= end_offset {
2114                return Ok(());
2115            }
2116
2117            // Decode unknown envelopes for gaps in ordinals.
2118            while _next_ordinal_to_read < 2 {
2119                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2120                _next_ordinal_to_read += 1;
2121                next_offset += envelope_size;
2122            }
2123
2124            let next_out_of_line = decoder.next_out_of_line();
2125            let handles_before = decoder.remaining_handles();
2126            if let Some((inlined, num_bytes, num_handles)) =
2127                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2128            {
2129                let member_inline_size =
2130                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2131                        decoder.context,
2132                    );
2133                if inlined != (member_inline_size <= 4) {
2134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2135                }
2136                let inner_offset;
2137                let mut inner_depth = depth.clone();
2138                if inlined {
2139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2140                    inner_offset = next_offset;
2141                } else {
2142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2143                    inner_depth.increment()?;
2144                }
2145                let val_ref = self
2146                    .topological_path
2147                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2148                fidl::decode!(
2149                    fidl::encoding::UnboundedString,
2150                    D,
2151                    val_ref,
2152                    decoder,
2153                    inner_offset,
2154                    inner_depth
2155                )?;
2156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2157                {
2158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2159                }
2160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2162                }
2163            }
2164
2165            next_offset += envelope_size;
2166            _next_ordinal_to_read += 1;
2167            if next_offset >= end_offset {
2168                return Ok(());
2169            }
2170
2171            // Decode unknown envelopes for gaps in ordinals.
2172            while _next_ordinal_to_read < 3 {
2173                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2174                _next_ordinal_to_read += 1;
2175                next_offset += envelope_size;
2176            }
2177
2178            let next_out_of_line = decoder.next_out_of_line();
2179            let handles_before = decoder.remaining_handles();
2180            if let Some((inlined, num_bytes, num_handles)) =
2181                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2182            {
2183                let member_inline_size =
2184                    <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2185                if inlined != (member_inline_size <= 4) {
2186                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2187                }
2188                let inner_offset;
2189                let mut inner_depth = depth.clone();
2190                if inlined {
2191                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2192                    inner_offset = next_offset;
2193                } else {
2194                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2195                    inner_depth.increment()?;
2196                }
2197                let val_ref =
2198                    self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
2199                fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2201                {
2202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2203                }
2204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2206                }
2207            }
2208
2209            next_offset += envelope_size;
2210
2211            // Decode the remaining unknown envelopes.
2212            while next_offset < end_offset {
2213                _next_ordinal_to_read += 1;
2214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2215                next_offset += envelope_size;
2216            }
2217
2218            Ok(())
2219        }
2220    }
2221
2222    impl DispatcherInfo {
2223        #[inline(always)]
2224        fn max_ordinal_present(&self) -> u64 {
2225            if let Some(_) = self.scheduler_role {
2226                return 4;
2227            }
2228            if let Some(_) = self.options {
2229                return 3;
2230            }
2231            if let Some(_) = self.name {
2232                return 2;
2233            }
2234            if let Some(_) = self.driver {
2235                return 1;
2236            }
2237            0
2238        }
2239    }
2240
2241    impl fidl::encoding::ValueTypeMarker for DispatcherInfo {
2242        type Borrowed<'a> = &'a Self;
2243        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2244            value
2245        }
2246    }
2247
2248    unsafe impl fidl::encoding::TypeMarker for DispatcherInfo {
2249        type Owned = Self;
2250
2251        #[inline(always)]
2252        fn inline_align(_context: fidl::encoding::Context) -> usize {
2253            8
2254        }
2255
2256        #[inline(always)]
2257        fn inline_size(_context: fidl::encoding::Context) -> usize {
2258            16
2259        }
2260    }
2261
2262    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherInfo, D>
2263        for &DispatcherInfo
2264    {
2265        unsafe fn encode(
2266            self,
2267            encoder: &mut fidl::encoding::Encoder<'_, D>,
2268            offset: usize,
2269            mut depth: fidl::encoding::Depth,
2270        ) -> fidl::Result<()> {
2271            encoder.debug_check_bounds::<DispatcherInfo>(offset);
2272            // Vector header
2273            let max_ordinal: u64 = self.max_ordinal_present();
2274            encoder.write_num(max_ordinal, offset);
2275            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2276            // Calling encoder.out_of_line_offset(0) is not allowed.
2277            if max_ordinal == 0 {
2278                return Ok(());
2279            }
2280            depth.increment()?;
2281            let envelope_size = 8;
2282            let bytes_len = max_ordinal as usize * envelope_size;
2283            #[allow(unused_variables)]
2284            let offset = encoder.out_of_line_offset(bytes_len);
2285            let mut _prev_end_offset: usize = 0;
2286            if 1 > max_ordinal {
2287                return Ok(());
2288            }
2289
2290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2291            // are envelope_size bytes.
2292            let cur_offset: usize = (1 - 1) * envelope_size;
2293
2294            // Zero reserved fields.
2295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2296
2297            // Safety:
2298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2300            //   envelope_size bytes, there is always sufficient room.
2301            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2302            self.driver.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2303            encoder, offset + cur_offset, depth
2304        )?;
2305
2306            _prev_end_offset = cur_offset + envelope_size;
2307            if 2 > max_ordinal {
2308                return Ok(());
2309            }
2310
2311            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2312            // are envelope_size bytes.
2313            let cur_offset: usize = (2 - 1) * envelope_size;
2314
2315            // Zero reserved fields.
2316            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2317
2318            // Safety:
2319            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2320            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2321            //   envelope_size bytes, there is always sufficient room.
2322            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2323                self.name.as_ref().map(
2324                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2325                ),
2326                encoder,
2327                offset + cur_offset,
2328                depth,
2329            )?;
2330
2331            _prev_end_offset = cur_offset + envelope_size;
2332            if 3 > max_ordinal {
2333                return Ok(());
2334            }
2335
2336            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2337            // are envelope_size bytes.
2338            let cur_offset: usize = (3 - 1) * envelope_size;
2339
2340            // Zero reserved fields.
2341            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2342
2343            // Safety:
2344            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2345            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2346            //   envelope_size bytes, there is always sufficient room.
2347            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2348                self.options.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2349                encoder,
2350                offset + cur_offset,
2351                depth,
2352            )?;
2353
2354            _prev_end_offset = cur_offset + envelope_size;
2355            if 4 > max_ordinal {
2356                return Ok(());
2357            }
2358
2359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2360            // are envelope_size bytes.
2361            let cur_offset: usize = (4 - 1) * envelope_size;
2362
2363            // Zero reserved fields.
2364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2365
2366            // Safety:
2367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2369            //   envelope_size bytes, there is always sufficient room.
2370            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2371                self.scheduler_role.as_ref().map(
2372                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2373                ),
2374                encoder,
2375                offset + cur_offset,
2376                depth,
2377            )?;
2378
2379            _prev_end_offset = cur_offset + envelope_size;
2380
2381            Ok(())
2382        }
2383    }
2384
2385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherInfo {
2386        #[inline(always)]
2387        fn new_empty() -> Self {
2388            Self::default()
2389        }
2390
2391        unsafe fn decode(
2392            &mut self,
2393            decoder: &mut fidl::encoding::Decoder<'_, D>,
2394            offset: usize,
2395            mut depth: fidl::encoding::Depth,
2396        ) -> fidl::Result<()> {
2397            decoder.debug_check_bounds::<Self>(offset);
2398            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2399                None => return Err(fidl::Error::NotNullable),
2400                Some(len) => len,
2401            };
2402            // Calling decoder.out_of_line_offset(0) is not allowed.
2403            if len == 0 {
2404                return Ok(());
2405            };
2406            depth.increment()?;
2407            let envelope_size = 8;
2408            let bytes_len = len * envelope_size;
2409            let offset = decoder.out_of_line_offset(bytes_len)?;
2410            // Decode the envelope for each type.
2411            let mut _next_ordinal_to_read = 0;
2412            let mut next_offset = offset;
2413            let end_offset = offset + bytes_len;
2414            _next_ordinal_to_read += 1;
2415            if next_offset >= end_offset {
2416                return Ok(());
2417            }
2418
2419            // Decode unknown envelopes for gaps in ordinals.
2420            while _next_ordinal_to_read < 1 {
2421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2422                _next_ordinal_to_read += 1;
2423                next_offset += envelope_size;
2424            }
2425
2426            let next_out_of_line = decoder.next_out_of_line();
2427            let handles_before = decoder.remaining_handles();
2428            if let Some((inlined, num_bytes, num_handles)) =
2429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2430            {
2431                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2432                if inlined != (member_inline_size <= 4) {
2433                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2434                }
2435                let inner_offset;
2436                let mut inner_depth = depth.clone();
2437                if inlined {
2438                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2439                    inner_offset = next_offset;
2440                } else {
2441                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2442                    inner_depth.increment()?;
2443                }
2444                let val_ref = self.driver.get_or_insert_with(|| {
2445                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2446                });
2447                fidl::decode!(
2448                    fidl::encoding::BoundedString<4096>,
2449                    D,
2450                    val_ref,
2451                    decoder,
2452                    inner_offset,
2453                    inner_depth
2454                )?;
2455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2456                {
2457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2458                }
2459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2461                }
2462            }
2463
2464            next_offset += envelope_size;
2465            _next_ordinal_to_read += 1;
2466            if next_offset >= end_offset {
2467                return Ok(());
2468            }
2469
2470            // Decode unknown envelopes for gaps in ordinals.
2471            while _next_ordinal_to_read < 2 {
2472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2473                _next_ordinal_to_read += 1;
2474                next_offset += envelope_size;
2475            }
2476
2477            let next_out_of_line = decoder.next_out_of_line();
2478            let handles_before = decoder.remaining_handles();
2479            if let Some((inlined, num_bytes, num_handles)) =
2480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2481            {
2482                let member_inline_size =
2483                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2484                        decoder.context,
2485                    );
2486                if inlined != (member_inline_size <= 4) {
2487                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2488                }
2489                let inner_offset;
2490                let mut inner_depth = depth.clone();
2491                if inlined {
2492                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2493                    inner_offset = next_offset;
2494                } else {
2495                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2496                    inner_depth.increment()?;
2497                }
2498                let val_ref = self
2499                    .name
2500                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2501                fidl::decode!(
2502                    fidl::encoding::UnboundedString,
2503                    D,
2504                    val_ref,
2505                    decoder,
2506                    inner_offset,
2507                    inner_depth
2508                )?;
2509                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2510                {
2511                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2512                }
2513                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2514                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2515                }
2516            }
2517
2518            next_offset += envelope_size;
2519            _next_ordinal_to_read += 1;
2520            if next_offset >= end_offset {
2521                return Ok(());
2522            }
2523
2524            // Decode unknown envelopes for gaps in ordinals.
2525            while _next_ordinal_to_read < 3 {
2526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2527                _next_ordinal_to_read += 1;
2528                next_offset += envelope_size;
2529            }
2530
2531            let next_out_of_line = decoder.next_out_of_line();
2532            let handles_before = decoder.remaining_handles();
2533            if let Some((inlined, num_bytes, num_handles)) =
2534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2535            {
2536                let member_inline_size =
2537                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2538                if inlined != (member_inline_size <= 4) {
2539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2540                }
2541                let inner_offset;
2542                let mut inner_depth = depth.clone();
2543                if inlined {
2544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2545                    inner_offset = next_offset;
2546                } else {
2547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2548                    inner_depth.increment()?;
2549                }
2550                let val_ref = self.options.get_or_insert_with(|| fidl::new_empty!(u32, D));
2551                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2553                {
2554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2555                }
2556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2558                }
2559            }
2560
2561            next_offset += envelope_size;
2562            _next_ordinal_to_read += 1;
2563            if next_offset >= end_offset {
2564                return Ok(());
2565            }
2566
2567            // Decode unknown envelopes for gaps in ordinals.
2568            while _next_ordinal_to_read < 4 {
2569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2570                _next_ordinal_to_read += 1;
2571                next_offset += envelope_size;
2572            }
2573
2574            let next_out_of_line = decoder.next_out_of_line();
2575            let handles_before = decoder.remaining_handles();
2576            if let Some((inlined, num_bytes, num_handles)) =
2577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2578            {
2579                let member_inline_size =
2580                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2581                        decoder.context,
2582                    );
2583                if inlined != (member_inline_size <= 4) {
2584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2585                }
2586                let inner_offset;
2587                let mut inner_depth = depth.clone();
2588                if inlined {
2589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2590                    inner_offset = next_offset;
2591                } else {
2592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2593                    inner_depth.increment()?;
2594                }
2595                let val_ref = self
2596                    .scheduler_role
2597                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2598                fidl::decode!(
2599                    fidl::encoding::UnboundedString,
2600                    D,
2601                    val_ref,
2602                    decoder,
2603                    inner_offset,
2604                    inner_depth
2605                )?;
2606                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2607                {
2608                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2609                }
2610                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2611                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2612                }
2613            }
2614
2615            next_offset += envelope_size;
2616
2617            // Decode the remaining unknown envelopes.
2618            while next_offset < end_offset {
2619                _next_ordinal_to_read += 1;
2620                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2621                next_offset += envelope_size;
2622            }
2623
2624            Ok(())
2625        }
2626    }
2627
2628    impl DriverHostInfo {
2629        #[inline(always)]
2630        fn max_ordinal_present(&self) -> u64 {
2631            if let Some(_) = self.name {
2632                return 5;
2633            }
2634            if let Some(_) = self.dispatchers {
2635                return 4;
2636            }
2637            if let Some(_) = self.drivers {
2638                return 3;
2639            }
2640            if let Some(_) = self.threads {
2641                return 2;
2642            }
2643            if let Some(_) = self.process_koid {
2644                return 1;
2645            }
2646            0
2647        }
2648    }
2649
2650    impl fidl::encoding::ValueTypeMarker for DriverHostInfo {
2651        type Borrowed<'a> = &'a Self;
2652        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2653            value
2654        }
2655    }
2656
2657    unsafe impl fidl::encoding::TypeMarker for DriverHostInfo {
2658        type Owned = Self;
2659
2660        #[inline(always)]
2661        fn inline_align(_context: fidl::encoding::Context) -> usize {
2662            8
2663        }
2664
2665        #[inline(always)]
2666        fn inline_size(_context: fidl::encoding::Context) -> usize {
2667            16
2668        }
2669    }
2670
2671    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverHostInfo, D>
2672        for &DriverHostInfo
2673    {
2674        unsafe fn encode(
2675            self,
2676            encoder: &mut fidl::encoding::Encoder<'_, D>,
2677            offset: usize,
2678            mut depth: fidl::encoding::Depth,
2679        ) -> fidl::Result<()> {
2680            encoder.debug_check_bounds::<DriverHostInfo>(offset);
2681            // Vector header
2682            let max_ordinal: u64 = self.max_ordinal_present();
2683            encoder.write_num(max_ordinal, offset);
2684            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2685            // Calling encoder.out_of_line_offset(0) is not allowed.
2686            if max_ordinal == 0 {
2687                return Ok(());
2688            }
2689            depth.increment()?;
2690            let envelope_size = 8;
2691            let bytes_len = max_ordinal as usize * envelope_size;
2692            #[allow(unused_variables)]
2693            let offset = encoder.out_of_line_offset(bytes_len);
2694            let mut _prev_end_offset: usize = 0;
2695            if 1 > max_ordinal {
2696                return Ok(());
2697            }
2698
2699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2700            // are envelope_size bytes.
2701            let cur_offset: usize = (1 - 1) * envelope_size;
2702
2703            // Zero reserved fields.
2704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2705
2706            // Safety:
2707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2709            //   envelope_size bytes, there is always sufficient room.
2710            fidl::encoding::encode_in_envelope_optional::<u64, D>(
2711                self.process_koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2712                encoder,
2713                offset + cur_offset,
2714                depth,
2715            )?;
2716
2717            _prev_end_offset = cur_offset + envelope_size;
2718            if 2 > max_ordinal {
2719                return Ok(());
2720            }
2721
2722            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2723            // are envelope_size bytes.
2724            let cur_offset: usize = (2 - 1) * envelope_size;
2725
2726            // Zero reserved fields.
2727            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2728
2729            // Safety:
2730            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2731            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2732            //   envelope_size bytes, there is always sufficient room.
2733            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ThreadInfo>, D>(
2734            self.threads.as_ref().map(<fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2735            encoder, offset + cur_offset, depth
2736        )?;
2737
2738            _prev_end_offset = cur_offset + envelope_size;
2739            if 3 > max_ordinal {
2740                return Ok(());
2741            }
2742
2743            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2744            // are envelope_size bytes.
2745            let cur_offset: usize = (3 - 1) * envelope_size;
2746
2747            // Zero reserved fields.
2748            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2749
2750            // Safety:
2751            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2752            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2753            //   envelope_size bytes, there is always sufficient room.
2754            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>, D>(
2755            self.drivers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow),
2756            encoder, offset + cur_offset, depth
2757        )?;
2758
2759            _prev_end_offset = cur_offset + envelope_size;
2760            if 4 > max_ordinal {
2761                return Ok(());
2762            }
2763
2764            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2765            // are envelope_size bytes.
2766            let cur_offset: usize = (4 - 1) * envelope_size;
2767
2768            // Zero reserved fields.
2769            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2770
2771            // Safety:
2772            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2773            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2774            //   envelope_size bytes, there is always sufficient room.
2775            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DispatcherInfo>, D>(
2776            self.dispatchers.as_ref().map(<fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2777            encoder, offset + cur_offset, depth
2778        )?;
2779
2780            _prev_end_offset = cur_offset + envelope_size;
2781            if 5 > max_ordinal {
2782                return Ok(());
2783            }
2784
2785            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2786            // are envelope_size bytes.
2787            let cur_offset: usize = (5 - 1) * envelope_size;
2788
2789            // Zero reserved fields.
2790            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2791
2792            // Safety:
2793            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2794            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2795            //   envelope_size bytes, there is always sufficient room.
2796            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2797                self.name.as_ref().map(
2798                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2799                ),
2800                encoder,
2801                offset + cur_offset,
2802                depth,
2803            )?;
2804
2805            _prev_end_offset = cur_offset + envelope_size;
2806
2807            Ok(())
2808        }
2809    }
2810
2811    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverHostInfo {
2812        #[inline(always)]
2813        fn new_empty() -> Self {
2814            Self::default()
2815        }
2816
2817        unsafe fn decode(
2818            &mut self,
2819            decoder: &mut fidl::encoding::Decoder<'_, D>,
2820            offset: usize,
2821            mut depth: fidl::encoding::Depth,
2822        ) -> fidl::Result<()> {
2823            decoder.debug_check_bounds::<Self>(offset);
2824            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2825                None => return Err(fidl::Error::NotNullable),
2826                Some(len) => len,
2827            };
2828            // Calling decoder.out_of_line_offset(0) is not allowed.
2829            if len == 0 {
2830                return Ok(());
2831            };
2832            depth.increment()?;
2833            let envelope_size = 8;
2834            let bytes_len = len * envelope_size;
2835            let offset = decoder.out_of_line_offset(bytes_len)?;
2836            // Decode the envelope for each type.
2837            let mut _next_ordinal_to_read = 0;
2838            let mut next_offset = offset;
2839            let end_offset = offset + bytes_len;
2840            _next_ordinal_to_read += 1;
2841            if next_offset >= end_offset {
2842                return Ok(());
2843            }
2844
2845            // Decode unknown envelopes for gaps in ordinals.
2846            while _next_ordinal_to_read < 1 {
2847                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2848                _next_ordinal_to_read += 1;
2849                next_offset += envelope_size;
2850            }
2851
2852            let next_out_of_line = decoder.next_out_of_line();
2853            let handles_before = decoder.remaining_handles();
2854            if let Some((inlined, num_bytes, num_handles)) =
2855                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2856            {
2857                let member_inline_size =
2858                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2859                if inlined != (member_inline_size <= 4) {
2860                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2861                }
2862                let inner_offset;
2863                let mut inner_depth = depth.clone();
2864                if inlined {
2865                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2866                    inner_offset = next_offset;
2867                } else {
2868                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2869                    inner_depth.increment()?;
2870                }
2871                let val_ref = self.process_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
2872                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2873                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2874                {
2875                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2876                }
2877                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2878                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2879                }
2880            }
2881
2882            next_offset += envelope_size;
2883            _next_ordinal_to_read += 1;
2884            if next_offset >= end_offset {
2885                return Ok(());
2886            }
2887
2888            // Decode unknown envelopes for gaps in ordinals.
2889            while _next_ordinal_to_read < 2 {
2890                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2891                _next_ordinal_to_read += 1;
2892                next_offset += envelope_size;
2893            }
2894
2895            let next_out_of_line = decoder.next_out_of_line();
2896            let handles_before = decoder.remaining_handles();
2897            if let Some((inlined, num_bytes, num_handles)) =
2898                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2899            {
2900                let member_inline_size = <fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2901                if inlined != (member_inline_size <= 4) {
2902                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2903                }
2904                let inner_offset;
2905                let mut inner_depth = depth.clone();
2906                if inlined {
2907                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2908                    inner_offset = next_offset;
2909                } else {
2910                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2911                    inner_depth.increment()?;
2912                }
2913                let val_ref = self.threads.get_or_insert_with(|| {
2914                    fidl::new_empty!(fidl::encoding::UnboundedVector<ThreadInfo>, D)
2915                });
2916                fidl::decode!(
2917                    fidl::encoding::UnboundedVector<ThreadInfo>,
2918                    D,
2919                    val_ref,
2920                    decoder,
2921                    inner_offset,
2922                    inner_depth
2923                )?;
2924                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2925                {
2926                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2927                }
2928                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2929                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2930                }
2931            }
2932
2933            next_offset += envelope_size;
2934            _next_ordinal_to_read += 1;
2935            if next_offset >= end_offset {
2936                return Ok(());
2937            }
2938
2939            // Decode unknown envelopes for gaps in ordinals.
2940            while _next_ordinal_to_read < 3 {
2941                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2942                _next_ordinal_to_read += 1;
2943                next_offset += envelope_size;
2944            }
2945
2946            let next_out_of_line = decoder.next_out_of_line();
2947            let handles_before = decoder.remaining_handles();
2948            if let Some((inlined, num_bytes, num_handles)) =
2949                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2950            {
2951                let member_inline_size = <fidl::encoding::UnboundedVector<
2952                    fidl::encoding::BoundedString<4096>,
2953                > as fidl::encoding::TypeMarker>::inline_size(
2954                    decoder.context
2955                );
2956                if inlined != (member_inline_size <= 4) {
2957                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2958                }
2959                let inner_offset;
2960                let mut inner_depth = depth.clone();
2961                if inlined {
2962                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2963                    inner_offset = next_offset;
2964                } else {
2965                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2966                    inner_depth.increment()?;
2967                }
2968                let val_ref = self.drivers.get_or_insert_with(|| {
2969                    fidl::new_empty!(
2970                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
2971                        D
2972                    )
2973                });
2974                fidl::decode!(
2975                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
2976                    D,
2977                    val_ref,
2978                    decoder,
2979                    inner_offset,
2980                    inner_depth
2981                )?;
2982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2983                {
2984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2985                }
2986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2988                }
2989            }
2990
2991            next_offset += envelope_size;
2992            _next_ordinal_to_read += 1;
2993            if next_offset >= end_offset {
2994                return Ok(());
2995            }
2996
2997            // Decode unknown envelopes for gaps in ordinals.
2998            while _next_ordinal_to_read < 4 {
2999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000                _next_ordinal_to_read += 1;
3001                next_offset += envelope_size;
3002            }
3003
3004            let next_out_of_line = decoder.next_out_of_line();
3005            let handles_before = decoder.remaining_handles();
3006            if let Some((inlined, num_bytes, num_handles)) =
3007                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3008            {
3009                let member_inline_size = <fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3010                if inlined != (member_inline_size <= 4) {
3011                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3012                }
3013                let inner_offset;
3014                let mut inner_depth = depth.clone();
3015                if inlined {
3016                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3017                    inner_offset = next_offset;
3018                } else {
3019                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3020                    inner_depth.increment()?;
3021                }
3022                let val_ref = self.dispatchers.get_or_insert_with(|| {
3023                    fidl::new_empty!(fidl::encoding::UnboundedVector<DispatcherInfo>, D)
3024                });
3025                fidl::decode!(
3026                    fidl::encoding::UnboundedVector<DispatcherInfo>,
3027                    D,
3028                    val_ref,
3029                    decoder,
3030                    inner_offset,
3031                    inner_depth
3032                )?;
3033                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3034                {
3035                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3036                }
3037                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3038                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3039                }
3040            }
3041
3042            next_offset += envelope_size;
3043            _next_ordinal_to_read += 1;
3044            if next_offset >= end_offset {
3045                return Ok(());
3046            }
3047
3048            // Decode unknown envelopes for gaps in ordinals.
3049            while _next_ordinal_to_read < 5 {
3050                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3051                _next_ordinal_to_read += 1;
3052                next_offset += envelope_size;
3053            }
3054
3055            let next_out_of_line = decoder.next_out_of_line();
3056            let handles_before = decoder.remaining_handles();
3057            if let Some((inlined, num_bytes, num_handles)) =
3058                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3059            {
3060                let member_inline_size =
3061                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3062                        decoder.context,
3063                    );
3064                if inlined != (member_inline_size <= 4) {
3065                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3066                }
3067                let inner_offset;
3068                let mut inner_depth = depth.clone();
3069                if inlined {
3070                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3071                    inner_offset = next_offset;
3072                } else {
3073                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3074                    inner_depth.increment()?;
3075                }
3076                let val_ref = self
3077                    .name
3078                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3079                fidl::decode!(
3080                    fidl::encoding::UnboundedString,
3081                    D,
3082                    val_ref,
3083                    decoder,
3084                    inner_offset,
3085                    inner_depth
3086                )?;
3087                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3088                {
3089                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3090                }
3091                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3092                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3093                }
3094            }
3095
3096            next_offset += envelope_size;
3097
3098            // Decode the remaining unknown envelopes.
3099            while next_offset < end_offset {
3100                _next_ordinal_to_read += 1;
3101                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3102                next_offset += envelope_size;
3103            }
3104
3105            Ok(())
3106        }
3107    }
3108
3109    impl NodeBindingInfo {
3110        #[inline(always)]
3111        fn max_ordinal_present(&self) -> u64 {
3112            if let Some(_) = self.composite_parents {
3113                return 3;
3114            }
3115            if let Some(_) = self.driver_url {
3116                return 2;
3117            }
3118            if let Some(_) = self.node_name {
3119                return 1;
3120            }
3121            0
3122        }
3123    }
3124
3125    impl fidl::encoding::ValueTypeMarker for NodeBindingInfo {
3126        type Borrowed<'a> = &'a Self;
3127        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3128            value
3129        }
3130    }
3131
3132    unsafe impl fidl::encoding::TypeMarker for NodeBindingInfo {
3133        type Owned = Self;
3134
3135        #[inline(always)]
3136        fn inline_align(_context: fidl::encoding::Context) -> usize {
3137            8
3138        }
3139
3140        #[inline(always)]
3141        fn inline_size(_context: fidl::encoding::Context) -> usize {
3142            16
3143        }
3144    }
3145
3146    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBindingInfo, D>
3147        for &NodeBindingInfo
3148    {
3149        unsafe fn encode(
3150            self,
3151            encoder: &mut fidl::encoding::Encoder<'_, D>,
3152            offset: usize,
3153            mut depth: fidl::encoding::Depth,
3154        ) -> fidl::Result<()> {
3155            encoder.debug_check_bounds::<NodeBindingInfo>(offset);
3156            // Vector header
3157            let max_ordinal: u64 = self.max_ordinal_present();
3158            encoder.write_num(max_ordinal, offset);
3159            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3160            // Calling encoder.out_of_line_offset(0) is not allowed.
3161            if max_ordinal == 0 {
3162                return Ok(());
3163            }
3164            depth.increment()?;
3165            let envelope_size = 8;
3166            let bytes_len = max_ordinal as usize * envelope_size;
3167            #[allow(unused_variables)]
3168            let offset = encoder.out_of_line_offset(bytes_len);
3169            let mut _prev_end_offset: usize = 0;
3170            if 1 > max_ordinal {
3171                return Ok(());
3172            }
3173
3174            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3175            // are envelope_size bytes.
3176            let cur_offset: usize = (1 - 1) * envelope_size;
3177
3178            // Zero reserved fields.
3179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3180
3181            // Safety:
3182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3184            //   envelope_size bytes, there is always sufficient room.
3185            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3186            self.node_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3187            encoder, offset + cur_offset, depth
3188        )?;
3189
3190            _prev_end_offset = cur_offset + envelope_size;
3191            if 2 > max_ordinal {
3192                return Ok(());
3193            }
3194
3195            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3196            // are envelope_size bytes.
3197            let cur_offset: usize = (2 - 1) * envelope_size;
3198
3199            // Zero reserved fields.
3200            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3201
3202            // Safety:
3203            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3204            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3205            //   envelope_size bytes, there is always sufficient room.
3206            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3207            self.driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3208            encoder, offset + cur_offset, depth
3209        )?;
3210
3211            _prev_end_offset = cur_offset + envelope_size;
3212            if 3 > max_ordinal {
3213                return Ok(());
3214            }
3215
3216            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3217            // are envelope_size bytes.
3218            let cur_offset: usize = (3 - 1) * envelope_size;
3219
3220            // Zero reserved fields.
3221            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3222
3223            // Safety:
3224            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3225            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3226            //   envelope_size bytes, there is always sufficient room.
3227            fidl::encoding::encode_in_envelope_optional::<
3228                fidl::encoding::UnboundedVector<
3229                    fidl_fuchsia_driver_framework__common::CompositeParent,
3230                >,
3231                D,
3232            >(
3233                self.composite_parents.as_ref().map(
3234                    <fidl::encoding::UnboundedVector<
3235                        fidl_fuchsia_driver_framework__common::CompositeParent,
3236                    > as fidl::encoding::ValueTypeMarker>::borrow,
3237                ),
3238                encoder,
3239                offset + cur_offset,
3240                depth,
3241            )?;
3242
3243            _prev_end_offset = cur_offset + envelope_size;
3244
3245            Ok(())
3246        }
3247    }
3248
3249    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBindingInfo {
3250        #[inline(always)]
3251        fn new_empty() -> Self {
3252            Self::default()
3253        }
3254
3255        unsafe fn decode(
3256            &mut self,
3257            decoder: &mut fidl::encoding::Decoder<'_, D>,
3258            offset: usize,
3259            mut depth: fidl::encoding::Depth,
3260        ) -> fidl::Result<()> {
3261            decoder.debug_check_bounds::<Self>(offset);
3262            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3263                None => return Err(fidl::Error::NotNullable),
3264                Some(len) => len,
3265            };
3266            // Calling decoder.out_of_line_offset(0) is not allowed.
3267            if len == 0 {
3268                return Ok(());
3269            };
3270            depth.increment()?;
3271            let envelope_size = 8;
3272            let bytes_len = len * envelope_size;
3273            let offset = decoder.out_of_line_offset(bytes_len)?;
3274            // Decode the envelope for each type.
3275            let mut _next_ordinal_to_read = 0;
3276            let mut next_offset = offset;
3277            let end_offset = offset + bytes_len;
3278            _next_ordinal_to_read += 1;
3279            if next_offset >= end_offset {
3280                return Ok(());
3281            }
3282
3283            // Decode unknown envelopes for gaps in ordinals.
3284            while _next_ordinal_to_read < 1 {
3285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3286                _next_ordinal_to_read += 1;
3287                next_offset += envelope_size;
3288            }
3289
3290            let next_out_of_line = decoder.next_out_of_line();
3291            let handles_before = decoder.remaining_handles();
3292            if let Some((inlined, num_bytes, num_handles)) =
3293                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3294            {
3295                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3296                if inlined != (member_inline_size <= 4) {
3297                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3298                }
3299                let inner_offset;
3300                let mut inner_depth = depth.clone();
3301                if inlined {
3302                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3303                    inner_offset = next_offset;
3304                } else {
3305                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3306                    inner_depth.increment()?;
3307                }
3308                let val_ref = self.node_name.get_or_insert_with(|| {
3309                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
3310                });
3311                fidl::decode!(
3312                    fidl::encoding::BoundedString<1024>,
3313                    D,
3314                    val_ref,
3315                    decoder,
3316                    inner_offset,
3317                    inner_depth
3318                )?;
3319                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3320                {
3321                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3322                }
3323                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3324                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3325                }
3326            }
3327
3328            next_offset += envelope_size;
3329            _next_ordinal_to_read += 1;
3330            if next_offset >= end_offset {
3331                return Ok(());
3332            }
3333
3334            // Decode unknown envelopes for gaps in ordinals.
3335            while _next_ordinal_to_read < 2 {
3336                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3337                _next_ordinal_to_read += 1;
3338                next_offset += envelope_size;
3339            }
3340
3341            let next_out_of_line = decoder.next_out_of_line();
3342            let handles_before = decoder.remaining_handles();
3343            if let Some((inlined, num_bytes, num_handles)) =
3344                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3345            {
3346                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3347                if inlined != (member_inline_size <= 4) {
3348                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3349                }
3350                let inner_offset;
3351                let mut inner_depth = depth.clone();
3352                if inlined {
3353                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3354                    inner_offset = next_offset;
3355                } else {
3356                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3357                    inner_depth.increment()?;
3358                }
3359                let val_ref = self.driver_url.get_or_insert_with(|| {
3360                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3361                });
3362                fidl::decode!(
3363                    fidl::encoding::BoundedString<4096>,
3364                    D,
3365                    val_ref,
3366                    decoder,
3367                    inner_offset,
3368                    inner_depth
3369                )?;
3370                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3371                {
3372                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3373                }
3374                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3375                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3376                }
3377            }
3378
3379            next_offset += envelope_size;
3380            _next_ordinal_to_read += 1;
3381            if next_offset >= end_offset {
3382                return Ok(());
3383            }
3384
3385            // Decode unknown envelopes for gaps in ordinals.
3386            while _next_ordinal_to_read < 3 {
3387                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3388                _next_ordinal_to_read += 1;
3389                next_offset += envelope_size;
3390            }
3391
3392            let next_out_of_line = decoder.next_out_of_line();
3393            let handles_before = decoder.remaining_handles();
3394            if let Some((inlined, num_bytes, num_handles)) =
3395                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3396            {
3397                let member_inline_size = <fidl::encoding::UnboundedVector<
3398                    fidl_fuchsia_driver_framework__common::CompositeParent,
3399                > as fidl::encoding::TypeMarker>::inline_size(
3400                    decoder.context
3401                );
3402                if inlined != (member_inline_size <= 4) {
3403                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3404                }
3405                let inner_offset;
3406                let mut inner_depth = depth.clone();
3407                if inlined {
3408                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3409                    inner_offset = next_offset;
3410                } else {
3411                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3412                    inner_depth.increment()?;
3413                }
3414                let val_ref = self.composite_parents.get_or_insert_with(|| {
3415                    fidl::new_empty!(
3416                        fidl::encoding::UnboundedVector<
3417                            fidl_fuchsia_driver_framework__common::CompositeParent,
3418                        >,
3419                        D
3420                    )
3421                });
3422                fidl::decode!(
3423                    fidl::encoding::UnboundedVector<
3424                        fidl_fuchsia_driver_framework__common::CompositeParent,
3425                    >,
3426                    D,
3427                    val_ref,
3428                    decoder,
3429                    inner_offset,
3430                    inner_depth
3431                )?;
3432                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3433                {
3434                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3435                }
3436                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3437                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3438                }
3439            }
3440
3441            next_offset += envelope_size;
3442
3443            // Decode the remaining unknown envelopes.
3444            while next_offset < end_offset {
3445                _next_ordinal_to_read += 1;
3446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3447                next_offset += envelope_size;
3448            }
3449
3450            Ok(())
3451        }
3452    }
3453
3454    impl NodeInfo {
3455        #[inline(always)]
3456        fn max_ordinal_present(&self) -> u64 {
3457            if let Some(_) = self.bus_topology {
3458                return 11;
3459            }
3460            if let Some(_) = self.quarantined {
3461                return 10;
3462            }
3463            if let Some(_) = self.offer_list {
3464                return 9;
3465            }
3466            if let Some(_) = self.node_property_list {
3467                return 8;
3468            }
3469            if let Some(_) = self.moniker {
3470                return 7;
3471            }
3472            if let Some(_) = self.bound_driver_url {
3473                return 5;
3474            }
3475            if let Some(_) = self.driver_host_koid {
3476                return 4;
3477            }
3478            if let Some(_) = self.child_ids {
3479                return 3;
3480            }
3481            if let Some(_) = self.parent_ids {
3482                return 2;
3483            }
3484            if let Some(_) = self.id {
3485                return 1;
3486            }
3487            0
3488        }
3489    }
3490
3491    impl fidl::encoding::ValueTypeMarker for NodeInfo {
3492        type Borrowed<'a> = &'a Self;
3493        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3494            value
3495        }
3496    }
3497
3498    unsafe impl fidl::encoding::TypeMarker for NodeInfo {
3499        type Owned = Self;
3500
3501        #[inline(always)]
3502        fn inline_align(_context: fidl::encoding::Context) -> usize {
3503            8
3504        }
3505
3506        #[inline(always)]
3507        fn inline_size(_context: fidl::encoding::Context) -> usize {
3508            16
3509        }
3510    }
3511
3512    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeInfo, D> for &NodeInfo {
3513        unsafe fn encode(
3514            self,
3515            encoder: &mut fidl::encoding::Encoder<'_, D>,
3516            offset: usize,
3517            mut depth: fidl::encoding::Depth,
3518        ) -> fidl::Result<()> {
3519            encoder.debug_check_bounds::<NodeInfo>(offset);
3520            // Vector header
3521            let max_ordinal: u64 = self.max_ordinal_present();
3522            encoder.write_num(max_ordinal, offset);
3523            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3524            // Calling encoder.out_of_line_offset(0) is not allowed.
3525            if max_ordinal == 0 {
3526                return Ok(());
3527            }
3528            depth.increment()?;
3529            let envelope_size = 8;
3530            let bytes_len = max_ordinal as usize * envelope_size;
3531            #[allow(unused_variables)]
3532            let offset = encoder.out_of_line_offset(bytes_len);
3533            let mut _prev_end_offset: usize = 0;
3534            if 1 > max_ordinal {
3535                return Ok(());
3536            }
3537
3538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3539            // are envelope_size bytes.
3540            let cur_offset: usize = (1 - 1) * envelope_size;
3541
3542            // Zero reserved fields.
3543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3544
3545            // Safety:
3546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3548            //   envelope_size bytes, there is always sufficient room.
3549            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3550                self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3551                encoder,
3552                offset + cur_offset,
3553                depth,
3554            )?;
3555
3556            _prev_end_offset = cur_offset + envelope_size;
3557            if 2 > max_ordinal {
3558                return Ok(());
3559            }
3560
3561            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3562            // are envelope_size bytes.
3563            let cur_offset: usize = (2 - 1) * envelope_size;
3564
3565            // Zero reserved fields.
3566            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3567
3568            // Safety:
3569            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3570            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3571            //   envelope_size bytes, there is always sufficient room.
3572            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3573            self.parent_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3574            encoder, offset + cur_offset, depth
3575        )?;
3576
3577            _prev_end_offset = cur_offset + envelope_size;
3578            if 3 > max_ordinal {
3579                return Ok(());
3580            }
3581
3582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3583            // are envelope_size bytes.
3584            let cur_offset: usize = (3 - 1) * envelope_size;
3585
3586            // Zero reserved fields.
3587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3588
3589            // Safety:
3590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3592            //   envelope_size bytes, there is always sufficient room.
3593            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3594            self.child_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3595            encoder, offset + cur_offset, depth
3596        )?;
3597
3598            _prev_end_offset = cur_offset + envelope_size;
3599            if 4 > max_ordinal {
3600                return Ok(());
3601            }
3602
3603            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3604            // are envelope_size bytes.
3605            let cur_offset: usize = (4 - 1) * envelope_size;
3606
3607            // Zero reserved fields.
3608            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3609
3610            // Safety:
3611            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3612            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3613            //   envelope_size bytes, there is always sufficient room.
3614            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3615                self.driver_host_koid
3616                    .as_ref()
3617                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3618                encoder,
3619                offset + cur_offset,
3620                depth,
3621            )?;
3622
3623            _prev_end_offset = cur_offset + envelope_size;
3624            if 5 > max_ordinal {
3625                return Ok(());
3626            }
3627
3628            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3629            // are envelope_size bytes.
3630            let cur_offset: usize = (5 - 1) * envelope_size;
3631
3632            // Zero reserved fields.
3633            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3634
3635            // Safety:
3636            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3637            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3638            //   envelope_size bytes, there is always sufficient room.
3639            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3640            self.bound_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3641            encoder, offset + cur_offset, depth
3642        )?;
3643
3644            _prev_end_offset = cur_offset + envelope_size;
3645            if 7 > max_ordinal {
3646                return Ok(());
3647            }
3648
3649            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3650            // are envelope_size bytes.
3651            let cur_offset: usize = (7 - 1) * envelope_size;
3652
3653            // Zero reserved fields.
3654            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3655
3656            // Safety:
3657            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3658            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3659            //   envelope_size bytes, there is always sufficient room.
3660            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3661            self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3662            encoder, offset + cur_offset, depth
3663        )?;
3664
3665            _prev_end_offset = cur_offset + envelope_size;
3666            if 8 > max_ordinal {
3667                return Ok(());
3668            }
3669
3670            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3671            // are envelope_size bytes.
3672            let cur_offset: usize = (8 - 1) * envelope_size;
3673
3674            // Zero reserved fields.
3675            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3676
3677            // Safety:
3678            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3679            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3680            //   envelope_size bytes, there is always sufficient room.
3681            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D>(
3682            self.node_property_list.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3683            encoder, offset + cur_offset, depth
3684        )?;
3685
3686            _prev_end_offset = cur_offset + envelope_size;
3687            if 9 > max_ordinal {
3688                return Ok(());
3689            }
3690
3691            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3692            // are envelope_size bytes.
3693            let cur_offset: usize = (9 - 1) * envelope_size;
3694
3695            // Zero reserved fields.
3696            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3697
3698            // Safety:
3699            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3700            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3701            //   envelope_size bytes, there is always sufficient room.
3702            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>, D>(
3703            self.offer_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer> as fidl::encoding::ValueTypeMarker>::borrow),
3704            encoder, offset + cur_offset, depth
3705        )?;
3706
3707            _prev_end_offset = cur_offset + envelope_size;
3708            if 10 > max_ordinal {
3709                return Ok(());
3710            }
3711
3712            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3713            // are envelope_size bytes.
3714            let cur_offset: usize = (10 - 1) * envelope_size;
3715
3716            // Zero reserved fields.
3717            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3718
3719            // Safety:
3720            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3721            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3722            //   envelope_size bytes, there is always sufficient room.
3723            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3724                self.quarantined.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3725                encoder,
3726                offset + cur_offset,
3727                depth,
3728            )?;
3729
3730            _prev_end_offset = cur_offset + envelope_size;
3731            if 11 > max_ordinal {
3732                return Ok(());
3733            }
3734
3735            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3736            // are envelope_size bytes.
3737            let cur_offset: usize = (11 - 1) * envelope_size;
3738
3739            // Zero reserved fields.
3740            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3741
3742            // Safety:
3743            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3744            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3745            //   envelope_size bytes, there is always sufficient room.
3746            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D>(
3747            self.bus_topology.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20> as fidl::encoding::ValueTypeMarker>::borrow),
3748            encoder, offset + cur_offset, depth
3749        )?;
3750
3751            _prev_end_offset = cur_offset + envelope_size;
3752
3753            Ok(())
3754        }
3755    }
3756
3757    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeInfo {
3758        #[inline(always)]
3759        fn new_empty() -> Self {
3760            Self::default()
3761        }
3762
3763        unsafe fn decode(
3764            &mut self,
3765            decoder: &mut fidl::encoding::Decoder<'_, D>,
3766            offset: usize,
3767            mut depth: fidl::encoding::Depth,
3768        ) -> fidl::Result<()> {
3769            decoder.debug_check_bounds::<Self>(offset);
3770            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3771                None => return Err(fidl::Error::NotNullable),
3772                Some(len) => len,
3773            };
3774            // Calling decoder.out_of_line_offset(0) is not allowed.
3775            if len == 0 {
3776                return Ok(());
3777            };
3778            depth.increment()?;
3779            let envelope_size = 8;
3780            let bytes_len = len * envelope_size;
3781            let offset = decoder.out_of_line_offset(bytes_len)?;
3782            // Decode the envelope for each type.
3783            let mut _next_ordinal_to_read = 0;
3784            let mut next_offset = offset;
3785            let end_offset = offset + bytes_len;
3786            _next_ordinal_to_read += 1;
3787            if next_offset >= end_offset {
3788                return Ok(());
3789            }
3790
3791            // Decode unknown envelopes for gaps in ordinals.
3792            while _next_ordinal_to_read < 1 {
3793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3794                _next_ordinal_to_read += 1;
3795                next_offset += envelope_size;
3796            }
3797
3798            let next_out_of_line = decoder.next_out_of_line();
3799            let handles_before = decoder.remaining_handles();
3800            if let Some((inlined, num_bytes, num_handles)) =
3801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3802            {
3803                let member_inline_size =
3804                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3805                if inlined != (member_inline_size <= 4) {
3806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3807                }
3808                let inner_offset;
3809                let mut inner_depth = depth.clone();
3810                if inlined {
3811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3812                    inner_offset = next_offset;
3813                } else {
3814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3815                    inner_depth.increment()?;
3816                }
3817                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3818                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3820                {
3821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3822                }
3823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3825                }
3826            }
3827
3828            next_offset += envelope_size;
3829            _next_ordinal_to_read += 1;
3830            if next_offset >= end_offset {
3831                return Ok(());
3832            }
3833
3834            // Decode unknown envelopes for gaps in ordinals.
3835            while _next_ordinal_to_read < 2 {
3836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3837                _next_ordinal_to_read += 1;
3838                next_offset += envelope_size;
3839            }
3840
3841            let next_out_of_line = decoder.next_out_of_line();
3842            let handles_before = decoder.remaining_handles();
3843            if let Some((inlined, num_bytes, num_handles)) =
3844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3845            {
3846                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3847                if inlined != (member_inline_size <= 4) {
3848                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3849                }
3850                let inner_offset;
3851                let mut inner_depth = depth.clone();
3852                if inlined {
3853                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3854                    inner_offset = next_offset;
3855                } else {
3856                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3857                    inner_depth.increment()?;
3858                }
3859                let val_ref = self.parent_ids.get_or_insert_with(|| {
3860                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
3861                });
3862                fidl::decode!(
3863                    fidl::encoding::UnboundedVector<u64>,
3864                    D,
3865                    val_ref,
3866                    decoder,
3867                    inner_offset,
3868                    inner_depth
3869                )?;
3870                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3871                {
3872                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3873                }
3874                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3875                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3876                }
3877            }
3878
3879            next_offset += envelope_size;
3880            _next_ordinal_to_read += 1;
3881            if next_offset >= end_offset {
3882                return Ok(());
3883            }
3884
3885            // Decode unknown envelopes for gaps in ordinals.
3886            while _next_ordinal_to_read < 3 {
3887                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3888                _next_ordinal_to_read += 1;
3889                next_offset += envelope_size;
3890            }
3891
3892            let next_out_of_line = decoder.next_out_of_line();
3893            let handles_before = decoder.remaining_handles();
3894            if let Some((inlined, num_bytes, num_handles)) =
3895                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3896            {
3897                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3898                if inlined != (member_inline_size <= 4) {
3899                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3900                }
3901                let inner_offset;
3902                let mut inner_depth = depth.clone();
3903                if inlined {
3904                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3905                    inner_offset = next_offset;
3906                } else {
3907                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3908                    inner_depth.increment()?;
3909                }
3910                let val_ref = self.child_ids.get_or_insert_with(|| {
3911                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
3912                });
3913                fidl::decode!(
3914                    fidl::encoding::UnboundedVector<u64>,
3915                    D,
3916                    val_ref,
3917                    decoder,
3918                    inner_offset,
3919                    inner_depth
3920                )?;
3921                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3922                {
3923                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3924                }
3925                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3926                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3927                }
3928            }
3929
3930            next_offset += envelope_size;
3931            _next_ordinal_to_read += 1;
3932            if next_offset >= end_offset {
3933                return Ok(());
3934            }
3935
3936            // Decode unknown envelopes for gaps in ordinals.
3937            while _next_ordinal_to_read < 4 {
3938                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3939                _next_ordinal_to_read += 1;
3940                next_offset += envelope_size;
3941            }
3942
3943            let next_out_of_line = decoder.next_out_of_line();
3944            let handles_before = decoder.remaining_handles();
3945            if let Some((inlined, num_bytes, num_handles)) =
3946                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3947            {
3948                let member_inline_size =
3949                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3950                if inlined != (member_inline_size <= 4) {
3951                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3952                }
3953                let inner_offset;
3954                let mut inner_depth = depth.clone();
3955                if inlined {
3956                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3957                    inner_offset = next_offset;
3958                } else {
3959                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3960                    inner_depth.increment()?;
3961                }
3962                let val_ref = self.driver_host_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
3963                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3964                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3965                {
3966                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3967                }
3968                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3969                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3970                }
3971            }
3972
3973            next_offset += envelope_size;
3974            _next_ordinal_to_read += 1;
3975            if next_offset >= end_offset {
3976                return Ok(());
3977            }
3978
3979            // Decode unknown envelopes for gaps in ordinals.
3980            while _next_ordinal_to_read < 5 {
3981                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3982                _next_ordinal_to_read += 1;
3983                next_offset += envelope_size;
3984            }
3985
3986            let next_out_of_line = decoder.next_out_of_line();
3987            let handles_before = decoder.remaining_handles();
3988            if let Some((inlined, num_bytes, num_handles)) =
3989                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3990            {
3991                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3992                if inlined != (member_inline_size <= 4) {
3993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3994                }
3995                let inner_offset;
3996                let mut inner_depth = depth.clone();
3997                if inlined {
3998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3999                    inner_offset = next_offset;
4000                } else {
4001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4002                    inner_depth.increment()?;
4003                }
4004                let val_ref = self.bound_driver_url.get_or_insert_with(|| {
4005                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4006                });
4007                fidl::decode!(
4008                    fidl::encoding::BoundedString<4096>,
4009                    D,
4010                    val_ref,
4011                    decoder,
4012                    inner_offset,
4013                    inner_depth
4014                )?;
4015                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4016                {
4017                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4018                }
4019                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4020                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4021                }
4022            }
4023
4024            next_offset += envelope_size;
4025            _next_ordinal_to_read += 1;
4026            if next_offset >= end_offset {
4027                return Ok(());
4028            }
4029
4030            // Decode unknown envelopes for gaps in ordinals.
4031            while _next_ordinal_to_read < 7 {
4032                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4033                _next_ordinal_to_read += 1;
4034                next_offset += envelope_size;
4035            }
4036
4037            let next_out_of_line = decoder.next_out_of_line();
4038            let handles_before = decoder.remaining_handles();
4039            if let Some((inlined, num_bytes, num_handles)) =
4040                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4041            {
4042                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4043                if inlined != (member_inline_size <= 4) {
4044                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4045                }
4046                let inner_offset;
4047                let mut inner_depth = depth.clone();
4048                if inlined {
4049                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4050                    inner_offset = next_offset;
4051                } else {
4052                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4053                    inner_depth.increment()?;
4054                }
4055                let val_ref = self.moniker.get_or_insert_with(|| {
4056                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4057                });
4058                fidl::decode!(
4059                    fidl::encoding::BoundedString<1024>,
4060                    D,
4061                    val_ref,
4062                    decoder,
4063                    inner_offset,
4064                    inner_depth
4065                )?;
4066                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4067                {
4068                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4069                }
4070                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4071                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4072                }
4073            }
4074
4075            next_offset += envelope_size;
4076            _next_ordinal_to_read += 1;
4077            if next_offset >= end_offset {
4078                return Ok(());
4079            }
4080
4081            // Decode unknown envelopes for gaps in ordinals.
4082            while _next_ordinal_to_read < 8 {
4083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4084                _next_ordinal_to_read += 1;
4085                next_offset += envelope_size;
4086            }
4087
4088            let next_out_of_line = decoder.next_out_of_line();
4089            let handles_before = decoder.remaining_handles();
4090            if let Some((inlined, num_bytes, num_handles)) =
4091                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4092            {
4093                let member_inline_size = <fidl::encoding::Vector<
4094                    fidl_fuchsia_driver_framework__common::NodeProperty,
4095                    64,
4096                > as fidl::encoding::TypeMarker>::inline_size(
4097                    decoder.context
4098                );
4099                if inlined != (member_inline_size <= 4) {
4100                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4101                }
4102                let inner_offset;
4103                let mut inner_depth = depth.clone();
4104                if inlined {
4105                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4106                    inner_offset = next_offset;
4107                } else {
4108                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4109                    inner_depth.increment()?;
4110                }
4111                let val_ref =
4112                self.node_property_list.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D));
4113                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4114                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4115                {
4116                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4117                }
4118                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4119                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4120                }
4121            }
4122
4123            next_offset += envelope_size;
4124            _next_ordinal_to_read += 1;
4125            if next_offset >= end_offset {
4126                return Ok(());
4127            }
4128
4129            // Decode unknown envelopes for gaps in ordinals.
4130            while _next_ordinal_to_read < 9 {
4131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4132                _next_ordinal_to_read += 1;
4133                next_offset += envelope_size;
4134            }
4135
4136            let next_out_of_line = decoder.next_out_of_line();
4137            let handles_before = decoder.remaining_handles();
4138            if let Some((inlined, num_bytes, num_handles)) =
4139                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4140            {
4141                let member_inline_size = <fidl::encoding::UnboundedVector<
4142                    fidl_fuchsia_component_decl__common::Offer,
4143                > as fidl::encoding::TypeMarker>::inline_size(
4144                    decoder.context
4145                );
4146                if inlined != (member_inline_size <= 4) {
4147                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4148                }
4149                let inner_offset;
4150                let mut inner_depth = depth.clone();
4151                if inlined {
4152                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4153                    inner_offset = next_offset;
4154                } else {
4155                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4156                    inner_depth.increment()?;
4157                }
4158                let val_ref = self.offer_list.get_or_insert_with(|| {
4159                    fidl::new_empty!(
4160                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>,
4161                        D
4162                    )
4163                });
4164                fidl::decode!(
4165                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>,
4166                    D,
4167                    val_ref,
4168                    decoder,
4169                    inner_offset,
4170                    inner_depth
4171                )?;
4172                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4173                {
4174                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4175                }
4176                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4177                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4178                }
4179            }
4180
4181            next_offset += envelope_size;
4182            _next_ordinal_to_read += 1;
4183            if next_offset >= end_offset {
4184                return Ok(());
4185            }
4186
4187            // Decode unknown envelopes for gaps in ordinals.
4188            while _next_ordinal_to_read < 10 {
4189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4190                _next_ordinal_to_read += 1;
4191                next_offset += envelope_size;
4192            }
4193
4194            let next_out_of_line = decoder.next_out_of_line();
4195            let handles_before = decoder.remaining_handles();
4196            if let Some((inlined, num_bytes, num_handles)) =
4197                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4198            {
4199                let member_inline_size =
4200                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4201                if inlined != (member_inline_size <= 4) {
4202                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4203                }
4204                let inner_offset;
4205                let mut inner_depth = depth.clone();
4206                if inlined {
4207                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4208                    inner_offset = next_offset;
4209                } else {
4210                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4211                    inner_depth.increment()?;
4212                }
4213                let val_ref = self.quarantined.get_or_insert_with(|| fidl::new_empty!(bool, D));
4214                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4215                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4216                {
4217                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4218                }
4219                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4220                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4221                }
4222            }
4223
4224            next_offset += envelope_size;
4225            _next_ordinal_to_read += 1;
4226            if next_offset >= end_offset {
4227                return Ok(());
4228            }
4229
4230            // Decode unknown envelopes for gaps in ordinals.
4231            while _next_ordinal_to_read < 11 {
4232                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4233                _next_ordinal_to_read += 1;
4234                next_offset += envelope_size;
4235            }
4236
4237            let next_out_of_line = decoder.next_out_of_line();
4238            let handles_before = decoder.remaining_handles();
4239            if let Some((inlined, num_bytes, num_handles)) =
4240                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4241            {
4242                let member_inline_size = <fidl::encoding::Vector<
4243                    fidl_fuchsia_driver_framework__common::BusInfo,
4244                    20,
4245                > as fidl::encoding::TypeMarker>::inline_size(
4246                    decoder.context
4247                );
4248                if inlined != (member_inline_size <= 4) {
4249                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4250                }
4251                let inner_offset;
4252                let mut inner_depth = depth.clone();
4253                if inlined {
4254                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4255                    inner_offset = next_offset;
4256                } else {
4257                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4258                    inner_depth.increment()?;
4259                }
4260                let val_ref =
4261                self.bus_topology.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D));
4262                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D, val_ref, decoder, inner_offset, inner_depth)?;
4263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4264                {
4265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4266                }
4267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4269                }
4270            }
4271
4272            next_offset += envelope_size;
4273
4274            // Decode the remaining unknown envelopes.
4275            while next_offset < end_offset {
4276                _next_ordinal_to_read += 1;
4277                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4278                next_offset += envelope_size;
4279            }
4280
4281            Ok(())
4282        }
4283    }
4284
4285    impl TestNodeAddArgs {
4286        #[inline(always)]
4287        fn max_ordinal_present(&self) -> u64 {
4288            if let Some(_) = self.properties {
4289                return 2;
4290            }
4291            if let Some(_) = self.name {
4292                return 1;
4293            }
4294            0
4295        }
4296    }
4297
4298    impl fidl::encoding::ValueTypeMarker for TestNodeAddArgs {
4299        type Borrowed<'a> = &'a Self;
4300        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4301            value
4302        }
4303    }
4304
4305    unsafe impl fidl::encoding::TypeMarker for TestNodeAddArgs {
4306        type Owned = Self;
4307
4308        #[inline(always)]
4309        fn inline_align(_context: fidl::encoding::Context) -> usize {
4310            8
4311        }
4312
4313        #[inline(always)]
4314        fn inline_size(_context: fidl::encoding::Context) -> usize {
4315            16
4316        }
4317    }
4318
4319    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TestNodeAddArgs, D>
4320        for &TestNodeAddArgs
4321    {
4322        unsafe fn encode(
4323            self,
4324            encoder: &mut fidl::encoding::Encoder<'_, D>,
4325            offset: usize,
4326            mut depth: fidl::encoding::Depth,
4327        ) -> fidl::Result<()> {
4328            encoder.debug_check_bounds::<TestNodeAddArgs>(offset);
4329            // Vector header
4330            let max_ordinal: u64 = self.max_ordinal_present();
4331            encoder.write_num(max_ordinal, offset);
4332            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4333            // Calling encoder.out_of_line_offset(0) is not allowed.
4334            if max_ordinal == 0 {
4335                return Ok(());
4336            }
4337            depth.increment()?;
4338            let envelope_size = 8;
4339            let bytes_len = max_ordinal as usize * envelope_size;
4340            #[allow(unused_variables)]
4341            let offset = encoder.out_of_line_offset(bytes_len);
4342            let mut _prev_end_offset: usize = 0;
4343            if 1 > max_ordinal {
4344                return Ok(());
4345            }
4346
4347            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4348            // are envelope_size bytes.
4349            let cur_offset: usize = (1 - 1) * envelope_size;
4350
4351            // Zero reserved fields.
4352            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4353
4354            // Safety:
4355            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4356            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4357            //   envelope_size bytes, there is always sufficient room.
4358            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4359            self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4360            encoder, offset + cur_offset, depth
4361        )?;
4362
4363            _prev_end_offset = cur_offset + envelope_size;
4364            if 2 > max_ordinal {
4365                return Ok(());
4366            }
4367
4368            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4369            // are envelope_size bytes.
4370            let cur_offset: usize = (2 - 1) * envelope_size;
4371
4372            // Zero reserved fields.
4373            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4374
4375            // Safety:
4376            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4377            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4378            //   envelope_size bytes, there is always sufficient room.
4379            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D>(
4380            self.properties.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4381            encoder, offset + cur_offset, depth
4382        )?;
4383
4384            _prev_end_offset = cur_offset + envelope_size;
4385
4386            Ok(())
4387        }
4388    }
4389
4390    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TestNodeAddArgs {
4391        #[inline(always)]
4392        fn new_empty() -> Self {
4393            Self::default()
4394        }
4395
4396        unsafe fn decode(
4397            &mut self,
4398            decoder: &mut fidl::encoding::Decoder<'_, D>,
4399            offset: usize,
4400            mut depth: fidl::encoding::Depth,
4401        ) -> fidl::Result<()> {
4402            decoder.debug_check_bounds::<Self>(offset);
4403            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4404                None => return Err(fidl::Error::NotNullable),
4405                Some(len) => len,
4406            };
4407            // Calling decoder.out_of_line_offset(0) is not allowed.
4408            if len == 0 {
4409                return Ok(());
4410            };
4411            depth.increment()?;
4412            let envelope_size = 8;
4413            let bytes_len = len * envelope_size;
4414            let offset = decoder.out_of_line_offset(bytes_len)?;
4415            // Decode the envelope for each type.
4416            let mut _next_ordinal_to_read = 0;
4417            let mut next_offset = offset;
4418            let end_offset = offset + bytes_len;
4419            _next_ordinal_to_read += 1;
4420            if next_offset >= end_offset {
4421                return Ok(());
4422            }
4423
4424            // Decode unknown envelopes for gaps in ordinals.
4425            while _next_ordinal_to_read < 1 {
4426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4427                _next_ordinal_to_read += 1;
4428                next_offset += envelope_size;
4429            }
4430
4431            let next_out_of_line = decoder.next_out_of_line();
4432            let handles_before = decoder.remaining_handles();
4433            if let Some((inlined, num_bytes, num_handles)) =
4434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4435            {
4436                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4437                if inlined != (member_inline_size <= 4) {
4438                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4439                }
4440                let inner_offset;
4441                let mut inner_depth = depth.clone();
4442                if inlined {
4443                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4444                    inner_offset = next_offset;
4445                } else {
4446                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4447                    inner_depth.increment()?;
4448                }
4449                let val_ref = self.name.get_or_insert_with(|| {
4450                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4451                });
4452                fidl::decode!(
4453                    fidl::encoding::BoundedString<1024>,
4454                    D,
4455                    val_ref,
4456                    decoder,
4457                    inner_offset,
4458                    inner_depth
4459                )?;
4460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4461                {
4462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4463                }
4464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4466                }
4467            }
4468
4469            next_offset += envelope_size;
4470            _next_ordinal_to_read += 1;
4471            if next_offset >= end_offset {
4472                return Ok(());
4473            }
4474
4475            // Decode unknown envelopes for gaps in ordinals.
4476            while _next_ordinal_to_read < 2 {
4477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4478                _next_ordinal_to_read += 1;
4479                next_offset += envelope_size;
4480            }
4481
4482            let next_out_of_line = decoder.next_out_of_line();
4483            let handles_before = decoder.remaining_handles();
4484            if let Some((inlined, num_bytes, num_handles)) =
4485                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4486            {
4487                let member_inline_size = <fidl::encoding::Vector<
4488                    fidl_fuchsia_driver_framework__common::NodeProperty,
4489                    64,
4490                > as fidl::encoding::TypeMarker>::inline_size(
4491                    decoder.context
4492                );
4493                if inlined != (member_inline_size <= 4) {
4494                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4495                }
4496                let inner_offset;
4497                let mut inner_depth = depth.clone();
4498                if inlined {
4499                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4500                    inner_offset = next_offset;
4501                } else {
4502                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4503                    inner_depth.increment()?;
4504                }
4505                let val_ref =
4506                self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D));
4507                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4508                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4509                {
4510                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4511                }
4512                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4513                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4514                }
4515            }
4516
4517            next_offset += envelope_size;
4518
4519            // Decode the remaining unknown envelopes.
4520            while next_offset < end_offset {
4521                _next_ordinal_to_read += 1;
4522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4523                next_offset += envelope_size;
4524            }
4525
4526            Ok(())
4527        }
4528    }
4529
4530    impl ThreadInfo {
4531        #[inline(always)]
4532        fn max_ordinal_present(&self) -> u64 {
4533            if let Some(_) = self.scheduler_role {
4534                return 3;
4535            }
4536            if let Some(_) = self.name {
4537                return 2;
4538            }
4539            if let Some(_) = self.koid {
4540                return 1;
4541            }
4542            0
4543        }
4544    }
4545
4546    impl fidl::encoding::ValueTypeMarker for ThreadInfo {
4547        type Borrowed<'a> = &'a Self;
4548        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4549            value
4550        }
4551    }
4552
4553    unsafe impl fidl::encoding::TypeMarker for ThreadInfo {
4554        type Owned = Self;
4555
4556        #[inline(always)]
4557        fn inline_align(_context: fidl::encoding::Context) -> usize {
4558            8
4559        }
4560
4561        #[inline(always)]
4562        fn inline_size(_context: fidl::encoding::Context) -> usize {
4563            16
4564        }
4565    }
4566
4567    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadInfo, D>
4568        for &ThreadInfo
4569    {
4570        unsafe fn encode(
4571            self,
4572            encoder: &mut fidl::encoding::Encoder<'_, D>,
4573            offset: usize,
4574            mut depth: fidl::encoding::Depth,
4575        ) -> fidl::Result<()> {
4576            encoder.debug_check_bounds::<ThreadInfo>(offset);
4577            // Vector header
4578            let max_ordinal: u64 = self.max_ordinal_present();
4579            encoder.write_num(max_ordinal, offset);
4580            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4581            // Calling encoder.out_of_line_offset(0) is not allowed.
4582            if max_ordinal == 0 {
4583                return Ok(());
4584            }
4585            depth.increment()?;
4586            let envelope_size = 8;
4587            let bytes_len = max_ordinal as usize * envelope_size;
4588            #[allow(unused_variables)]
4589            let offset = encoder.out_of_line_offset(bytes_len);
4590            let mut _prev_end_offset: usize = 0;
4591            if 1 > max_ordinal {
4592                return Ok(());
4593            }
4594
4595            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4596            // are envelope_size bytes.
4597            let cur_offset: usize = (1 - 1) * envelope_size;
4598
4599            // Zero reserved fields.
4600            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4601
4602            // Safety:
4603            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4604            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4605            //   envelope_size bytes, there is always sufficient room.
4606            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4607                self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4608                encoder,
4609                offset + cur_offset,
4610                depth,
4611            )?;
4612
4613            _prev_end_offset = cur_offset + envelope_size;
4614            if 2 > max_ordinal {
4615                return Ok(());
4616            }
4617
4618            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4619            // are envelope_size bytes.
4620            let cur_offset: usize = (2 - 1) * envelope_size;
4621
4622            // Zero reserved fields.
4623            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4624
4625            // Safety:
4626            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4627            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4628            //   envelope_size bytes, there is always sufficient room.
4629            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4630                self.name.as_ref().map(
4631                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4632                ),
4633                encoder,
4634                offset + cur_offset,
4635                depth,
4636            )?;
4637
4638            _prev_end_offset = cur_offset + envelope_size;
4639            if 3 > max_ordinal {
4640                return Ok(());
4641            }
4642
4643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4644            // are envelope_size bytes.
4645            let cur_offset: usize = (3 - 1) * envelope_size;
4646
4647            // Zero reserved fields.
4648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4649
4650            // Safety:
4651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4653            //   envelope_size bytes, there is always sufficient room.
4654            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4655                self.scheduler_role.as_ref().map(
4656                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4657                ),
4658                encoder,
4659                offset + cur_offset,
4660                depth,
4661            )?;
4662
4663            _prev_end_offset = cur_offset + envelope_size;
4664
4665            Ok(())
4666        }
4667    }
4668
4669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadInfo {
4670        #[inline(always)]
4671        fn new_empty() -> Self {
4672            Self::default()
4673        }
4674
4675        unsafe fn decode(
4676            &mut self,
4677            decoder: &mut fidl::encoding::Decoder<'_, D>,
4678            offset: usize,
4679            mut depth: fidl::encoding::Depth,
4680        ) -> fidl::Result<()> {
4681            decoder.debug_check_bounds::<Self>(offset);
4682            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4683                None => return Err(fidl::Error::NotNullable),
4684                Some(len) => len,
4685            };
4686            // Calling decoder.out_of_line_offset(0) is not allowed.
4687            if len == 0 {
4688                return Ok(());
4689            };
4690            depth.increment()?;
4691            let envelope_size = 8;
4692            let bytes_len = len * envelope_size;
4693            let offset = decoder.out_of_line_offset(bytes_len)?;
4694            // Decode the envelope for each type.
4695            let mut _next_ordinal_to_read = 0;
4696            let mut next_offset = offset;
4697            let end_offset = offset + bytes_len;
4698            _next_ordinal_to_read += 1;
4699            if next_offset >= end_offset {
4700                return Ok(());
4701            }
4702
4703            // Decode unknown envelopes for gaps in ordinals.
4704            while _next_ordinal_to_read < 1 {
4705                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4706                _next_ordinal_to_read += 1;
4707                next_offset += envelope_size;
4708            }
4709
4710            let next_out_of_line = decoder.next_out_of_line();
4711            let handles_before = decoder.remaining_handles();
4712            if let Some((inlined, num_bytes, num_handles)) =
4713                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4714            {
4715                let member_inline_size =
4716                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4717                if inlined != (member_inline_size <= 4) {
4718                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4719                }
4720                let inner_offset;
4721                let mut inner_depth = depth.clone();
4722                if inlined {
4723                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4724                    inner_offset = next_offset;
4725                } else {
4726                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4727                    inner_depth.increment()?;
4728                }
4729                let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4730                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4731                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4732                {
4733                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4734                }
4735                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4736                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4737                }
4738            }
4739
4740            next_offset += envelope_size;
4741            _next_ordinal_to_read += 1;
4742            if next_offset >= end_offset {
4743                return Ok(());
4744            }
4745
4746            // Decode unknown envelopes for gaps in ordinals.
4747            while _next_ordinal_to_read < 2 {
4748                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4749                _next_ordinal_to_read += 1;
4750                next_offset += envelope_size;
4751            }
4752
4753            let next_out_of_line = decoder.next_out_of_line();
4754            let handles_before = decoder.remaining_handles();
4755            if let Some((inlined, num_bytes, num_handles)) =
4756                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4757            {
4758                let member_inline_size =
4759                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4760                        decoder.context,
4761                    );
4762                if inlined != (member_inline_size <= 4) {
4763                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4764                }
4765                let inner_offset;
4766                let mut inner_depth = depth.clone();
4767                if inlined {
4768                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4769                    inner_offset = next_offset;
4770                } else {
4771                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4772                    inner_depth.increment()?;
4773                }
4774                let val_ref = self
4775                    .name
4776                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4777                fidl::decode!(
4778                    fidl::encoding::UnboundedString,
4779                    D,
4780                    val_ref,
4781                    decoder,
4782                    inner_offset,
4783                    inner_depth
4784                )?;
4785                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4786                {
4787                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4788                }
4789                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4790                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4791                }
4792            }
4793
4794            next_offset += envelope_size;
4795            _next_ordinal_to_read += 1;
4796            if next_offset >= end_offset {
4797                return Ok(());
4798            }
4799
4800            // Decode unknown envelopes for gaps in ordinals.
4801            while _next_ordinal_to_read < 3 {
4802                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4803                _next_ordinal_to_read += 1;
4804                next_offset += envelope_size;
4805            }
4806
4807            let next_out_of_line = decoder.next_out_of_line();
4808            let handles_before = decoder.remaining_handles();
4809            if let Some((inlined, num_bytes, num_handles)) =
4810                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4811            {
4812                let member_inline_size =
4813                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4814                        decoder.context,
4815                    );
4816                if inlined != (member_inline_size <= 4) {
4817                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4818                }
4819                let inner_offset;
4820                let mut inner_depth = depth.clone();
4821                if inlined {
4822                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4823                    inner_offset = next_offset;
4824                } else {
4825                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4826                    inner_depth.increment()?;
4827                }
4828                let val_ref = self
4829                    .scheduler_role
4830                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4831                fidl::decode!(
4832                    fidl::encoding::UnboundedString,
4833                    D,
4834                    val_ref,
4835                    decoder,
4836                    inner_offset,
4837                    inner_depth
4838                )?;
4839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4840                {
4841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4842                }
4843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4845                }
4846            }
4847
4848            next_offset += envelope_size;
4849
4850            // Decode the remaining unknown envelopes.
4851            while next_offset < end_offset {
4852                _next_ordinal_to_read += 1;
4853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4854                next_offset += envelope_size;
4855            }
4856
4857            Ok(())
4858        }
4859    }
4860
4861    impl fidl::encoding::ValueTypeMarker for CompositeInfo {
4862        type Borrowed<'a> = &'a Self;
4863        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4864            value
4865        }
4866    }
4867
4868    unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
4869        type Owned = Self;
4870
4871        #[inline(always)]
4872        fn inline_align(_context: fidl::encoding::Context) -> usize {
4873            8
4874        }
4875
4876        #[inline(always)]
4877        fn inline_size(_context: fidl::encoding::Context) -> usize {
4878            16
4879        }
4880    }
4881
4882    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
4883        for &CompositeInfo
4884    {
4885        #[inline]
4886        unsafe fn encode(
4887            self,
4888            encoder: &mut fidl::encoding::Encoder<'_, D>,
4889            offset: usize,
4890            _depth: fidl::encoding::Depth,
4891        ) -> fidl::Result<()> {
4892            encoder.debug_check_bounds::<CompositeInfo>(offset);
4893            encoder.write_num::<u64>(self.ordinal(), offset);
4894            match self {
4895            CompositeInfo::Composite(ref val) => {
4896                fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework__common::CompositeInfo, D>(
4897                    <fidl_fuchsia_driver_framework__common::CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
4898                    encoder, offset + 8, _depth
4899                )
4900            }
4901        }
4902        }
4903    }
4904
4905    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
4906        #[inline(always)]
4907        fn new_empty() -> Self {
4908            Self::Composite(fidl::new_empty!(
4909                fidl_fuchsia_driver_framework__common::CompositeInfo,
4910                D
4911            ))
4912        }
4913
4914        #[inline]
4915        unsafe fn decode(
4916            &mut self,
4917            decoder: &mut fidl::encoding::Decoder<'_, D>,
4918            offset: usize,
4919            mut depth: fidl::encoding::Depth,
4920        ) -> fidl::Result<()> {
4921            decoder.debug_check_bounds::<Self>(offset);
4922            #[allow(unused_variables)]
4923            let next_out_of_line = decoder.next_out_of_line();
4924            let handles_before = decoder.remaining_handles();
4925            let (ordinal, inlined, num_bytes, num_handles) =
4926                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4927
4928            let member_inline_size = match ordinal {
4929            2 => <fidl_fuchsia_driver_framework__common::CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4930            _ => return Err(fidl::Error::UnknownUnionTag),
4931        };
4932
4933            if inlined != (member_inline_size <= 4) {
4934                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4935            }
4936            let _inner_offset;
4937            if inlined {
4938                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4939                _inner_offset = offset + 8;
4940            } else {
4941                depth.increment()?;
4942                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4943            }
4944            match ordinal {
4945                2 => {
4946                    #[allow(irrefutable_let_patterns)]
4947                    if let CompositeInfo::Composite(_) = self {
4948                        // Do nothing, read the value into the object
4949                    } else {
4950                        // Initialize `self` to the right variant
4951                        *self = CompositeInfo::Composite(fidl::new_empty!(
4952                            fidl_fuchsia_driver_framework__common::CompositeInfo,
4953                            D
4954                        ));
4955                    }
4956                    #[allow(irrefutable_let_patterns)]
4957                    if let CompositeInfo::Composite(ref mut val) = self {
4958                        fidl::decode!(
4959                            fidl_fuchsia_driver_framework__common::CompositeInfo,
4960                            D,
4961                            val,
4962                            decoder,
4963                            _inner_offset,
4964                            depth
4965                        )?;
4966                    } else {
4967                        unreachable!()
4968                    }
4969                }
4970                ordinal => panic!("unexpected ordinal {:?}", ordinal),
4971            }
4972            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4973                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4974            }
4975            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4976                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4977            }
4978            Ok(())
4979        }
4980    }
4981}