fidl_diagnostics_validate__common/
fidl_diagnostics_validate__common.rs

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