fidl_fuchsia_diagnostics__common/
fidl_fuchsia_diagnostics__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const COMPONENT_URL_ARG_NAME: &str = "$__url";
12
13/// The size 64 was chosen because entries in batches are handles to
14/// VMOs and there is a limit of 64 handles per fidl message.
15pub const MAXIMUM_ENTRIES_PER_BATCH: u16 = 64;
16
17///  The size bound of 1024 is a reasonably low size restriction that meets most
18///  canonical selectors we've ecountered.
19pub const MAXIMUM_RAW_SELECTOR_LENGTH: u16 = 1024;
20
21pub const MAX_DATA_HIERARCHY_DEPTH: u16 = 100;
22
23/// Max number of LogInterestSelectors that can be specified via a listener.
24pub const MAX_LOG_SELECTORS: u8 = 64;
25
26pub const MAX_MONIKER_SEGMENTS: u16 = 25;
27
28pub const MAX_STRING_SELECTOR_LENGTH: u16 = 1024;
29
30pub const MONIKER_ARG_NAME: &str = "$__moniker";
31
32pub const ROLLED_OUT_ARG_NAME: &str = "$__rolled_out";
33
34#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
35#[repr(u8)]
36pub enum DataType {
37    /// Complete inspect hierarchies on the system.
38    Inspect = 1,
39    /// Log streams on the system.
40    Logs = 3,
41}
42
43impl DataType {
44    #[inline]
45    pub fn from_primitive(prim: u8) -> Option<Self> {
46        match prim {
47            1 => Some(Self::Inspect),
48            3 => Some(Self::Logs),
49            _ => None,
50        }
51    }
52
53    #[inline]
54    pub const fn into_primitive(self) -> u8 {
55        self as u8
56    }
57}
58
59/// Enum used to specify the output format for
60/// Reader results.
61#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
62#[repr(u32)]
63pub enum Format {
64    /// Dump read results per the Diagnostics Json
65    /// Schema specifications.
66    Json = 1,
67    /// Dump read results per the Iquery text specifications.
68    Text = 2,
69    /// Dump read results per the Diagnostics CBOR
70    /// Schema specifications.
71    Cbor = 3,
72    /// Dump read results per the Diagnostics FXT
73    /// Schema specifications. This is only supported
74    /// for logs.
75    Fxt = 4,
76}
77
78impl Format {
79    #[inline]
80    pub fn from_primitive(prim: u32) -> Option<Self> {
81        match prim {
82            1 => Some(Self::Json),
83            2 => Some(Self::Text),
84            3 => Some(Self::Cbor),
85            4 => Some(Self::Fxt),
86            _ => None,
87        }
88    }
89
90    #[inline]
91    pub const fn into_primitive(self) -> u32 {
92        self as u32
93    }
94}
95
96/// Enum describing the potential failure states of the streaming protocol when serving results
97/// to the client over the result iterator.
98#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
99#[repr(u32)]
100pub enum ReaderError {
101    Io = 1,
102}
103
104impl ReaderError {
105    #[inline]
106    pub fn from_primitive(prim: u32) -> Option<Self> {
107        match prim {
108            1 => Some(Self::Io),
109            _ => None,
110        }
111    }
112
113    #[inline]
114    pub const fn into_primitive(self) -> u32 {
115        self as u32
116    }
117}
118
119/// The severity of a given record.
120#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
121#[repr(u8)]
122pub enum Severity {
123    /// Trace records include detailed information about program execution.
124    Trace = 16,
125    /// Debug records include development-facing information about program execution.
126    Debug = 32,
127    /// Info records include general information about program execution. (default)
128    Info = 48,
129    /// Warning records include information about potentially problematic operations.
130    Warn = 64,
131    /// Error records include information about failed operations.
132    Error = 80,
133    /// Fatal records convey information about operations which cause a program's termination.
134    Fatal = 96,
135}
136
137impl Severity {
138    #[inline]
139    pub fn from_primitive(prim: u8) -> Option<Self> {
140        match prim {
141            16 => Some(Self::Trace),
142            32 => Some(Self::Debug),
143            48 => Some(Self::Info),
144            64 => Some(Self::Warn),
145            80 => Some(Self::Error),
146            96 => Some(Self::Fatal),
147            _ => None,
148        }
149    }
150
151    #[inline]
152    pub const fn into_primitive(self) -> u8 {
153        self as u8
154    }
155}
156
157/// Enum specifying the modes by which a user can connect to and stream diagnostics metrics.
158#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
159#[repr(u8)]
160pub enum StreamMode {
161    /// The stream will serve a snapshot of the diagnostics data at the time of
162    /// connection, then end.
163    Snapshot = 1,
164    /// The stream will serve a snapshot of the diagnostics data at the time of
165    /// connection, then subsequent calls to the stream will hang until
166    /// new diagnostics data is available.
167    SnapshotThenSubscribe = 2,
168    /// Calls to the stream will hang until new diagnostics data is available. Between calls to
169    /// the stream, newly arrived data is buffered.
170    Subscribe = 3,
171}
172
173impl StreamMode {
174    #[inline]
175    pub fn from_primitive(prim: u8) -> Option<Self> {
176        match prim {
177            1 => Some(Self::Snapshot),
178            2 => Some(Self::SnapshotThenSubscribe),
179            3 => Some(Self::Subscribe),
180            _ => None,
181        }
182    }
183
184    #[inline]
185    pub const fn into_primitive(self) -> u8 {
186        self as u8
187    }
188}
189
190#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
191pub struct All;
192
193impl fidl::Persistable for All {}
194
195#[derive(Clone, Debug, PartialEq)]
196pub struct LogInterestSelector {
197    /// Matches the components for which the interest will be requested.
198    pub selector: ComponentSelector,
199    /// The interest level that will be sent to components matching the selector.
200    pub interest: fidl_fuchsia_diagnostics_types__common::Interest,
201}
202
203impl fidl::Persistable for LogInterestSelector {}
204
205#[derive(Clone, Debug, PartialEq)]
206pub struct LogSettingsRegisterInterestRequest {
207    pub selectors: Vec<LogInterestSelector>,
208}
209
210impl fidl::Persistable for LogSettingsRegisterInterestRequest {}
211
212#[derive(Clone, Debug, PartialEq)]
213pub struct LogSettingsSetInterestRequest {
214    pub selectors: Vec<LogInterestSelector>,
215}
216
217impl fidl::Persistable for LogSettingsSetInterestRequest {}
218
219/// A selector defining a set of nodes to match, and on those matched nodes a set of named
220/// properties to match.
221#[derive(Clone, Debug, PartialEq)]
222pub struct PropertySelector {
223    /// A vector of StringSelectors which serve as a pattern matcher
224    ///   for paths through a hierarchy of named nodes. Each entry in the vector
225    ///   is a selector for a single named node in a data hierarchy. The vector
226    ///   of selectors for named nodes, then, defines a selector on paths through the
227    ///   data hierarchy.
228    ///
229    /// Node paths support wildcarding, which will glob a single level of a
230    /// node hierarchy. eg:
231    ///    root/a/b/*/d
232    /// will match all nodes named d which are below some child of node b.
233    ///    root/a/b/c*
234    /// will match all nodes below b which start with the character "c".
235    pub node_path: Vec<StringSelector>,
236    /// A StringSelector which serves as a pattern matcher for
237    ///   string-named properties on a node in a data hierarchy.
238    ///
239    /// target_properties supports wildcarding, which will match against all properties
240    /// on any node matched by node_path.
241    pub target_properties: StringSelector,
242}
243
244impl fidl::Persistable for PropertySelector {}
245
246/// A selector defining a set of nodes to match, for which the entire subtree including
247/// those nodes are selected.
248#[derive(Clone, Debug, PartialEq)]
249pub struct SubtreeSelector {
250    /// A vector of StringSelectors which serve as a pattern matcher
251    ///   for paths through a hierarchy of named nodes. Each entry in the vector
252    ///   is a selector for a single named node in a data hierarchy. The vector
253    ///   of selectors for named nodes, then, defines a selector on paths through the
254    ///   data hierarchy.
255    ///
256    /// Node paths support wildcarding, which will glob a single level of a
257    /// node hierarchy. eg:
258    ///    root/a/b/*/d
259    /// will match all nodes named d which are below some child of node b.
260    ///    root/a/b/c*
261    /// will match all nodes below b which start with the character "c".
262    pub node_path: Vec<StringSelector>,
263}
264
265impl fidl::Persistable for SubtreeSelector {}
266
267/// Specifies a pattern of component monikers which
268/// identify components being selected for.
269///
270/// Component selectors support wildcarding, which will glob a single "level" of a
271/// component moniker. eg:
272///    core/*/echo
273/// will match all echo instances running only in realms directly under core, but none
274/// nested further.
275///
276/// Component selectors also support a recursive wildcard, which will glob multiple
277/// "levels" of a component moniker. eg:
278///    core/**
279/// will match all component instances running under core/ and all descendants of it.
280/// Note that the wildcard does not select core itself. Clients that wish to choose a
281/// subtree including the root should pass two selectors, eg:
282///    core
283///    core/**
284/// The recursive wildcard is only allowed as the final segment of the selector.
285#[derive(Clone, Debug, Default, PartialEq)]
286pub struct ComponentSelector {
287    /// Vector encoding the a pattern for monikers of components being selected for.
288    /// These monikers are child-monikers relative to a "root" hierarchy that the archivist
289    /// is aware of.
290    ///
291    /// There must be at least one StringSelector provided, which
292    /// specifies the component names that are matched by
293    /// the current selector.
294    pub moniker_segments: Option<Vec<StringSelector>>,
295    #[doc(hidden)]
296    pub __source_breaking: fidl::marker::SourceBreaking,
297}
298
299impl fidl::Persistable for ComponentSelector {}
300
301/// Interest expresses the scope of clients' desired diagnostics data,
302/// e.g. for filtering messages or controlling their generation.
303#[derive(Clone, Debug, Default, PartialEq)]
304pub struct Interest {
305    /// Minimum desired severity. Components should include records at or
306    /// above this severity.
307    ///
308    /// If not present, interpreted as Severity.INFO.
309    pub min_severity: Option<Severity>,
310    #[doc(hidden)]
311    pub __source_breaking: fidl::marker::SourceBreaking,
312}
313
314impl fidl::Persistable for Interest {}
315
316#[derive(Clone, Debug, Default, PartialEq)]
317pub struct LogSettingsSetComponentInterestRequest {
318    /// List of selectors. Required.
319    pub selectors: Option<Vec<LogInterestSelector>>,
320    /// Whether or not to persist the setting change after disconnection.
321    /// Optional. Defaults to false.
322    pub persist: Option<bool>,
323    #[doc(hidden)]
324    pub __source_breaking: fidl::marker::SourceBreaking,
325}
326
327impl fidl::Persistable for LogSettingsSetComponentInterestRequest {}
328
329#[derive(Clone, Debug, Default, PartialEq)]
330pub struct LogStreamOptions {
331    /// What logs to stream through this socket.
332    pub mode: Option<StreamMode>,
333    /// Whether or not to include the moniker in the record arguments.
334    /// Default: false
335    pub include_moniker: Option<bool>,
336    /// Whether or not to include the component url in the record arguments.
337    /// Default: false
338    pub include_component_url: Option<bool>,
339    /// Whether or not to include the number of rolled out logs in the record
340    /// arguments.
341    /// Default: false
342    pub include_rolled_out: Option<bool>,
343    #[doc(hidden)]
344    pub __source_breaking: fidl::marker::SourceBreaking,
345}
346
347impl fidl::Persistable for LogStreamOptions {}
348
349/// Parameters which configure a diagnostics stream's performance properties.
350#[derive(Clone, Debug, Default, PartialEq)]
351pub struct PerformanceConfiguration {
352    /// Maximum aggregate size of all formatted contents returned by
353    /// the batch iterator for a diagnostics stream. If this value is set for a stream
354    /// configured in subscribe mode, the stream will terminate when the max size has
355    /// been reached.
356    /// NOTE: OPTIONAL
357    pub max_aggregate_content_size_bytes: Option<u64>,
358    /// Configuration specifying max number of seconds to wait for a single
359    /// component to have its diagnostics data "pumped". This value can used
360    /// for testing or if you know the component you are interested is in under
361    /// heavy load.
362    /// If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
363    /// https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
364    /// will be used.
365    /// NOTE: OPTIONAL
366    pub batch_retrieval_timeout_seconds: Option<i64>,
367    #[doc(hidden)]
368    pub __source_breaking: fidl::marker::SourceBreaking,
369}
370
371impl fidl::Persistable for PerformanceConfiguration {}
372
373/// Structured selector containing all required information for pattern-matching onto
374/// string-named properties owned by nodes in a data hierarchy, where data hierarchies belong
375/// to specific components.
376///
377/// These selectors are represented in text form as three segments, colon delimited,
378/// specifying:
379///         <component_moniker>:<node_selector>:<property_selector>
380/// Examples:
381///    Property selection:
382///         realm1/realm2/echo:root/active_users:user_count
383///
384///    Subtree selection:
385///         realm1/realm2/echo:root/active_users
386#[derive(Clone, Debug, Default, PartialEq)]
387pub struct Selector {
388    /// The selector defining a pattern of component monikers to match
389    /// against.
390    pub component_selector: Option<ComponentSelector>,
391    /// The selector defining data hierarchy properties to match against
392    /// within the data hierarchies owned by components matched by
393    /// `component_selector`.
394    pub tree_selector: Option<TreeSelector>,
395    /// A set of fuchsia.inspect.Tree names to filter with before applying
396    /// hierarchy/property selectors.
397    ///
398    /// Omitting a name-filter is equivalent to TreeNames::some(["root"]).
399    /// Note that "root" is the default tree name.
400    pub tree_names: Option<TreeNames>,
401    #[doc(hidden)]
402    pub __source_breaking: fidl::marker::SourceBreaking,
403}
404
405impl fidl::Persistable for Selector {}
406
407/// Parameters needed to configure a stream of diagnostics information.
408#[derive(Clone, Debug, Default, PartialEq)]
409pub struct StreamParameters {
410    /// A [fuchsia.diagnostics/DataType] that specifies the diagnostics data type
411    /// to stream to the client.
412    /// NOTE: REQUIRED
413    pub data_type: Option<DataType>,
414    /// A [fuchsia.diagnostics/StreamMode] that specifies how the
415    /// streaming server provides streamed results.
416    /// NOTE: REQUIRED
417    pub stream_mode: Option<StreamMode>,
418    /// A [fuchsia.diagnostics/Format] that specifies how to format the returned
419    /// diagnostics data.
420    /// NOTE: REQUIRED
421    pub format: Option<Format>,
422    /// Configuration specifying what results the client wants returned from their
423    /// connection. The client can request a specific subset of data using a vector
424    /// of provided selectors, or can specify that they want all available data.
425    /// NOTE: REQUIRED
426    pub client_selector_configuration: Option<ClientSelectorConfiguration>,
427    /// Configuration specifying max number of seconds to wait for a single
428    /// component to have its diagnostics data "pumped". This value can used
429    /// for testing or if you know the component you are interested is in under
430    /// heavy load.
431    /// If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
432    /// https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
433    /// will be used.
434    /// NOTE: OPTIONAL
435    pub batch_retrieval_timeout_seconds: Option<i64>,
436    /// Parameters which configure a diagnostics stream's performance properties.
437    /// NOTE: OPTIONAL
438    pub performance_configuration: Option<PerformanceConfiguration>,
439    #[doc(hidden)]
440    pub __source_breaking: fidl::marker::SourceBreaking,
441}
442
443impl fidl::Persistable for StreamParameters {}
444
445#[derive(Clone, Debug)]
446pub enum ClientSelectorConfiguration {
447    /// A vector of [fuchsia.diagnostics/SelectorArgument] which
448    /// provide additional filters to scope data streams with. An empty vector is considered
449    /// a misconfiguration and will result in an epitaph signaling incorrect parameters.
450    Selectors(Vec<SelectorArgument>),
451    /// select_all must be true if set, and specifies that the client wants to retrieve
452    /// all data that their connection is able to expose.
453    SelectAll(bool),
454    #[doc(hidden)]
455    __SourceBreaking { unknown_ordinal: u64 },
456}
457
458/// Pattern that matches an unknown `ClientSelectorConfiguration` member.
459#[macro_export]
460macro_rules! ClientSelectorConfigurationUnknown {
461    () => {
462        _
463    };
464}
465
466// Custom PartialEq so that unknown variants are not equal to themselves.
467impl PartialEq for ClientSelectorConfiguration {
468    fn eq(&self, other: &Self) -> bool {
469        match (self, other) {
470            (Self::Selectors(x), Self::Selectors(y)) => *x == *y,
471            (Self::SelectAll(x), Self::SelectAll(y)) => *x == *y,
472            _ => false,
473        }
474    }
475}
476
477impl ClientSelectorConfiguration {
478    #[inline]
479    pub fn ordinal(&self) -> u64 {
480        match *self {
481            Self::Selectors(_) => 1,
482            Self::SelectAll(_) => 2,
483            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
484        }
485    }
486
487    #[inline]
488    pub fn unknown_variant_for_testing() -> Self {
489        Self::__SourceBreaking { unknown_ordinal: 0 }
490    }
491
492    #[inline]
493    pub fn is_unknown(&self) -> bool {
494        match self {
495            Self::__SourceBreaking { .. } => true,
496            _ => false,
497        }
498    }
499}
500
501impl fidl::Persistable for ClientSelectorConfiguration {}
502
503/// Argument used for Archive selectors, can be either the pre-parsed
504/// fidl struct or string representation.
505#[derive(Clone, Debug)]
506pub enum SelectorArgument {
507    /// A Selector defining a pattern-matcher which selects for components within a hierarchy
508    /// and properties in a data hierarchy namespaced by component.
509    StructuredSelector(Selector),
510    /// A raw string representing a [fuchsia.diagnostics/Selector].
511    /// The Selector defines a pattern-matcher which selects for components within a hierarchy
512    /// and properties in a data hierarchy namespaced by component.
513    /// NOTE: All StringSelectors parsed from the raw_selector will be interpreted in
514    ///       string_pattern mode, giving significance to special characters.
515    /// See https://fuchsia.dev/fuchsia-src/reference/diagnostics/selectors for more information
516    RawSelector(String),
517    #[doc(hidden)]
518    __SourceBreaking { unknown_ordinal: u64 },
519}
520
521/// Pattern that matches an unknown `SelectorArgument` member.
522#[macro_export]
523macro_rules! SelectorArgumentUnknown {
524    () => {
525        _
526    };
527}
528
529// Custom PartialEq so that unknown variants are not equal to themselves.
530impl PartialEq for SelectorArgument {
531    fn eq(&self, other: &Self) -> bool {
532        match (self, other) {
533            (Self::StructuredSelector(x), Self::StructuredSelector(y)) => *x == *y,
534            (Self::RawSelector(x), Self::RawSelector(y)) => *x == *y,
535            _ => false,
536        }
537    }
538}
539
540impl SelectorArgument {
541    #[inline]
542    pub fn ordinal(&self) -> u64 {
543        match *self {
544            Self::StructuredSelector(_) => 1,
545            Self::RawSelector(_) => 2,
546            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
547        }
548    }
549
550    #[inline]
551    pub fn unknown_variant_for_testing() -> Self {
552        Self::__SourceBreaking { unknown_ordinal: 0 }
553    }
554
555    #[inline]
556    pub fn is_unknown(&self) -> bool {
557        match self {
558            Self::__SourceBreaking { .. } => true,
559            _ => false,
560        }
561    }
562}
563
564impl fidl::Persistable for SelectorArgument {}
565
566/// StringSelector is an union defining different ways to describe a pattern to match
567/// strings against.
568#[derive(Clone, Debug)]
569pub enum StringSelector {
570    ///   This is a provided string that defines a pattern to
571    ///   match against. The parser treats asterisks (*), colons (:) and backslashes
572    ///   (\) as special characters.
573    ///
574    ///   If you wish to match against literal asterisks (*), they must be escaped.
575    ///   If you wish to match against literal backslashes (\), they must be escaped.
576    ///   If you wish to match against literal colons (:), they must be escaped.
577    ///
578    ///   eg: abc will match any string with the exact name "abc".
579    ///   eg: a\* will match any string with the exact name "a*".
580    ///   eg: a\\* will match any that starts with exactly "a\".
581    ///   eg: a* will match any string that starts with "a".
582    ///   eg: a*b will match any string that starts with a and ends with b.
583    ///   eg: a*b*c will match any string that starts with a and ends with c, with `b`
584    ///       in the middle.
585    ///
586    ///   In addition, the "**" literal is treated as a special sequence that may match
587    ///   multiple levels in a component selector only. See |ComponentSelector| for
588    ///   details.
589    StringPattern(String),
590    ExactMatch(String),
591    #[doc(hidden)]
592    __SourceBreaking {
593        unknown_ordinal: u64,
594    },
595}
596
597/// Pattern that matches an unknown `StringSelector` member.
598#[macro_export]
599macro_rules! StringSelectorUnknown {
600    () => {
601        _
602    };
603}
604
605// Custom PartialEq so that unknown variants are not equal to themselves.
606impl PartialEq for StringSelector {
607    fn eq(&self, other: &Self) -> bool {
608        match (self, other) {
609            (Self::StringPattern(x), Self::StringPattern(y)) => *x == *y,
610            (Self::ExactMatch(x), Self::ExactMatch(y)) => *x == *y,
611            _ => false,
612        }
613    }
614}
615
616impl StringSelector {
617    #[inline]
618    pub fn ordinal(&self) -> u64 {
619        match *self {
620            Self::StringPattern(_) => 1,
621            Self::ExactMatch(_) => 2,
622            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
623        }
624    }
625
626    #[inline]
627    pub fn unknown_variant_for_testing() -> Self {
628        Self::__SourceBreaking { unknown_ordinal: 0 }
629    }
630
631    #[inline]
632    pub fn is_unknown(&self) -> bool {
633        match self {
634            Self::__SourceBreaking { .. } => true,
635            _ => false,
636        }
637    }
638}
639
640impl fidl::Persistable for StringSelector {}
641
642/// TreeNames are the set of names of fuchsia.inspect.Trees for a component that
643/// were parsed out of a selector. The hierarchy and property selector portions
644/// will only be applied to trees that match this set.
645#[derive(Clone, Debug)]
646pub enum TreeNames {
647    /// A specified subset of tree names.
648    Some(Vec<String>),
649    /// All of the available trees. Equivalent to listing all of the names of
650    /// trees.
651    All(All),
652    #[doc(hidden)]
653    __SourceBreaking { unknown_ordinal: u64 },
654}
655
656/// Pattern that matches an unknown `TreeNames` member.
657#[macro_export]
658macro_rules! TreeNamesUnknown {
659    () => {
660        _
661    };
662}
663
664// Custom PartialEq so that unknown variants are not equal to themselves.
665impl PartialEq for TreeNames {
666    fn eq(&self, other: &Self) -> bool {
667        match (self, other) {
668            (Self::Some(x), Self::Some(y)) => *x == *y,
669            (Self::All(x), Self::All(y)) => *x == *y,
670            _ => false,
671        }
672    }
673}
674
675impl TreeNames {
676    #[inline]
677    pub fn ordinal(&self) -> u64 {
678        match *self {
679            Self::Some(_) => 1,
680            Self::All(_) => 2,
681            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
682        }
683    }
684
685    #[inline]
686    pub fn unknown_variant_for_testing() -> Self {
687        Self::__SourceBreaking { unknown_ordinal: 0 }
688    }
689
690    #[inline]
691    pub fn is_unknown(&self) -> bool {
692        match self {
693            Self::__SourceBreaking { .. } => true,
694            _ => false,
695        }
696    }
697}
698
699impl fidl::Persistable for TreeNames {}
700
701/// TreeSelector represents a selection request on a hierarchy of named nodes, with
702/// named properties on those nodes.
703#[derive(Clone, Debug)]
704pub enum TreeSelector {
705    /// A selector defining a set of nodes to match, for which the entire subtree including
706    /// those nodes are selected.
707    SubtreeSelector(SubtreeSelector),
708    /// A selector defining a set of nodes to match, and on those matched nodes a set of named
709    /// propperties to match.
710    PropertySelector(PropertySelector),
711    #[doc(hidden)]
712    __SourceBreaking { unknown_ordinal: u64 },
713}
714
715/// Pattern that matches an unknown `TreeSelector` member.
716#[macro_export]
717macro_rules! TreeSelectorUnknown {
718    () => {
719        _
720    };
721}
722
723// Custom PartialEq so that unknown variants are not equal to themselves.
724impl PartialEq for TreeSelector {
725    fn eq(&self, other: &Self) -> bool {
726        match (self, other) {
727            (Self::SubtreeSelector(x), Self::SubtreeSelector(y)) => *x == *y,
728            (Self::PropertySelector(x), Self::PropertySelector(y)) => *x == *y,
729            _ => false,
730        }
731    }
732}
733
734impl TreeSelector {
735    #[inline]
736    pub fn ordinal(&self) -> u64 {
737        match *self {
738            Self::SubtreeSelector(_) => 1,
739            Self::PropertySelector(_) => 2,
740            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
741        }
742    }
743
744    #[inline]
745    pub fn unknown_variant_for_testing() -> Self {
746        Self::__SourceBreaking { unknown_ordinal: 0 }
747    }
748
749    #[inline]
750    pub fn is_unknown(&self) -> bool {
751        match self {
752            Self::__SourceBreaking { .. } => true,
753            _ => false,
754        }
755    }
756}
757
758impl fidl::Persistable for TreeSelector {}
759
760pub mod archive_accessor_ordinals {
761    pub const STREAM_DIAGNOSTICS: u64 = 0x20c73e2ecd653c3e;
762    pub const WAIT_FOR_READY: u64 = 0x122963198011bd24;
763}
764
765pub mod batch_iterator_ordinals {
766    pub const GET_NEXT: u64 = 0x781986486c6254a5;
767    pub const WAIT_FOR_READY: u64 = 0x70598ee271597603;
768}
769
770pub mod log_flusher_ordinals {
771    pub const WAIT_UNTIL_FLUSHED: u64 = 0x7dc4892e46748b5b;
772}
773
774pub mod log_settings_ordinals {
775    pub const REGISTER_INTEREST: u64 = 0x49d7c14eec975fb;
776    pub const SET_INTEREST: u64 = 0x71beced9d2411f90;
777    pub const SET_COMPONENT_INTEREST: u64 = 0x35f7004d2367f6c1;
778}
779
780pub mod log_stream_ordinals {
781    pub const CONNECT: u64 = 0x745eb34f10d51a88;
782}
783
784mod internal {
785    use super::*;
786    unsafe impl fidl::encoding::TypeMarker for DataType {
787        type Owned = Self;
788
789        #[inline(always)]
790        fn inline_align(_context: fidl::encoding::Context) -> usize {
791            std::mem::align_of::<u8>()
792        }
793
794        #[inline(always)]
795        fn inline_size(_context: fidl::encoding::Context) -> usize {
796            std::mem::size_of::<u8>()
797        }
798
799        #[inline(always)]
800        fn encode_is_copy() -> bool {
801            true
802        }
803
804        #[inline(always)]
805        fn decode_is_copy() -> bool {
806            false
807        }
808    }
809
810    impl fidl::encoding::ValueTypeMarker for DataType {
811        type Borrowed<'a> = Self;
812        #[inline(always)]
813        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
814            *value
815        }
816    }
817
818    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataType {
819        #[inline]
820        unsafe fn encode(
821            self,
822            encoder: &mut fidl::encoding::Encoder<'_, D>,
823            offset: usize,
824            _depth: fidl::encoding::Depth,
825        ) -> fidl::Result<()> {
826            encoder.debug_check_bounds::<Self>(offset);
827            encoder.write_num(self.into_primitive(), offset);
828            Ok(())
829        }
830    }
831
832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataType {
833        #[inline(always)]
834        fn new_empty() -> Self {
835            Self::Inspect
836        }
837
838        #[inline]
839        unsafe fn decode(
840            &mut self,
841            decoder: &mut fidl::encoding::Decoder<'_, D>,
842            offset: usize,
843            _depth: fidl::encoding::Depth,
844        ) -> fidl::Result<()> {
845            decoder.debug_check_bounds::<Self>(offset);
846            let prim = decoder.read_num::<u8>(offset);
847
848            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
849            Ok(())
850        }
851    }
852    unsafe impl fidl::encoding::TypeMarker for Format {
853        type Owned = Self;
854
855        #[inline(always)]
856        fn inline_align(_context: fidl::encoding::Context) -> usize {
857            std::mem::align_of::<u32>()
858        }
859
860        #[inline(always)]
861        fn inline_size(_context: fidl::encoding::Context) -> usize {
862            std::mem::size_of::<u32>()
863        }
864
865        #[inline(always)]
866        fn encode_is_copy() -> bool {
867            true
868        }
869
870        #[inline(always)]
871        fn decode_is_copy() -> bool {
872            false
873        }
874    }
875
876    impl fidl::encoding::ValueTypeMarker for Format {
877        type Borrowed<'a> = Self;
878        #[inline(always)]
879        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
880            *value
881        }
882    }
883
884    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Format {
885        #[inline]
886        unsafe fn encode(
887            self,
888            encoder: &mut fidl::encoding::Encoder<'_, D>,
889            offset: usize,
890            _depth: fidl::encoding::Depth,
891        ) -> fidl::Result<()> {
892            encoder.debug_check_bounds::<Self>(offset);
893            encoder.write_num(self.into_primitive(), offset);
894            Ok(())
895        }
896    }
897
898    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Format {
899        #[inline(always)]
900        fn new_empty() -> Self {
901            Self::Json
902        }
903
904        #[inline]
905        unsafe fn decode(
906            &mut self,
907            decoder: &mut fidl::encoding::Decoder<'_, D>,
908            offset: usize,
909            _depth: fidl::encoding::Depth,
910        ) -> fidl::Result<()> {
911            decoder.debug_check_bounds::<Self>(offset);
912            let prim = decoder.read_num::<u32>(offset);
913
914            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
915            Ok(())
916        }
917    }
918    unsafe impl fidl::encoding::TypeMarker for ReaderError {
919        type Owned = Self;
920
921        #[inline(always)]
922        fn inline_align(_context: fidl::encoding::Context) -> usize {
923            std::mem::align_of::<u32>()
924        }
925
926        #[inline(always)]
927        fn inline_size(_context: fidl::encoding::Context) -> usize {
928            std::mem::size_of::<u32>()
929        }
930
931        #[inline(always)]
932        fn encode_is_copy() -> bool {
933            true
934        }
935
936        #[inline(always)]
937        fn decode_is_copy() -> bool {
938            false
939        }
940    }
941
942    impl fidl::encoding::ValueTypeMarker for ReaderError {
943        type Borrowed<'a> = Self;
944        #[inline(always)]
945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
946            *value
947        }
948    }
949
950    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReaderError {
951        #[inline]
952        unsafe fn encode(
953            self,
954            encoder: &mut fidl::encoding::Encoder<'_, D>,
955            offset: usize,
956            _depth: fidl::encoding::Depth,
957        ) -> fidl::Result<()> {
958            encoder.debug_check_bounds::<Self>(offset);
959            encoder.write_num(self.into_primitive(), offset);
960            Ok(())
961        }
962    }
963
964    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReaderError {
965        #[inline(always)]
966        fn new_empty() -> Self {
967            Self::Io
968        }
969
970        #[inline]
971        unsafe fn decode(
972            &mut self,
973            decoder: &mut fidl::encoding::Decoder<'_, D>,
974            offset: usize,
975            _depth: fidl::encoding::Depth,
976        ) -> fidl::Result<()> {
977            decoder.debug_check_bounds::<Self>(offset);
978            let prim = decoder.read_num::<u32>(offset);
979
980            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
981            Ok(())
982        }
983    }
984    unsafe impl fidl::encoding::TypeMarker for Severity {
985        type Owned = Self;
986
987        #[inline(always)]
988        fn inline_align(_context: fidl::encoding::Context) -> usize {
989            std::mem::align_of::<u8>()
990        }
991
992        #[inline(always)]
993        fn inline_size(_context: fidl::encoding::Context) -> usize {
994            std::mem::size_of::<u8>()
995        }
996
997        #[inline(always)]
998        fn encode_is_copy() -> bool {
999            true
1000        }
1001
1002        #[inline(always)]
1003        fn decode_is_copy() -> bool {
1004            false
1005        }
1006    }
1007
1008    impl fidl::encoding::ValueTypeMarker for Severity {
1009        type Borrowed<'a> = Self;
1010        #[inline(always)]
1011        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1012            *value
1013        }
1014    }
1015
1016    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Severity {
1017        #[inline]
1018        unsafe fn encode(
1019            self,
1020            encoder: &mut fidl::encoding::Encoder<'_, D>,
1021            offset: usize,
1022            _depth: fidl::encoding::Depth,
1023        ) -> fidl::Result<()> {
1024            encoder.debug_check_bounds::<Self>(offset);
1025            encoder.write_num(self.into_primitive(), offset);
1026            Ok(())
1027        }
1028    }
1029
1030    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Severity {
1031        #[inline(always)]
1032        fn new_empty() -> Self {
1033            Self::Trace
1034        }
1035
1036        #[inline]
1037        unsafe fn decode(
1038            &mut self,
1039            decoder: &mut fidl::encoding::Decoder<'_, D>,
1040            offset: usize,
1041            _depth: fidl::encoding::Depth,
1042        ) -> fidl::Result<()> {
1043            decoder.debug_check_bounds::<Self>(offset);
1044            let prim = decoder.read_num::<u8>(offset);
1045
1046            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1047            Ok(())
1048        }
1049    }
1050    unsafe impl fidl::encoding::TypeMarker for StreamMode {
1051        type Owned = Self;
1052
1053        #[inline(always)]
1054        fn inline_align(_context: fidl::encoding::Context) -> usize {
1055            std::mem::align_of::<u8>()
1056        }
1057
1058        #[inline(always)]
1059        fn inline_size(_context: fidl::encoding::Context) -> usize {
1060            std::mem::size_of::<u8>()
1061        }
1062
1063        #[inline(always)]
1064        fn encode_is_copy() -> bool {
1065            true
1066        }
1067
1068        #[inline(always)]
1069        fn decode_is_copy() -> bool {
1070            false
1071        }
1072    }
1073
1074    impl fidl::encoding::ValueTypeMarker for StreamMode {
1075        type Borrowed<'a> = Self;
1076        #[inline(always)]
1077        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1078            *value
1079        }
1080    }
1081
1082    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StreamMode {
1083        #[inline]
1084        unsafe fn encode(
1085            self,
1086            encoder: &mut fidl::encoding::Encoder<'_, D>,
1087            offset: usize,
1088            _depth: fidl::encoding::Depth,
1089        ) -> fidl::Result<()> {
1090            encoder.debug_check_bounds::<Self>(offset);
1091            encoder.write_num(self.into_primitive(), offset);
1092            Ok(())
1093        }
1094    }
1095
1096    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamMode {
1097        #[inline(always)]
1098        fn new_empty() -> Self {
1099            Self::Snapshot
1100        }
1101
1102        #[inline]
1103        unsafe fn decode(
1104            &mut self,
1105            decoder: &mut fidl::encoding::Decoder<'_, D>,
1106            offset: usize,
1107            _depth: fidl::encoding::Depth,
1108        ) -> fidl::Result<()> {
1109            decoder.debug_check_bounds::<Self>(offset);
1110            let prim = decoder.read_num::<u8>(offset);
1111
1112            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1113            Ok(())
1114        }
1115    }
1116
1117    impl fidl::encoding::ValueTypeMarker for All {
1118        type Borrowed<'a> = &'a Self;
1119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1120            value
1121        }
1122    }
1123
1124    unsafe impl fidl::encoding::TypeMarker for All {
1125        type Owned = Self;
1126
1127        #[inline(always)]
1128        fn inline_align(_context: fidl::encoding::Context) -> usize {
1129            1
1130        }
1131
1132        #[inline(always)]
1133        fn inline_size(_context: fidl::encoding::Context) -> usize {
1134            1
1135        }
1136    }
1137
1138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<All, D> for &All {
1139        #[inline]
1140        unsafe fn encode(
1141            self,
1142            encoder: &mut fidl::encoding::Encoder<'_, D>,
1143            offset: usize,
1144            _depth: fidl::encoding::Depth,
1145        ) -> fidl::Result<()> {
1146            encoder.debug_check_bounds::<All>(offset);
1147            encoder.write_num(0u8, offset);
1148            Ok(())
1149        }
1150    }
1151
1152    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for All {
1153        #[inline(always)]
1154        fn new_empty() -> Self {
1155            Self
1156        }
1157
1158        #[inline]
1159        unsafe fn decode(
1160            &mut self,
1161            decoder: &mut fidl::encoding::Decoder<'_, D>,
1162            offset: usize,
1163            _depth: fidl::encoding::Depth,
1164        ) -> fidl::Result<()> {
1165            decoder.debug_check_bounds::<Self>(offset);
1166            match decoder.read_num::<u8>(offset) {
1167                0 => Ok(()),
1168                _ => Err(fidl::Error::Invalid),
1169            }
1170        }
1171    }
1172
1173    impl fidl::encoding::ValueTypeMarker for LogInterestSelector {
1174        type Borrowed<'a> = &'a Self;
1175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1176            value
1177        }
1178    }
1179
1180    unsafe impl fidl::encoding::TypeMarker for LogInterestSelector {
1181        type Owned = Self;
1182
1183        #[inline(always)]
1184        fn inline_align(_context: fidl::encoding::Context) -> usize {
1185            8
1186        }
1187
1188        #[inline(always)]
1189        fn inline_size(_context: fidl::encoding::Context) -> usize {
1190            32
1191        }
1192    }
1193
1194    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LogInterestSelector, D>
1195        for &LogInterestSelector
1196    {
1197        #[inline]
1198        unsafe fn encode(
1199            self,
1200            encoder: &mut fidl::encoding::Encoder<'_, D>,
1201            offset: usize,
1202            _depth: fidl::encoding::Depth,
1203        ) -> fidl::Result<()> {
1204            encoder.debug_check_bounds::<LogInterestSelector>(offset);
1205            // Delegate to tuple encoding.
1206            fidl::encoding::Encode::<LogInterestSelector, D>::encode(
1207                (
1208                    <ComponentSelector as fidl::encoding::ValueTypeMarker>::borrow(&self.selector),
1209                    <fidl_fuchsia_diagnostics_types__common::Interest as fidl::encoding::ValueTypeMarker>::borrow(&self.interest),
1210                ),
1211                encoder, offset, _depth
1212            )
1213        }
1214    }
1215    unsafe impl<
1216            D: fidl::encoding::ResourceDialect,
1217            T0: fidl::encoding::Encode<ComponentSelector, D>,
1218            T1: fidl::encoding::Encode<fidl_fuchsia_diagnostics_types__common::Interest, D>,
1219        > fidl::encoding::Encode<LogInterestSelector, D> for (T0, T1)
1220    {
1221        #[inline]
1222        unsafe fn encode(
1223            self,
1224            encoder: &mut fidl::encoding::Encoder<'_, D>,
1225            offset: usize,
1226            depth: fidl::encoding::Depth,
1227        ) -> fidl::Result<()> {
1228            encoder.debug_check_bounds::<LogInterestSelector>(offset);
1229            // Zero out padding regions. There's no need to apply masks
1230            // because the unmasked parts will be overwritten by fields.
1231            // Write the fields.
1232            self.0.encode(encoder, offset + 0, depth)?;
1233            self.1.encode(encoder, offset + 16, depth)?;
1234            Ok(())
1235        }
1236    }
1237
1238    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogInterestSelector {
1239        #[inline(always)]
1240        fn new_empty() -> Self {
1241            Self {
1242                selector: fidl::new_empty!(ComponentSelector, D),
1243                interest: fidl::new_empty!(fidl_fuchsia_diagnostics_types__common::Interest, D),
1244            }
1245        }
1246
1247        #[inline]
1248        unsafe fn decode(
1249            &mut self,
1250            decoder: &mut fidl::encoding::Decoder<'_, D>,
1251            offset: usize,
1252            _depth: fidl::encoding::Depth,
1253        ) -> fidl::Result<()> {
1254            decoder.debug_check_bounds::<Self>(offset);
1255            // Verify that padding bytes are zero.
1256            fidl::decode!(ComponentSelector, D, &mut self.selector, decoder, offset + 0, _depth)?;
1257            fidl::decode!(
1258                fidl_fuchsia_diagnostics_types__common::Interest,
1259                D,
1260                &mut self.interest,
1261                decoder,
1262                offset + 16,
1263                _depth
1264            )?;
1265            Ok(())
1266        }
1267    }
1268
1269    impl fidl::encoding::ValueTypeMarker for LogSettingsRegisterInterestRequest {
1270        type Borrowed<'a> = &'a Self;
1271        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1272            value
1273        }
1274    }
1275
1276    unsafe impl fidl::encoding::TypeMarker for LogSettingsRegisterInterestRequest {
1277        type Owned = Self;
1278
1279        #[inline(always)]
1280        fn inline_align(_context: fidl::encoding::Context) -> usize {
1281            8
1282        }
1283
1284        #[inline(always)]
1285        fn inline_size(_context: fidl::encoding::Context) -> usize {
1286            16
1287        }
1288    }
1289
1290    unsafe impl<D: fidl::encoding::ResourceDialect>
1291        fidl::encoding::Encode<LogSettingsRegisterInterestRequest, D>
1292        for &LogSettingsRegisterInterestRequest
1293    {
1294        #[inline]
1295        unsafe fn encode(
1296            self,
1297            encoder: &mut fidl::encoding::Encoder<'_, D>,
1298            offset: usize,
1299            _depth: fidl::encoding::Depth,
1300        ) -> fidl::Result<()> {
1301            encoder.debug_check_bounds::<LogSettingsRegisterInterestRequest>(offset);
1302            // Delegate to tuple encoding.
1303            fidl::encoding::Encode::<LogSettingsRegisterInterestRequest, D>::encode(
1304                (
1305                    <fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.selectors),
1306                ),
1307                encoder, offset, _depth
1308            )
1309        }
1310    }
1311    unsafe impl<
1312            D: fidl::encoding::ResourceDialect,
1313            T0: fidl::encoding::Encode<fidl::encoding::Vector<LogInterestSelector, 64>, D>,
1314        > fidl::encoding::Encode<LogSettingsRegisterInterestRequest, D> for (T0,)
1315    {
1316        #[inline]
1317        unsafe fn encode(
1318            self,
1319            encoder: &mut fidl::encoding::Encoder<'_, D>,
1320            offset: usize,
1321            depth: fidl::encoding::Depth,
1322        ) -> fidl::Result<()> {
1323            encoder.debug_check_bounds::<LogSettingsRegisterInterestRequest>(offset);
1324            // Zero out padding regions. There's no need to apply masks
1325            // because the unmasked parts will be overwritten by fields.
1326            // Write the fields.
1327            self.0.encode(encoder, offset + 0, depth)?;
1328            Ok(())
1329        }
1330    }
1331
1332    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1333        for LogSettingsRegisterInterestRequest
1334    {
1335        #[inline(always)]
1336        fn new_empty() -> Self {
1337            Self { selectors: fidl::new_empty!(fidl::encoding::Vector<LogInterestSelector, 64>, D) }
1338        }
1339
1340        #[inline]
1341        unsafe fn decode(
1342            &mut self,
1343            decoder: &mut fidl::encoding::Decoder<'_, D>,
1344            offset: usize,
1345            _depth: fidl::encoding::Depth,
1346        ) -> fidl::Result<()> {
1347            decoder.debug_check_bounds::<Self>(offset);
1348            // Verify that padding bytes are zero.
1349            fidl::decode!(fidl::encoding::Vector<LogInterestSelector, 64>, D, &mut self.selectors, decoder, offset + 0, _depth)?;
1350            Ok(())
1351        }
1352    }
1353
1354    impl fidl::encoding::ValueTypeMarker for LogSettingsSetInterestRequest {
1355        type Borrowed<'a> = &'a Self;
1356        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1357            value
1358        }
1359    }
1360
1361    unsafe impl fidl::encoding::TypeMarker for LogSettingsSetInterestRequest {
1362        type Owned = Self;
1363
1364        #[inline(always)]
1365        fn inline_align(_context: fidl::encoding::Context) -> usize {
1366            8
1367        }
1368
1369        #[inline(always)]
1370        fn inline_size(_context: fidl::encoding::Context) -> usize {
1371            16
1372        }
1373    }
1374
1375    unsafe impl<D: fidl::encoding::ResourceDialect>
1376        fidl::encoding::Encode<LogSettingsSetInterestRequest, D>
1377        for &LogSettingsSetInterestRequest
1378    {
1379        #[inline]
1380        unsafe fn encode(
1381            self,
1382            encoder: &mut fidl::encoding::Encoder<'_, D>,
1383            offset: usize,
1384            _depth: fidl::encoding::Depth,
1385        ) -> fidl::Result<()> {
1386            encoder.debug_check_bounds::<LogSettingsSetInterestRequest>(offset);
1387            // Delegate to tuple encoding.
1388            fidl::encoding::Encode::<LogSettingsSetInterestRequest, D>::encode(
1389                (
1390                    <fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.selectors),
1391                ),
1392                encoder, offset, _depth
1393            )
1394        }
1395    }
1396    unsafe impl<
1397            D: fidl::encoding::ResourceDialect,
1398            T0: fidl::encoding::Encode<fidl::encoding::Vector<LogInterestSelector, 64>, D>,
1399        > fidl::encoding::Encode<LogSettingsSetInterestRequest, D> for (T0,)
1400    {
1401        #[inline]
1402        unsafe fn encode(
1403            self,
1404            encoder: &mut fidl::encoding::Encoder<'_, D>,
1405            offset: usize,
1406            depth: fidl::encoding::Depth,
1407        ) -> fidl::Result<()> {
1408            encoder.debug_check_bounds::<LogSettingsSetInterestRequest>(offset);
1409            // Zero out padding regions. There's no need to apply masks
1410            // because the unmasked parts will be overwritten by fields.
1411            // Write the fields.
1412            self.0.encode(encoder, offset + 0, depth)?;
1413            Ok(())
1414        }
1415    }
1416
1417    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1418        for LogSettingsSetInterestRequest
1419    {
1420        #[inline(always)]
1421        fn new_empty() -> Self {
1422            Self { selectors: fidl::new_empty!(fidl::encoding::Vector<LogInterestSelector, 64>, D) }
1423        }
1424
1425        #[inline]
1426        unsafe fn decode(
1427            &mut self,
1428            decoder: &mut fidl::encoding::Decoder<'_, D>,
1429            offset: usize,
1430            _depth: fidl::encoding::Depth,
1431        ) -> fidl::Result<()> {
1432            decoder.debug_check_bounds::<Self>(offset);
1433            // Verify that padding bytes are zero.
1434            fidl::decode!(fidl::encoding::Vector<LogInterestSelector, 64>, D, &mut self.selectors, decoder, offset + 0, _depth)?;
1435            Ok(())
1436        }
1437    }
1438
1439    impl fidl::encoding::ValueTypeMarker for PropertySelector {
1440        type Borrowed<'a> = &'a Self;
1441        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1442            value
1443        }
1444    }
1445
1446    unsafe impl fidl::encoding::TypeMarker for PropertySelector {
1447        type Owned = Self;
1448
1449        #[inline(always)]
1450        fn inline_align(_context: fidl::encoding::Context) -> usize {
1451            8
1452        }
1453
1454        #[inline(always)]
1455        fn inline_size(_context: fidl::encoding::Context) -> usize {
1456            32
1457        }
1458    }
1459
1460    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PropertySelector, D>
1461        for &PropertySelector
1462    {
1463        #[inline]
1464        unsafe fn encode(
1465            self,
1466            encoder: &mut fidl::encoding::Encoder<'_, D>,
1467            offset: usize,
1468            _depth: fidl::encoding::Depth,
1469        ) -> fidl::Result<()> {
1470            encoder.debug_check_bounds::<PropertySelector>(offset);
1471            // Delegate to tuple encoding.
1472            fidl::encoding::Encode::<PropertySelector, D>::encode(
1473                (
1474                    <fidl::encoding::Vector<StringSelector, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.node_path),
1475                    <StringSelector as fidl::encoding::ValueTypeMarker>::borrow(&self.target_properties),
1476                ),
1477                encoder, offset, _depth
1478            )
1479        }
1480    }
1481    unsafe impl<
1482            D: fidl::encoding::ResourceDialect,
1483            T0: fidl::encoding::Encode<fidl::encoding::Vector<StringSelector, 100>, D>,
1484            T1: fidl::encoding::Encode<StringSelector, D>,
1485        > fidl::encoding::Encode<PropertySelector, D> for (T0, T1)
1486    {
1487        #[inline]
1488        unsafe fn encode(
1489            self,
1490            encoder: &mut fidl::encoding::Encoder<'_, D>,
1491            offset: usize,
1492            depth: fidl::encoding::Depth,
1493        ) -> fidl::Result<()> {
1494            encoder.debug_check_bounds::<PropertySelector>(offset);
1495            // Zero out padding regions. There's no need to apply masks
1496            // because the unmasked parts will be overwritten by fields.
1497            // Write the fields.
1498            self.0.encode(encoder, offset + 0, depth)?;
1499            self.1.encode(encoder, offset + 16, depth)?;
1500            Ok(())
1501        }
1502    }
1503
1504    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PropertySelector {
1505        #[inline(always)]
1506        fn new_empty() -> Self {
1507            Self {
1508                node_path: fidl::new_empty!(fidl::encoding::Vector<StringSelector, 100>, D),
1509                target_properties: fidl::new_empty!(StringSelector, D),
1510            }
1511        }
1512
1513        #[inline]
1514        unsafe fn decode(
1515            &mut self,
1516            decoder: &mut fidl::encoding::Decoder<'_, D>,
1517            offset: usize,
1518            _depth: fidl::encoding::Depth,
1519        ) -> fidl::Result<()> {
1520            decoder.debug_check_bounds::<Self>(offset);
1521            // Verify that padding bytes are zero.
1522            fidl::decode!(fidl::encoding::Vector<StringSelector, 100>, D, &mut self.node_path, decoder, offset + 0, _depth)?;
1523            fidl::decode!(
1524                StringSelector,
1525                D,
1526                &mut self.target_properties,
1527                decoder,
1528                offset + 16,
1529                _depth
1530            )?;
1531            Ok(())
1532        }
1533    }
1534
1535    impl fidl::encoding::ValueTypeMarker for SubtreeSelector {
1536        type Borrowed<'a> = &'a Self;
1537        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1538            value
1539        }
1540    }
1541
1542    unsafe impl fidl::encoding::TypeMarker for SubtreeSelector {
1543        type Owned = Self;
1544
1545        #[inline(always)]
1546        fn inline_align(_context: fidl::encoding::Context) -> usize {
1547            8
1548        }
1549
1550        #[inline(always)]
1551        fn inline_size(_context: fidl::encoding::Context) -> usize {
1552            16
1553        }
1554    }
1555
1556    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SubtreeSelector, D>
1557        for &SubtreeSelector
1558    {
1559        #[inline]
1560        unsafe fn encode(
1561            self,
1562            encoder: &mut fidl::encoding::Encoder<'_, D>,
1563            offset: usize,
1564            _depth: fidl::encoding::Depth,
1565        ) -> fidl::Result<()> {
1566            encoder.debug_check_bounds::<SubtreeSelector>(offset);
1567            // Delegate to tuple encoding.
1568            fidl::encoding::Encode::<SubtreeSelector, D>::encode(
1569                (
1570                    <fidl::encoding::Vector<StringSelector, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.node_path),
1571                ),
1572                encoder, offset, _depth
1573            )
1574        }
1575    }
1576    unsafe impl<
1577            D: fidl::encoding::ResourceDialect,
1578            T0: fidl::encoding::Encode<fidl::encoding::Vector<StringSelector, 100>, D>,
1579        > fidl::encoding::Encode<SubtreeSelector, D> for (T0,)
1580    {
1581        #[inline]
1582        unsafe fn encode(
1583            self,
1584            encoder: &mut fidl::encoding::Encoder<'_, D>,
1585            offset: usize,
1586            depth: fidl::encoding::Depth,
1587        ) -> fidl::Result<()> {
1588            encoder.debug_check_bounds::<SubtreeSelector>(offset);
1589            // Zero out padding regions. There's no need to apply masks
1590            // because the unmasked parts will be overwritten by fields.
1591            // Write the fields.
1592            self.0.encode(encoder, offset + 0, depth)?;
1593            Ok(())
1594        }
1595    }
1596
1597    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SubtreeSelector {
1598        #[inline(always)]
1599        fn new_empty() -> Self {
1600            Self { node_path: fidl::new_empty!(fidl::encoding::Vector<StringSelector, 100>, D) }
1601        }
1602
1603        #[inline]
1604        unsafe fn decode(
1605            &mut self,
1606            decoder: &mut fidl::encoding::Decoder<'_, D>,
1607            offset: usize,
1608            _depth: fidl::encoding::Depth,
1609        ) -> fidl::Result<()> {
1610            decoder.debug_check_bounds::<Self>(offset);
1611            // Verify that padding bytes are zero.
1612            fidl::decode!(fidl::encoding::Vector<StringSelector, 100>, D, &mut self.node_path, decoder, offset + 0, _depth)?;
1613            Ok(())
1614        }
1615    }
1616
1617    impl ComponentSelector {
1618        #[inline(always)]
1619        fn max_ordinal_present(&self) -> u64 {
1620            if let Some(_) = self.moniker_segments {
1621                return 1;
1622            }
1623            0
1624        }
1625    }
1626
1627    impl fidl::encoding::ValueTypeMarker for ComponentSelector {
1628        type Borrowed<'a> = &'a Self;
1629        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1630            value
1631        }
1632    }
1633
1634    unsafe impl fidl::encoding::TypeMarker for ComponentSelector {
1635        type Owned = Self;
1636
1637        #[inline(always)]
1638        fn inline_align(_context: fidl::encoding::Context) -> usize {
1639            8
1640        }
1641
1642        #[inline(always)]
1643        fn inline_size(_context: fidl::encoding::Context) -> usize {
1644            16
1645        }
1646    }
1647
1648    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentSelector, D>
1649        for &ComponentSelector
1650    {
1651        unsafe fn encode(
1652            self,
1653            encoder: &mut fidl::encoding::Encoder<'_, D>,
1654            offset: usize,
1655            mut depth: fidl::encoding::Depth,
1656        ) -> fidl::Result<()> {
1657            encoder.debug_check_bounds::<ComponentSelector>(offset);
1658            // Vector header
1659            let max_ordinal: u64 = self.max_ordinal_present();
1660            encoder.write_num(max_ordinal, offset);
1661            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1662            // Calling encoder.out_of_line_offset(0) is not allowed.
1663            if max_ordinal == 0 {
1664                return Ok(());
1665            }
1666            depth.increment()?;
1667            let envelope_size = 8;
1668            let bytes_len = max_ordinal as usize * envelope_size;
1669            #[allow(unused_variables)]
1670            let offset = encoder.out_of_line_offset(bytes_len);
1671            let mut _prev_end_offset: usize = 0;
1672            if 1 > max_ordinal {
1673                return Ok(());
1674            }
1675
1676            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1677            // are envelope_size bytes.
1678            let cur_offset: usize = (1 - 1) * envelope_size;
1679
1680            // Zero reserved fields.
1681            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1682
1683            // Safety:
1684            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1685            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1686            //   envelope_size bytes, there is always sufficient room.
1687            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<StringSelector, 25>, D>(
1688            self.moniker_segments.as_ref().map(<fidl::encoding::Vector<StringSelector, 25> as fidl::encoding::ValueTypeMarker>::borrow),
1689            encoder, offset + cur_offset, depth
1690        )?;
1691
1692            _prev_end_offset = cur_offset + envelope_size;
1693
1694            Ok(())
1695        }
1696    }
1697
1698    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentSelector {
1699        #[inline(always)]
1700        fn new_empty() -> Self {
1701            Self::default()
1702        }
1703
1704        unsafe fn decode(
1705            &mut self,
1706            decoder: &mut fidl::encoding::Decoder<'_, D>,
1707            offset: usize,
1708            mut depth: fidl::encoding::Depth,
1709        ) -> fidl::Result<()> {
1710            decoder.debug_check_bounds::<Self>(offset);
1711            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1712                None => return Err(fidl::Error::NotNullable),
1713                Some(len) => len,
1714            };
1715            // Calling decoder.out_of_line_offset(0) is not allowed.
1716            if len == 0 {
1717                return Ok(());
1718            };
1719            depth.increment()?;
1720            let envelope_size = 8;
1721            let bytes_len = len * envelope_size;
1722            let offset = decoder.out_of_line_offset(bytes_len)?;
1723            // Decode the envelope for each type.
1724            let mut _next_ordinal_to_read = 0;
1725            let mut next_offset = offset;
1726            let end_offset = offset + bytes_len;
1727            _next_ordinal_to_read += 1;
1728            if next_offset >= end_offset {
1729                return Ok(());
1730            }
1731
1732            // Decode unknown envelopes for gaps in ordinals.
1733            while _next_ordinal_to_read < 1 {
1734                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1735                _next_ordinal_to_read += 1;
1736                next_offset += envelope_size;
1737            }
1738
1739            let next_out_of_line = decoder.next_out_of_line();
1740            let handles_before = decoder.remaining_handles();
1741            if let Some((inlined, num_bytes, num_handles)) =
1742                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1743            {
1744                let member_inline_size = <fidl::encoding::Vector<StringSelector, 25> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1745                if inlined != (member_inline_size <= 4) {
1746                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1747                }
1748                let inner_offset;
1749                let mut inner_depth = depth.clone();
1750                if inlined {
1751                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1752                    inner_offset = next_offset;
1753                } else {
1754                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1755                    inner_depth.increment()?;
1756                }
1757                let val_ref = self.moniker_segments.get_or_insert_with(
1758                    || fidl::new_empty!(fidl::encoding::Vector<StringSelector, 25>, D),
1759                );
1760                fidl::decode!(fidl::encoding::Vector<StringSelector, 25>, D, val_ref, decoder, inner_offset, inner_depth)?;
1761                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1762                {
1763                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1764                }
1765                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1766                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1767                }
1768            }
1769
1770            next_offset += envelope_size;
1771
1772            // Decode the remaining unknown envelopes.
1773            while next_offset < end_offset {
1774                _next_ordinal_to_read += 1;
1775                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1776                next_offset += envelope_size;
1777            }
1778
1779            Ok(())
1780        }
1781    }
1782
1783    impl Interest {
1784        #[inline(always)]
1785        fn max_ordinal_present(&self) -> u64 {
1786            if let Some(_) = self.min_severity {
1787                return 1;
1788            }
1789            0
1790        }
1791    }
1792
1793    impl fidl::encoding::ValueTypeMarker for Interest {
1794        type Borrowed<'a> = &'a Self;
1795        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1796            value
1797        }
1798    }
1799
1800    unsafe impl fidl::encoding::TypeMarker for Interest {
1801        type Owned = Self;
1802
1803        #[inline(always)]
1804        fn inline_align(_context: fidl::encoding::Context) -> usize {
1805            8
1806        }
1807
1808        #[inline(always)]
1809        fn inline_size(_context: fidl::encoding::Context) -> usize {
1810            16
1811        }
1812    }
1813
1814    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Interest, D> for &Interest {
1815        unsafe fn encode(
1816            self,
1817            encoder: &mut fidl::encoding::Encoder<'_, D>,
1818            offset: usize,
1819            mut depth: fidl::encoding::Depth,
1820        ) -> fidl::Result<()> {
1821            encoder.debug_check_bounds::<Interest>(offset);
1822            // Vector header
1823            let max_ordinal: u64 = self.max_ordinal_present();
1824            encoder.write_num(max_ordinal, offset);
1825            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1826            // Calling encoder.out_of_line_offset(0) is not allowed.
1827            if max_ordinal == 0 {
1828                return Ok(());
1829            }
1830            depth.increment()?;
1831            let envelope_size = 8;
1832            let bytes_len = max_ordinal as usize * envelope_size;
1833            #[allow(unused_variables)]
1834            let offset = encoder.out_of_line_offset(bytes_len);
1835            let mut _prev_end_offset: usize = 0;
1836            if 1 > max_ordinal {
1837                return Ok(());
1838            }
1839
1840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1841            // are envelope_size bytes.
1842            let cur_offset: usize = (1 - 1) * envelope_size;
1843
1844            // Zero reserved fields.
1845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1846
1847            // Safety:
1848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1850            //   envelope_size bytes, there is always sufficient room.
1851            fidl::encoding::encode_in_envelope_optional::<Severity, D>(
1852                self.min_severity
1853                    .as_ref()
1854                    .map(<Severity as fidl::encoding::ValueTypeMarker>::borrow),
1855                encoder,
1856                offset + cur_offset,
1857                depth,
1858            )?;
1859
1860            _prev_end_offset = cur_offset + envelope_size;
1861
1862            Ok(())
1863        }
1864    }
1865
1866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Interest {
1867        #[inline(always)]
1868        fn new_empty() -> Self {
1869            Self::default()
1870        }
1871
1872        unsafe fn decode(
1873            &mut self,
1874            decoder: &mut fidl::encoding::Decoder<'_, D>,
1875            offset: usize,
1876            mut depth: fidl::encoding::Depth,
1877        ) -> fidl::Result<()> {
1878            decoder.debug_check_bounds::<Self>(offset);
1879            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1880                None => return Err(fidl::Error::NotNullable),
1881                Some(len) => len,
1882            };
1883            // Calling decoder.out_of_line_offset(0) is not allowed.
1884            if len == 0 {
1885                return Ok(());
1886            };
1887            depth.increment()?;
1888            let envelope_size = 8;
1889            let bytes_len = len * envelope_size;
1890            let offset = decoder.out_of_line_offset(bytes_len)?;
1891            // Decode the envelope for each type.
1892            let mut _next_ordinal_to_read = 0;
1893            let mut next_offset = offset;
1894            let end_offset = offset + bytes_len;
1895            _next_ordinal_to_read += 1;
1896            if next_offset >= end_offset {
1897                return Ok(());
1898            }
1899
1900            // Decode unknown envelopes for gaps in ordinals.
1901            while _next_ordinal_to_read < 1 {
1902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1903                _next_ordinal_to_read += 1;
1904                next_offset += envelope_size;
1905            }
1906
1907            let next_out_of_line = decoder.next_out_of_line();
1908            let handles_before = decoder.remaining_handles();
1909            if let Some((inlined, num_bytes, num_handles)) =
1910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1911            {
1912                let member_inline_size =
1913                    <Severity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1914                if inlined != (member_inline_size <= 4) {
1915                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1916                }
1917                let inner_offset;
1918                let mut inner_depth = depth.clone();
1919                if inlined {
1920                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1921                    inner_offset = next_offset;
1922                } else {
1923                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1924                    inner_depth.increment()?;
1925                }
1926                let val_ref =
1927                    self.min_severity.get_or_insert_with(|| fidl::new_empty!(Severity, D));
1928                fidl::decode!(Severity, D, val_ref, decoder, inner_offset, inner_depth)?;
1929                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1930                {
1931                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1932                }
1933                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1934                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1935                }
1936            }
1937
1938            next_offset += envelope_size;
1939
1940            // Decode the remaining unknown envelopes.
1941            while next_offset < end_offset {
1942                _next_ordinal_to_read += 1;
1943                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1944                next_offset += envelope_size;
1945            }
1946
1947            Ok(())
1948        }
1949    }
1950
1951    impl LogSettingsSetComponentInterestRequest {
1952        #[inline(always)]
1953        fn max_ordinal_present(&self) -> u64 {
1954            if let Some(_) = self.persist {
1955                return 2;
1956            }
1957            if let Some(_) = self.selectors {
1958                return 1;
1959            }
1960            0
1961        }
1962    }
1963
1964    impl fidl::encoding::ValueTypeMarker for LogSettingsSetComponentInterestRequest {
1965        type Borrowed<'a> = &'a Self;
1966        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1967            value
1968        }
1969    }
1970
1971    unsafe impl fidl::encoding::TypeMarker for LogSettingsSetComponentInterestRequest {
1972        type Owned = Self;
1973
1974        #[inline(always)]
1975        fn inline_align(_context: fidl::encoding::Context) -> usize {
1976            8
1977        }
1978
1979        #[inline(always)]
1980        fn inline_size(_context: fidl::encoding::Context) -> usize {
1981            16
1982        }
1983    }
1984
1985    unsafe impl<D: fidl::encoding::ResourceDialect>
1986        fidl::encoding::Encode<LogSettingsSetComponentInterestRequest, D>
1987        for &LogSettingsSetComponentInterestRequest
1988    {
1989        unsafe fn encode(
1990            self,
1991            encoder: &mut fidl::encoding::Encoder<'_, D>,
1992            offset: usize,
1993            mut depth: fidl::encoding::Depth,
1994        ) -> fidl::Result<()> {
1995            encoder.debug_check_bounds::<LogSettingsSetComponentInterestRequest>(offset);
1996            // Vector header
1997            let max_ordinal: u64 = self.max_ordinal_present();
1998            encoder.write_num(max_ordinal, offset);
1999            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2000            // Calling encoder.out_of_line_offset(0) is not allowed.
2001            if max_ordinal == 0 {
2002                return Ok(());
2003            }
2004            depth.increment()?;
2005            let envelope_size = 8;
2006            let bytes_len = max_ordinal as usize * envelope_size;
2007            #[allow(unused_variables)]
2008            let offset = encoder.out_of_line_offset(bytes_len);
2009            let mut _prev_end_offset: usize = 0;
2010            if 1 > max_ordinal {
2011                return Ok(());
2012            }
2013
2014            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2015            // are envelope_size bytes.
2016            let cur_offset: usize = (1 - 1) * envelope_size;
2017
2018            // Zero reserved fields.
2019            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2020
2021            // Safety:
2022            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2023            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2024            //   envelope_size bytes, there is always sufficient room.
2025            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LogInterestSelector, 64>, D>(
2026            self.selectors.as_ref().map(<fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::ValueTypeMarker>::borrow),
2027            encoder, offset + cur_offset, depth
2028        )?;
2029
2030            _prev_end_offset = cur_offset + envelope_size;
2031            if 2 > max_ordinal {
2032                return Ok(());
2033            }
2034
2035            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2036            // are envelope_size bytes.
2037            let cur_offset: usize = (2 - 1) * envelope_size;
2038
2039            // Zero reserved fields.
2040            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2041
2042            // Safety:
2043            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2044            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2045            //   envelope_size bytes, there is always sufficient room.
2046            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2047                self.persist.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2048                encoder,
2049                offset + cur_offset,
2050                depth,
2051            )?;
2052
2053            _prev_end_offset = cur_offset + envelope_size;
2054
2055            Ok(())
2056        }
2057    }
2058
2059    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2060        for LogSettingsSetComponentInterestRequest
2061    {
2062        #[inline(always)]
2063        fn new_empty() -> Self {
2064            Self::default()
2065        }
2066
2067        unsafe fn decode(
2068            &mut self,
2069            decoder: &mut fidl::encoding::Decoder<'_, D>,
2070            offset: usize,
2071            mut depth: fidl::encoding::Depth,
2072        ) -> fidl::Result<()> {
2073            decoder.debug_check_bounds::<Self>(offset);
2074            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2075                None => return Err(fidl::Error::NotNullable),
2076                Some(len) => len,
2077            };
2078            // Calling decoder.out_of_line_offset(0) is not allowed.
2079            if len == 0 {
2080                return Ok(());
2081            };
2082            depth.increment()?;
2083            let envelope_size = 8;
2084            let bytes_len = len * envelope_size;
2085            let offset = decoder.out_of_line_offset(bytes_len)?;
2086            // Decode the envelope for each type.
2087            let mut _next_ordinal_to_read = 0;
2088            let mut next_offset = offset;
2089            let end_offset = offset + bytes_len;
2090            _next_ordinal_to_read += 1;
2091            if next_offset >= end_offset {
2092                return Ok(());
2093            }
2094
2095            // Decode unknown envelopes for gaps in ordinals.
2096            while _next_ordinal_to_read < 1 {
2097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2098                _next_ordinal_to_read += 1;
2099                next_offset += envelope_size;
2100            }
2101
2102            let next_out_of_line = decoder.next_out_of_line();
2103            let handles_before = decoder.remaining_handles();
2104            if let Some((inlined, num_bytes, num_handles)) =
2105                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2106            {
2107                let member_inline_size = <fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2108                if inlined != (member_inline_size <= 4) {
2109                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2110                }
2111                let inner_offset;
2112                let mut inner_depth = depth.clone();
2113                if inlined {
2114                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2115                    inner_offset = next_offset;
2116                } else {
2117                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2118                    inner_depth.increment()?;
2119                }
2120                let val_ref = self.selectors.get_or_insert_with(
2121                    || fidl::new_empty!(fidl::encoding::Vector<LogInterestSelector, 64>, D),
2122                );
2123                fidl::decode!(fidl::encoding::Vector<LogInterestSelector, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
2124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2125                {
2126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2127                }
2128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2130                }
2131            }
2132
2133            next_offset += envelope_size;
2134            _next_ordinal_to_read += 1;
2135            if next_offset >= end_offset {
2136                return Ok(());
2137            }
2138
2139            // Decode unknown envelopes for gaps in ordinals.
2140            while _next_ordinal_to_read < 2 {
2141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2142                _next_ordinal_to_read += 1;
2143                next_offset += envelope_size;
2144            }
2145
2146            let next_out_of_line = decoder.next_out_of_line();
2147            let handles_before = decoder.remaining_handles();
2148            if let Some((inlined, num_bytes, num_handles)) =
2149                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2150            {
2151                let member_inline_size =
2152                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2153                if inlined != (member_inline_size <= 4) {
2154                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2155                }
2156                let inner_offset;
2157                let mut inner_depth = depth.clone();
2158                if inlined {
2159                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2160                    inner_offset = next_offset;
2161                } else {
2162                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2163                    inner_depth.increment()?;
2164                }
2165                let val_ref = self.persist.get_or_insert_with(|| fidl::new_empty!(bool, D));
2166                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2168                {
2169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2170                }
2171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2173                }
2174            }
2175
2176            next_offset += envelope_size;
2177
2178            // Decode the remaining unknown envelopes.
2179            while next_offset < end_offset {
2180                _next_ordinal_to_read += 1;
2181                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2182                next_offset += envelope_size;
2183            }
2184
2185            Ok(())
2186        }
2187    }
2188
2189    impl LogStreamOptions {
2190        #[inline(always)]
2191        fn max_ordinal_present(&self) -> u64 {
2192            if let Some(_) = self.include_rolled_out {
2193                return 4;
2194            }
2195            if let Some(_) = self.include_component_url {
2196                return 3;
2197            }
2198            if let Some(_) = self.include_moniker {
2199                return 2;
2200            }
2201            if let Some(_) = self.mode {
2202                return 1;
2203            }
2204            0
2205        }
2206    }
2207
2208    impl fidl::encoding::ValueTypeMarker for LogStreamOptions {
2209        type Borrowed<'a> = &'a Self;
2210        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2211            value
2212        }
2213    }
2214
2215    unsafe impl fidl::encoding::TypeMarker for LogStreamOptions {
2216        type Owned = Self;
2217
2218        #[inline(always)]
2219        fn inline_align(_context: fidl::encoding::Context) -> usize {
2220            8
2221        }
2222
2223        #[inline(always)]
2224        fn inline_size(_context: fidl::encoding::Context) -> usize {
2225            16
2226        }
2227    }
2228
2229    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LogStreamOptions, D>
2230        for &LogStreamOptions
2231    {
2232        unsafe fn encode(
2233            self,
2234            encoder: &mut fidl::encoding::Encoder<'_, D>,
2235            offset: usize,
2236            mut depth: fidl::encoding::Depth,
2237        ) -> fidl::Result<()> {
2238            encoder.debug_check_bounds::<LogStreamOptions>(offset);
2239            // Vector header
2240            let max_ordinal: u64 = self.max_ordinal_present();
2241            encoder.write_num(max_ordinal, offset);
2242            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2243            // Calling encoder.out_of_line_offset(0) is not allowed.
2244            if max_ordinal == 0 {
2245                return Ok(());
2246            }
2247            depth.increment()?;
2248            let envelope_size = 8;
2249            let bytes_len = max_ordinal as usize * envelope_size;
2250            #[allow(unused_variables)]
2251            let offset = encoder.out_of_line_offset(bytes_len);
2252            let mut _prev_end_offset: usize = 0;
2253            if 1 > max_ordinal {
2254                return Ok(());
2255            }
2256
2257            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2258            // are envelope_size bytes.
2259            let cur_offset: usize = (1 - 1) * envelope_size;
2260
2261            // Zero reserved fields.
2262            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2263
2264            // Safety:
2265            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2266            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2267            //   envelope_size bytes, there is always sufficient room.
2268            fidl::encoding::encode_in_envelope_optional::<StreamMode, D>(
2269                self.mode.as_ref().map(<StreamMode as fidl::encoding::ValueTypeMarker>::borrow),
2270                encoder,
2271                offset + cur_offset,
2272                depth,
2273            )?;
2274
2275            _prev_end_offset = cur_offset + envelope_size;
2276            if 2 > max_ordinal {
2277                return Ok(());
2278            }
2279
2280            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2281            // are envelope_size bytes.
2282            let cur_offset: usize = (2 - 1) * envelope_size;
2283
2284            // Zero reserved fields.
2285            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2286
2287            // Safety:
2288            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2289            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2290            //   envelope_size bytes, there is always sufficient room.
2291            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2292                self.include_moniker
2293                    .as_ref()
2294                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2295                encoder,
2296                offset + cur_offset,
2297                depth,
2298            )?;
2299
2300            _prev_end_offset = cur_offset + envelope_size;
2301            if 3 > max_ordinal {
2302                return Ok(());
2303            }
2304
2305            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2306            // are envelope_size bytes.
2307            let cur_offset: usize = (3 - 1) * envelope_size;
2308
2309            // Zero reserved fields.
2310            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2311
2312            // Safety:
2313            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2314            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2315            //   envelope_size bytes, there is always sufficient room.
2316            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2317                self.include_component_url
2318                    .as_ref()
2319                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2320                encoder,
2321                offset + cur_offset,
2322                depth,
2323            )?;
2324
2325            _prev_end_offset = cur_offset + envelope_size;
2326            if 4 > max_ordinal {
2327                return Ok(());
2328            }
2329
2330            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2331            // are envelope_size bytes.
2332            let cur_offset: usize = (4 - 1) * envelope_size;
2333
2334            // Zero reserved fields.
2335            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2336
2337            // Safety:
2338            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2339            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2340            //   envelope_size bytes, there is always sufficient room.
2341            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2342                self.include_rolled_out
2343                    .as_ref()
2344                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2345                encoder,
2346                offset + cur_offset,
2347                depth,
2348            )?;
2349
2350            _prev_end_offset = cur_offset + envelope_size;
2351
2352            Ok(())
2353        }
2354    }
2355
2356    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogStreamOptions {
2357        #[inline(always)]
2358        fn new_empty() -> Self {
2359            Self::default()
2360        }
2361
2362        unsafe fn decode(
2363            &mut self,
2364            decoder: &mut fidl::encoding::Decoder<'_, D>,
2365            offset: usize,
2366            mut depth: fidl::encoding::Depth,
2367        ) -> fidl::Result<()> {
2368            decoder.debug_check_bounds::<Self>(offset);
2369            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2370                None => return Err(fidl::Error::NotNullable),
2371                Some(len) => len,
2372            };
2373            // Calling decoder.out_of_line_offset(0) is not allowed.
2374            if len == 0 {
2375                return Ok(());
2376            };
2377            depth.increment()?;
2378            let envelope_size = 8;
2379            let bytes_len = len * envelope_size;
2380            let offset = decoder.out_of_line_offset(bytes_len)?;
2381            // Decode the envelope for each type.
2382            let mut _next_ordinal_to_read = 0;
2383            let mut next_offset = offset;
2384            let end_offset = offset + bytes_len;
2385            _next_ordinal_to_read += 1;
2386            if next_offset >= end_offset {
2387                return Ok(());
2388            }
2389
2390            // Decode unknown envelopes for gaps in ordinals.
2391            while _next_ordinal_to_read < 1 {
2392                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2393                _next_ordinal_to_read += 1;
2394                next_offset += envelope_size;
2395            }
2396
2397            let next_out_of_line = decoder.next_out_of_line();
2398            let handles_before = decoder.remaining_handles();
2399            if let Some((inlined, num_bytes, num_handles)) =
2400                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2401            {
2402                let member_inline_size =
2403                    <StreamMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2404                if inlined != (member_inline_size <= 4) {
2405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2406                }
2407                let inner_offset;
2408                let mut inner_depth = depth.clone();
2409                if inlined {
2410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2411                    inner_offset = next_offset;
2412                } else {
2413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2414                    inner_depth.increment()?;
2415                }
2416                let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(StreamMode, D));
2417                fidl::decode!(StreamMode, D, val_ref, decoder, inner_offset, inner_depth)?;
2418                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2419                {
2420                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2421                }
2422                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2423                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2424                }
2425            }
2426
2427            next_offset += envelope_size;
2428            _next_ordinal_to_read += 1;
2429            if next_offset >= end_offset {
2430                return Ok(());
2431            }
2432
2433            // Decode unknown envelopes for gaps in ordinals.
2434            while _next_ordinal_to_read < 2 {
2435                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2436                _next_ordinal_to_read += 1;
2437                next_offset += envelope_size;
2438            }
2439
2440            let next_out_of_line = decoder.next_out_of_line();
2441            let handles_before = decoder.remaining_handles();
2442            if let Some((inlined, num_bytes, num_handles)) =
2443                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2444            {
2445                let member_inline_size =
2446                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2447                if inlined != (member_inline_size <= 4) {
2448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2449                }
2450                let inner_offset;
2451                let mut inner_depth = depth.clone();
2452                if inlined {
2453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2454                    inner_offset = next_offset;
2455                } else {
2456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2457                    inner_depth.increment()?;
2458                }
2459                let val_ref = self.include_moniker.get_or_insert_with(|| fidl::new_empty!(bool, D));
2460                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2462                {
2463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2464                }
2465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2467                }
2468            }
2469
2470            next_offset += envelope_size;
2471            _next_ordinal_to_read += 1;
2472            if next_offset >= end_offset {
2473                return Ok(());
2474            }
2475
2476            // Decode unknown envelopes for gaps in ordinals.
2477            while _next_ordinal_to_read < 3 {
2478                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2479                _next_ordinal_to_read += 1;
2480                next_offset += envelope_size;
2481            }
2482
2483            let next_out_of_line = decoder.next_out_of_line();
2484            let handles_before = decoder.remaining_handles();
2485            if let Some((inlined, num_bytes, num_handles)) =
2486                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2487            {
2488                let member_inline_size =
2489                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2490                if inlined != (member_inline_size <= 4) {
2491                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2492                }
2493                let inner_offset;
2494                let mut inner_depth = depth.clone();
2495                if inlined {
2496                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2497                    inner_offset = next_offset;
2498                } else {
2499                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2500                    inner_depth.increment()?;
2501                }
2502                let val_ref =
2503                    self.include_component_url.get_or_insert_with(|| fidl::new_empty!(bool, D));
2504                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2505                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2506                {
2507                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2508                }
2509                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2510                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2511                }
2512            }
2513
2514            next_offset += envelope_size;
2515            _next_ordinal_to_read += 1;
2516            if next_offset >= end_offset {
2517                return Ok(());
2518            }
2519
2520            // Decode unknown envelopes for gaps in ordinals.
2521            while _next_ordinal_to_read < 4 {
2522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2523                _next_ordinal_to_read += 1;
2524                next_offset += envelope_size;
2525            }
2526
2527            let next_out_of_line = decoder.next_out_of_line();
2528            let handles_before = decoder.remaining_handles();
2529            if let Some((inlined, num_bytes, num_handles)) =
2530                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2531            {
2532                let member_inline_size =
2533                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2534                if inlined != (member_inline_size <= 4) {
2535                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2536                }
2537                let inner_offset;
2538                let mut inner_depth = depth.clone();
2539                if inlined {
2540                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2541                    inner_offset = next_offset;
2542                } else {
2543                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2544                    inner_depth.increment()?;
2545                }
2546                let val_ref =
2547                    self.include_rolled_out.get_or_insert_with(|| fidl::new_empty!(bool, D));
2548                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2549                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2550                {
2551                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2552                }
2553                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2554                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2555                }
2556            }
2557
2558            next_offset += envelope_size;
2559
2560            // Decode the remaining unknown envelopes.
2561            while next_offset < end_offset {
2562                _next_ordinal_to_read += 1;
2563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2564                next_offset += envelope_size;
2565            }
2566
2567            Ok(())
2568        }
2569    }
2570
2571    impl PerformanceConfiguration {
2572        #[inline(always)]
2573        fn max_ordinal_present(&self) -> u64 {
2574            if let Some(_) = self.batch_retrieval_timeout_seconds {
2575                return 2;
2576            }
2577            if let Some(_) = self.max_aggregate_content_size_bytes {
2578                return 1;
2579            }
2580            0
2581        }
2582    }
2583
2584    impl fidl::encoding::ValueTypeMarker for PerformanceConfiguration {
2585        type Borrowed<'a> = &'a Self;
2586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2587            value
2588        }
2589    }
2590
2591    unsafe impl fidl::encoding::TypeMarker for PerformanceConfiguration {
2592        type Owned = Self;
2593
2594        #[inline(always)]
2595        fn inline_align(_context: fidl::encoding::Context) -> usize {
2596            8
2597        }
2598
2599        #[inline(always)]
2600        fn inline_size(_context: fidl::encoding::Context) -> usize {
2601            16
2602        }
2603    }
2604
2605    unsafe impl<D: fidl::encoding::ResourceDialect>
2606        fidl::encoding::Encode<PerformanceConfiguration, D> for &PerformanceConfiguration
2607    {
2608        unsafe fn encode(
2609            self,
2610            encoder: &mut fidl::encoding::Encoder<'_, D>,
2611            offset: usize,
2612            mut depth: fidl::encoding::Depth,
2613        ) -> fidl::Result<()> {
2614            encoder.debug_check_bounds::<PerformanceConfiguration>(offset);
2615            // Vector header
2616            let max_ordinal: u64 = self.max_ordinal_present();
2617            encoder.write_num(max_ordinal, offset);
2618            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2619            // Calling encoder.out_of_line_offset(0) is not allowed.
2620            if max_ordinal == 0 {
2621                return Ok(());
2622            }
2623            depth.increment()?;
2624            let envelope_size = 8;
2625            let bytes_len = max_ordinal as usize * envelope_size;
2626            #[allow(unused_variables)]
2627            let offset = encoder.out_of_line_offset(bytes_len);
2628            let mut _prev_end_offset: usize = 0;
2629            if 1 > max_ordinal {
2630                return Ok(());
2631            }
2632
2633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2634            // are envelope_size bytes.
2635            let cur_offset: usize = (1 - 1) * envelope_size;
2636
2637            // Zero reserved fields.
2638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2639
2640            // Safety:
2641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2643            //   envelope_size bytes, there is always sufficient room.
2644            fidl::encoding::encode_in_envelope_optional::<u64, D>(
2645                self.max_aggregate_content_size_bytes
2646                    .as_ref()
2647                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2648                encoder,
2649                offset + cur_offset,
2650                depth,
2651            )?;
2652
2653            _prev_end_offset = cur_offset + envelope_size;
2654            if 2 > max_ordinal {
2655                return Ok(());
2656            }
2657
2658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2659            // are envelope_size bytes.
2660            let cur_offset: usize = (2 - 1) * envelope_size;
2661
2662            // Zero reserved fields.
2663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2664
2665            // Safety:
2666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2668            //   envelope_size bytes, there is always sufficient room.
2669            fidl::encoding::encode_in_envelope_optional::<i64, D>(
2670                self.batch_retrieval_timeout_seconds
2671                    .as_ref()
2672                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2673                encoder,
2674                offset + cur_offset,
2675                depth,
2676            )?;
2677
2678            _prev_end_offset = cur_offset + envelope_size;
2679
2680            Ok(())
2681        }
2682    }
2683
2684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2685        for PerformanceConfiguration
2686    {
2687        #[inline(always)]
2688        fn new_empty() -> Self {
2689            Self::default()
2690        }
2691
2692        unsafe fn decode(
2693            &mut self,
2694            decoder: &mut fidl::encoding::Decoder<'_, D>,
2695            offset: usize,
2696            mut depth: fidl::encoding::Depth,
2697        ) -> fidl::Result<()> {
2698            decoder.debug_check_bounds::<Self>(offset);
2699            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2700                None => return Err(fidl::Error::NotNullable),
2701                Some(len) => len,
2702            };
2703            // Calling decoder.out_of_line_offset(0) is not allowed.
2704            if len == 0 {
2705                return Ok(());
2706            };
2707            depth.increment()?;
2708            let envelope_size = 8;
2709            let bytes_len = len * envelope_size;
2710            let offset = decoder.out_of_line_offset(bytes_len)?;
2711            // Decode the envelope for each type.
2712            let mut _next_ordinal_to_read = 0;
2713            let mut next_offset = offset;
2714            let end_offset = offset + bytes_len;
2715            _next_ordinal_to_read += 1;
2716            if next_offset >= end_offset {
2717                return Ok(());
2718            }
2719
2720            // Decode unknown envelopes for gaps in ordinals.
2721            while _next_ordinal_to_read < 1 {
2722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2723                _next_ordinal_to_read += 1;
2724                next_offset += envelope_size;
2725            }
2726
2727            let next_out_of_line = decoder.next_out_of_line();
2728            let handles_before = decoder.remaining_handles();
2729            if let Some((inlined, num_bytes, num_handles)) =
2730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2731            {
2732                let member_inline_size =
2733                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2734                if inlined != (member_inline_size <= 4) {
2735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2736                }
2737                let inner_offset;
2738                let mut inner_depth = depth.clone();
2739                if inlined {
2740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2741                    inner_offset = next_offset;
2742                } else {
2743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2744                    inner_depth.increment()?;
2745                }
2746                let val_ref = self
2747                    .max_aggregate_content_size_bytes
2748                    .get_or_insert_with(|| fidl::new_empty!(u64, D));
2749                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2750                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2751                {
2752                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2753                }
2754                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2755                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2756                }
2757            }
2758
2759            next_offset += envelope_size;
2760            _next_ordinal_to_read += 1;
2761            if next_offset >= end_offset {
2762                return Ok(());
2763            }
2764
2765            // Decode unknown envelopes for gaps in ordinals.
2766            while _next_ordinal_to_read < 2 {
2767                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2768                _next_ordinal_to_read += 1;
2769                next_offset += envelope_size;
2770            }
2771
2772            let next_out_of_line = decoder.next_out_of_line();
2773            let handles_before = decoder.remaining_handles();
2774            if let Some((inlined, num_bytes, num_handles)) =
2775                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2776            {
2777                let member_inline_size =
2778                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2779                if inlined != (member_inline_size <= 4) {
2780                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2781                }
2782                let inner_offset;
2783                let mut inner_depth = depth.clone();
2784                if inlined {
2785                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2786                    inner_offset = next_offset;
2787                } else {
2788                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2789                    inner_depth.increment()?;
2790                }
2791                let val_ref = self
2792                    .batch_retrieval_timeout_seconds
2793                    .get_or_insert_with(|| fidl::new_empty!(i64, D));
2794                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2795                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2796                {
2797                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2798                }
2799                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2800                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2801                }
2802            }
2803
2804            next_offset += envelope_size;
2805
2806            // Decode the remaining unknown envelopes.
2807            while next_offset < end_offset {
2808                _next_ordinal_to_read += 1;
2809                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2810                next_offset += envelope_size;
2811            }
2812
2813            Ok(())
2814        }
2815    }
2816
2817    impl Selector {
2818        #[inline(always)]
2819        fn max_ordinal_present(&self) -> u64 {
2820            if let Some(_) = self.tree_names {
2821                return 3;
2822            }
2823            if let Some(_) = self.tree_selector {
2824                return 2;
2825            }
2826            if let Some(_) = self.component_selector {
2827                return 1;
2828            }
2829            0
2830        }
2831    }
2832
2833    impl fidl::encoding::ValueTypeMarker for Selector {
2834        type Borrowed<'a> = &'a Self;
2835        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2836            value
2837        }
2838    }
2839
2840    unsafe impl fidl::encoding::TypeMarker for Selector {
2841        type Owned = Self;
2842
2843        #[inline(always)]
2844        fn inline_align(_context: fidl::encoding::Context) -> usize {
2845            8
2846        }
2847
2848        #[inline(always)]
2849        fn inline_size(_context: fidl::encoding::Context) -> usize {
2850            16
2851        }
2852    }
2853
2854    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
2855        unsafe fn encode(
2856            self,
2857            encoder: &mut fidl::encoding::Encoder<'_, D>,
2858            offset: usize,
2859            mut depth: fidl::encoding::Depth,
2860        ) -> fidl::Result<()> {
2861            encoder.debug_check_bounds::<Selector>(offset);
2862            // Vector header
2863            let max_ordinal: u64 = self.max_ordinal_present();
2864            encoder.write_num(max_ordinal, offset);
2865            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2866            // Calling encoder.out_of_line_offset(0) is not allowed.
2867            if max_ordinal == 0 {
2868                return Ok(());
2869            }
2870            depth.increment()?;
2871            let envelope_size = 8;
2872            let bytes_len = max_ordinal as usize * envelope_size;
2873            #[allow(unused_variables)]
2874            let offset = encoder.out_of_line_offset(bytes_len);
2875            let mut _prev_end_offset: usize = 0;
2876            if 1 > max_ordinal {
2877                return Ok(());
2878            }
2879
2880            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2881            // are envelope_size bytes.
2882            let cur_offset: usize = (1 - 1) * envelope_size;
2883
2884            // Zero reserved fields.
2885            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2886
2887            // Safety:
2888            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2889            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2890            //   envelope_size bytes, there is always sufficient room.
2891            fidl::encoding::encode_in_envelope_optional::<ComponentSelector, D>(
2892                self.component_selector
2893                    .as_ref()
2894                    .map(<ComponentSelector as fidl::encoding::ValueTypeMarker>::borrow),
2895                encoder,
2896                offset + cur_offset,
2897                depth,
2898            )?;
2899
2900            _prev_end_offset = cur_offset + envelope_size;
2901            if 2 > max_ordinal {
2902                return Ok(());
2903            }
2904
2905            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2906            // are envelope_size bytes.
2907            let cur_offset: usize = (2 - 1) * envelope_size;
2908
2909            // Zero reserved fields.
2910            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2911
2912            // Safety:
2913            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2914            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2915            //   envelope_size bytes, there is always sufficient room.
2916            fidl::encoding::encode_in_envelope_optional::<TreeSelector, D>(
2917                self.tree_selector
2918                    .as_ref()
2919                    .map(<TreeSelector as fidl::encoding::ValueTypeMarker>::borrow),
2920                encoder,
2921                offset + cur_offset,
2922                depth,
2923            )?;
2924
2925            _prev_end_offset = cur_offset + envelope_size;
2926            if 3 > max_ordinal {
2927                return Ok(());
2928            }
2929
2930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2931            // are envelope_size bytes.
2932            let cur_offset: usize = (3 - 1) * envelope_size;
2933
2934            // Zero reserved fields.
2935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2936
2937            // Safety:
2938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2940            //   envelope_size bytes, there is always sufficient room.
2941            fidl::encoding::encode_in_envelope_optional::<TreeNames, D>(
2942                self.tree_names
2943                    .as_ref()
2944                    .map(<TreeNames as fidl::encoding::ValueTypeMarker>::borrow),
2945                encoder,
2946                offset + cur_offset,
2947                depth,
2948            )?;
2949
2950            _prev_end_offset = cur_offset + envelope_size;
2951
2952            Ok(())
2953        }
2954    }
2955
2956    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
2957        #[inline(always)]
2958        fn new_empty() -> Self {
2959            Self::default()
2960        }
2961
2962        unsafe fn decode(
2963            &mut self,
2964            decoder: &mut fidl::encoding::Decoder<'_, D>,
2965            offset: usize,
2966            mut depth: fidl::encoding::Depth,
2967        ) -> fidl::Result<()> {
2968            decoder.debug_check_bounds::<Self>(offset);
2969            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2970                None => return Err(fidl::Error::NotNullable),
2971                Some(len) => len,
2972            };
2973            // Calling decoder.out_of_line_offset(0) is not allowed.
2974            if len == 0 {
2975                return Ok(());
2976            };
2977            depth.increment()?;
2978            let envelope_size = 8;
2979            let bytes_len = len * envelope_size;
2980            let offset = decoder.out_of_line_offset(bytes_len)?;
2981            // Decode the envelope for each type.
2982            let mut _next_ordinal_to_read = 0;
2983            let mut next_offset = offset;
2984            let end_offset = offset + bytes_len;
2985            _next_ordinal_to_read += 1;
2986            if next_offset >= end_offset {
2987                return Ok(());
2988            }
2989
2990            // Decode unknown envelopes for gaps in ordinals.
2991            while _next_ordinal_to_read < 1 {
2992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2993                _next_ordinal_to_read += 1;
2994                next_offset += envelope_size;
2995            }
2996
2997            let next_out_of_line = decoder.next_out_of_line();
2998            let handles_before = decoder.remaining_handles();
2999            if let Some((inlined, num_bytes, num_handles)) =
3000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3001            {
3002                let member_inline_size =
3003                    <ComponentSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3004                if inlined != (member_inline_size <= 4) {
3005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3006                }
3007                let inner_offset;
3008                let mut inner_depth = depth.clone();
3009                if inlined {
3010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3011                    inner_offset = next_offset;
3012                } else {
3013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3014                    inner_depth.increment()?;
3015                }
3016                let val_ref = self
3017                    .component_selector
3018                    .get_or_insert_with(|| fidl::new_empty!(ComponentSelector, D));
3019                fidl::decode!(ComponentSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
3020                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3021                {
3022                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3023                }
3024                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3025                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3026                }
3027            }
3028
3029            next_offset += envelope_size;
3030            _next_ordinal_to_read += 1;
3031            if next_offset >= end_offset {
3032                return Ok(());
3033            }
3034
3035            // Decode unknown envelopes for gaps in ordinals.
3036            while _next_ordinal_to_read < 2 {
3037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3038                _next_ordinal_to_read += 1;
3039                next_offset += envelope_size;
3040            }
3041
3042            let next_out_of_line = decoder.next_out_of_line();
3043            let handles_before = decoder.remaining_handles();
3044            if let Some((inlined, num_bytes, num_handles)) =
3045                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3046            {
3047                let member_inline_size =
3048                    <TreeSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3049                if inlined != (member_inline_size <= 4) {
3050                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3051                }
3052                let inner_offset;
3053                let mut inner_depth = depth.clone();
3054                if inlined {
3055                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3056                    inner_offset = next_offset;
3057                } else {
3058                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3059                    inner_depth.increment()?;
3060                }
3061                let val_ref =
3062                    self.tree_selector.get_or_insert_with(|| fidl::new_empty!(TreeSelector, D));
3063                fidl::decode!(TreeSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
3064                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3065                {
3066                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3067                }
3068                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3069                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3070                }
3071            }
3072
3073            next_offset += envelope_size;
3074            _next_ordinal_to_read += 1;
3075            if next_offset >= end_offset {
3076                return Ok(());
3077            }
3078
3079            // Decode unknown envelopes for gaps in ordinals.
3080            while _next_ordinal_to_read < 3 {
3081                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3082                _next_ordinal_to_read += 1;
3083                next_offset += envelope_size;
3084            }
3085
3086            let next_out_of_line = decoder.next_out_of_line();
3087            let handles_before = decoder.remaining_handles();
3088            if let Some((inlined, num_bytes, num_handles)) =
3089                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3090            {
3091                let member_inline_size =
3092                    <TreeNames as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3093                if inlined != (member_inline_size <= 4) {
3094                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3095                }
3096                let inner_offset;
3097                let mut inner_depth = depth.clone();
3098                if inlined {
3099                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3100                    inner_offset = next_offset;
3101                } else {
3102                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3103                    inner_depth.increment()?;
3104                }
3105                let val_ref = self.tree_names.get_or_insert_with(|| fidl::new_empty!(TreeNames, D));
3106                fidl::decode!(TreeNames, D, val_ref, decoder, inner_offset, inner_depth)?;
3107                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3108                {
3109                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3110                }
3111                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3112                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3113                }
3114            }
3115
3116            next_offset += envelope_size;
3117
3118            // Decode the remaining unknown envelopes.
3119            while next_offset < end_offset {
3120                _next_ordinal_to_read += 1;
3121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3122                next_offset += envelope_size;
3123            }
3124
3125            Ok(())
3126        }
3127    }
3128
3129    impl StreamParameters {
3130        #[inline(always)]
3131        fn max_ordinal_present(&self) -> u64 {
3132            if let Some(_) = self.performance_configuration {
3133                return 6;
3134            }
3135            if let Some(_) = self.batch_retrieval_timeout_seconds {
3136                return 5;
3137            }
3138            if let Some(_) = self.client_selector_configuration {
3139                return 4;
3140            }
3141            if let Some(_) = self.format {
3142                return 3;
3143            }
3144            if let Some(_) = self.stream_mode {
3145                return 2;
3146            }
3147            if let Some(_) = self.data_type {
3148                return 1;
3149            }
3150            0
3151        }
3152    }
3153
3154    impl fidl::encoding::ValueTypeMarker for StreamParameters {
3155        type Borrowed<'a> = &'a Self;
3156        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3157            value
3158        }
3159    }
3160
3161    unsafe impl fidl::encoding::TypeMarker for StreamParameters {
3162        type Owned = Self;
3163
3164        #[inline(always)]
3165        fn inline_align(_context: fidl::encoding::Context) -> usize {
3166            8
3167        }
3168
3169        #[inline(always)]
3170        fn inline_size(_context: fidl::encoding::Context) -> usize {
3171            16
3172        }
3173    }
3174
3175    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StreamParameters, D>
3176        for &StreamParameters
3177    {
3178        unsafe fn encode(
3179            self,
3180            encoder: &mut fidl::encoding::Encoder<'_, D>,
3181            offset: usize,
3182            mut depth: fidl::encoding::Depth,
3183        ) -> fidl::Result<()> {
3184            encoder.debug_check_bounds::<StreamParameters>(offset);
3185            // Vector header
3186            let max_ordinal: u64 = self.max_ordinal_present();
3187            encoder.write_num(max_ordinal, offset);
3188            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3189            // Calling encoder.out_of_line_offset(0) is not allowed.
3190            if max_ordinal == 0 {
3191                return Ok(());
3192            }
3193            depth.increment()?;
3194            let envelope_size = 8;
3195            let bytes_len = max_ordinal as usize * envelope_size;
3196            #[allow(unused_variables)]
3197            let offset = encoder.out_of_line_offset(bytes_len);
3198            let mut _prev_end_offset: usize = 0;
3199            if 1 > max_ordinal {
3200                return Ok(());
3201            }
3202
3203            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3204            // are envelope_size bytes.
3205            let cur_offset: usize = (1 - 1) * envelope_size;
3206
3207            // Zero reserved fields.
3208            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3209
3210            // Safety:
3211            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3212            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3213            //   envelope_size bytes, there is always sufficient room.
3214            fidl::encoding::encode_in_envelope_optional::<DataType, D>(
3215                self.data_type.as_ref().map(<DataType as fidl::encoding::ValueTypeMarker>::borrow),
3216                encoder,
3217                offset + cur_offset,
3218                depth,
3219            )?;
3220
3221            _prev_end_offset = cur_offset + envelope_size;
3222            if 2 > max_ordinal {
3223                return Ok(());
3224            }
3225
3226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3227            // are envelope_size bytes.
3228            let cur_offset: usize = (2 - 1) * envelope_size;
3229
3230            // Zero reserved fields.
3231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3232
3233            // Safety:
3234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3236            //   envelope_size bytes, there is always sufficient room.
3237            fidl::encoding::encode_in_envelope_optional::<StreamMode, D>(
3238                self.stream_mode
3239                    .as_ref()
3240                    .map(<StreamMode as fidl::encoding::ValueTypeMarker>::borrow),
3241                encoder,
3242                offset + cur_offset,
3243                depth,
3244            )?;
3245
3246            _prev_end_offset = cur_offset + envelope_size;
3247            if 3 > max_ordinal {
3248                return Ok(());
3249            }
3250
3251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3252            // are envelope_size bytes.
3253            let cur_offset: usize = (3 - 1) * envelope_size;
3254
3255            // Zero reserved fields.
3256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3257
3258            // Safety:
3259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3261            //   envelope_size bytes, there is always sufficient room.
3262            fidl::encoding::encode_in_envelope_optional::<Format, D>(
3263                self.format.as_ref().map(<Format as fidl::encoding::ValueTypeMarker>::borrow),
3264                encoder,
3265                offset + cur_offset,
3266                depth,
3267            )?;
3268
3269            _prev_end_offset = cur_offset + envelope_size;
3270            if 4 > max_ordinal {
3271                return Ok(());
3272            }
3273
3274            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3275            // are envelope_size bytes.
3276            let cur_offset: usize = (4 - 1) * envelope_size;
3277
3278            // Zero reserved fields.
3279            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3280
3281            // Safety:
3282            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3283            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3284            //   envelope_size bytes, there is always sufficient room.
3285            fidl::encoding::encode_in_envelope_optional::<ClientSelectorConfiguration, D>(
3286                self.client_selector_configuration
3287                    .as_ref()
3288                    .map(<ClientSelectorConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3289                encoder,
3290                offset + cur_offset,
3291                depth,
3292            )?;
3293
3294            _prev_end_offset = cur_offset + envelope_size;
3295            if 5 > max_ordinal {
3296                return Ok(());
3297            }
3298
3299            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3300            // are envelope_size bytes.
3301            let cur_offset: usize = (5 - 1) * envelope_size;
3302
3303            // Zero reserved fields.
3304            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3305
3306            // Safety:
3307            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3308            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3309            //   envelope_size bytes, there is always sufficient room.
3310            fidl::encoding::encode_in_envelope_optional::<i64, D>(
3311                self.batch_retrieval_timeout_seconds
3312                    .as_ref()
3313                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3314                encoder,
3315                offset + cur_offset,
3316                depth,
3317            )?;
3318
3319            _prev_end_offset = cur_offset + envelope_size;
3320            if 6 > max_ordinal {
3321                return Ok(());
3322            }
3323
3324            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3325            // are envelope_size bytes.
3326            let cur_offset: usize = (6 - 1) * envelope_size;
3327
3328            // Zero reserved fields.
3329            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3330
3331            // Safety:
3332            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3333            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3334            //   envelope_size bytes, there is always sufficient room.
3335            fidl::encoding::encode_in_envelope_optional::<PerformanceConfiguration, D>(
3336                self.performance_configuration
3337                    .as_ref()
3338                    .map(<PerformanceConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3339                encoder,
3340                offset + cur_offset,
3341                depth,
3342            )?;
3343
3344            _prev_end_offset = cur_offset + envelope_size;
3345
3346            Ok(())
3347        }
3348    }
3349
3350    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamParameters {
3351        #[inline(always)]
3352        fn new_empty() -> Self {
3353            Self::default()
3354        }
3355
3356        unsafe fn decode(
3357            &mut self,
3358            decoder: &mut fidl::encoding::Decoder<'_, D>,
3359            offset: usize,
3360            mut depth: fidl::encoding::Depth,
3361        ) -> fidl::Result<()> {
3362            decoder.debug_check_bounds::<Self>(offset);
3363            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3364                None => return Err(fidl::Error::NotNullable),
3365                Some(len) => len,
3366            };
3367            // Calling decoder.out_of_line_offset(0) is not allowed.
3368            if len == 0 {
3369                return Ok(());
3370            };
3371            depth.increment()?;
3372            let envelope_size = 8;
3373            let bytes_len = len * envelope_size;
3374            let offset = decoder.out_of_line_offset(bytes_len)?;
3375            // Decode the envelope for each type.
3376            let mut _next_ordinal_to_read = 0;
3377            let mut next_offset = offset;
3378            let end_offset = offset + bytes_len;
3379            _next_ordinal_to_read += 1;
3380            if next_offset >= end_offset {
3381                return Ok(());
3382            }
3383
3384            // Decode unknown envelopes for gaps in ordinals.
3385            while _next_ordinal_to_read < 1 {
3386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3387                _next_ordinal_to_read += 1;
3388                next_offset += envelope_size;
3389            }
3390
3391            let next_out_of_line = decoder.next_out_of_line();
3392            let handles_before = decoder.remaining_handles();
3393            if let Some((inlined, num_bytes, num_handles)) =
3394                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3395            {
3396                let member_inline_size =
3397                    <DataType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3398                if inlined != (member_inline_size <= 4) {
3399                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3400                }
3401                let inner_offset;
3402                let mut inner_depth = depth.clone();
3403                if inlined {
3404                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3405                    inner_offset = next_offset;
3406                } else {
3407                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3408                    inner_depth.increment()?;
3409                }
3410                let val_ref = self.data_type.get_or_insert_with(|| fidl::new_empty!(DataType, D));
3411                fidl::decode!(DataType, D, val_ref, decoder, inner_offset, inner_depth)?;
3412                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3413                {
3414                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3415                }
3416                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3417                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3418                }
3419            }
3420
3421            next_offset += envelope_size;
3422            _next_ordinal_to_read += 1;
3423            if next_offset >= end_offset {
3424                return Ok(());
3425            }
3426
3427            // Decode unknown envelopes for gaps in ordinals.
3428            while _next_ordinal_to_read < 2 {
3429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3430                _next_ordinal_to_read += 1;
3431                next_offset += envelope_size;
3432            }
3433
3434            let next_out_of_line = decoder.next_out_of_line();
3435            let handles_before = decoder.remaining_handles();
3436            if let Some((inlined, num_bytes, num_handles)) =
3437                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3438            {
3439                let member_inline_size =
3440                    <StreamMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3441                if inlined != (member_inline_size <= 4) {
3442                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3443                }
3444                let inner_offset;
3445                let mut inner_depth = depth.clone();
3446                if inlined {
3447                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3448                    inner_offset = next_offset;
3449                } else {
3450                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3451                    inner_depth.increment()?;
3452                }
3453                let val_ref =
3454                    self.stream_mode.get_or_insert_with(|| fidl::new_empty!(StreamMode, D));
3455                fidl::decode!(StreamMode, D, val_ref, decoder, inner_offset, inner_depth)?;
3456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3457                {
3458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3459                }
3460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3462                }
3463            }
3464
3465            next_offset += envelope_size;
3466            _next_ordinal_to_read += 1;
3467            if next_offset >= end_offset {
3468                return Ok(());
3469            }
3470
3471            // Decode unknown envelopes for gaps in ordinals.
3472            while _next_ordinal_to_read < 3 {
3473                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3474                _next_ordinal_to_read += 1;
3475                next_offset += envelope_size;
3476            }
3477
3478            let next_out_of_line = decoder.next_out_of_line();
3479            let handles_before = decoder.remaining_handles();
3480            if let Some((inlined, num_bytes, num_handles)) =
3481                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3482            {
3483                let member_inline_size =
3484                    <Format as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3485                if inlined != (member_inline_size <= 4) {
3486                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3487                }
3488                let inner_offset;
3489                let mut inner_depth = depth.clone();
3490                if inlined {
3491                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3492                    inner_offset = next_offset;
3493                } else {
3494                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3495                    inner_depth.increment()?;
3496                }
3497                let val_ref = self.format.get_or_insert_with(|| fidl::new_empty!(Format, D));
3498                fidl::decode!(Format, D, val_ref, decoder, inner_offset, inner_depth)?;
3499                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3500                {
3501                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3502                }
3503                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3504                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3505                }
3506            }
3507
3508            next_offset += envelope_size;
3509            _next_ordinal_to_read += 1;
3510            if next_offset >= end_offset {
3511                return Ok(());
3512            }
3513
3514            // Decode unknown envelopes for gaps in ordinals.
3515            while _next_ordinal_to_read < 4 {
3516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3517                _next_ordinal_to_read += 1;
3518                next_offset += envelope_size;
3519            }
3520
3521            let next_out_of_line = decoder.next_out_of_line();
3522            let handles_before = decoder.remaining_handles();
3523            if let Some((inlined, num_bytes, num_handles)) =
3524                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3525            {
3526                let member_inline_size =
3527                    <ClientSelectorConfiguration as fidl::encoding::TypeMarker>::inline_size(
3528                        decoder.context,
3529                    );
3530                if inlined != (member_inline_size <= 4) {
3531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3532                }
3533                let inner_offset;
3534                let mut inner_depth = depth.clone();
3535                if inlined {
3536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3537                    inner_offset = next_offset;
3538                } else {
3539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3540                    inner_depth.increment()?;
3541                }
3542                let val_ref = self
3543                    .client_selector_configuration
3544                    .get_or_insert_with(|| fidl::new_empty!(ClientSelectorConfiguration, D));
3545                fidl::decode!(
3546                    ClientSelectorConfiguration,
3547                    D,
3548                    val_ref,
3549                    decoder,
3550                    inner_offset,
3551                    inner_depth
3552                )?;
3553                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3554                {
3555                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3556                }
3557                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3558                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3559                }
3560            }
3561
3562            next_offset += envelope_size;
3563            _next_ordinal_to_read += 1;
3564            if next_offset >= end_offset {
3565                return Ok(());
3566            }
3567
3568            // Decode unknown envelopes for gaps in ordinals.
3569            while _next_ordinal_to_read < 5 {
3570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571                _next_ordinal_to_read += 1;
3572                next_offset += envelope_size;
3573            }
3574
3575            let next_out_of_line = decoder.next_out_of_line();
3576            let handles_before = decoder.remaining_handles();
3577            if let Some((inlined, num_bytes, num_handles)) =
3578                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3579            {
3580                let member_inline_size =
3581                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3582                if inlined != (member_inline_size <= 4) {
3583                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3584                }
3585                let inner_offset;
3586                let mut inner_depth = depth.clone();
3587                if inlined {
3588                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3589                    inner_offset = next_offset;
3590                } else {
3591                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3592                    inner_depth.increment()?;
3593                }
3594                let val_ref = self
3595                    .batch_retrieval_timeout_seconds
3596                    .get_or_insert_with(|| fidl::new_empty!(i64, D));
3597                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3598                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3599                {
3600                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3601                }
3602                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3603                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3604                }
3605            }
3606
3607            next_offset += envelope_size;
3608            _next_ordinal_to_read += 1;
3609            if next_offset >= end_offset {
3610                return Ok(());
3611            }
3612
3613            // Decode unknown envelopes for gaps in ordinals.
3614            while _next_ordinal_to_read < 6 {
3615                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3616                _next_ordinal_to_read += 1;
3617                next_offset += envelope_size;
3618            }
3619
3620            let next_out_of_line = decoder.next_out_of_line();
3621            let handles_before = decoder.remaining_handles();
3622            if let Some((inlined, num_bytes, num_handles)) =
3623                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3624            {
3625                let member_inline_size =
3626                    <PerformanceConfiguration as fidl::encoding::TypeMarker>::inline_size(
3627                        decoder.context,
3628                    );
3629                if inlined != (member_inline_size <= 4) {
3630                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3631                }
3632                let inner_offset;
3633                let mut inner_depth = depth.clone();
3634                if inlined {
3635                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3636                    inner_offset = next_offset;
3637                } else {
3638                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3639                    inner_depth.increment()?;
3640                }
3641                let val_ref = self
3642                    .performance_configuration
3643                    .get_or_insert_with(|| fidl::new_empty!(PerformanceConfiguration, D));
3644                fidl::decode!(
3645                    PerformanceConfiguration,
3646                    D,
3647                    val_ref,
3648                    decoder,
3649                    inner_offset,
3650                    inner_depth
3651                )?;
3652                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3653                {
3654                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3655                }
3656                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3657                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3658                }
3659            }
3660
3661            next_offset += envelope_size;
3662
3663            // Decode the remaining unknown envelopes.
3664            while next_offset < end_offset {
3665                _next_ordinal_to_read += 1;
3666                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3667                next_offset += envelope_size;
3668            }
3669
3670            Ok(())
3671        }
3672    }
3673
3674    impl fidl::encoding::ValueTypeMarker for ClientSelectorConfiguration {
3675        type Borrowed<'a> = &'a Self;
3676        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3677            value
3678        }
3679    }
3680
3681    unsafe impl fidl::encoding::TypeMarker for ClientSelectorConfiguration {
3682        type Owned = Self;
3683
3684        #[inline(always)]
3685        fn inline_align(_context: fidl::encoding::Context) -> usize {
3686            8
3687        }
3688
3689        #[inline(always)]
3690        fn inline_size(_context: fidl::encoding::Context) -> usize {
3691            16
3692        }
3693    }
3694
3695    unsafe impl<D: fidl::encoding::ResourceDialect>
3696        fidl::encoding::Encode<ClientSelectorConfiguration, D> for &ClientSelectorConfiguration
3697    {
3698        #[inline]
3699        unsafe fn encode(
3700            self,
3701            encoder: &mut fidl::encoding::Encoder<'_, D>,
3702            offset: usize,
3703            _depth: fidl::encoding::Depth,
3704        ) -> fidl::Result<()> {
3705            encoder.debug_check_bounds::<ClientSelectorConfiguration>(offset);
3706            encoder.write_num::<u64>(self.ordinal(), offset);
3707            match self {
3708            ClientSelectorConfiguration::Selectors(ref val) => {
3709                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<SelectorArgument>, D>(
3710                    <fidl::encoding::UnboundedVector<SelectorArgument> as fidl::encoding::ValueTypeMarker>::borrow(val),
3711                    encoder, offset + 8, _depth
3712                )
3713            }
3714            ClientSelectorConfiguration::SelectAll(ref val) => {
3715                fidl::encoding::encode_in_envelope::<bool, D>(
3716                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
3717                    encoder, offset + 8, _depth
3718                )
3719            }
3720            ClientSelectorConfiguration::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
3721        }
3722        }
3723    }
3724
3725    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3726        for ClientSelectorConfiguration
3727    {
3728        #[inline(always)]
3729        fn new_empty() -> Self {
3730            Self::__SourceBreaking { unknown_ordinal: 0 }
3731        }
3732
3733        #[inline]
3734        unsafe fn decode(
3735            &mut self,
3736            decoder: &mut fidl::encoding::Decoder<'_, D>,
3737            offset: usize,
3738            mut depth: fidl::encoding::Depth,
3739        ) -> fidl::Result<()> {
3740            decoder.debug_check_bounds::<Self>(offset);
3741            #[allow(unused_variables)]
3742            let next_out_of_line = decoder.next_out_of_line();
3743            let handles_before = decoder.remaining_handles();
3744            let (ordinal, inlined, num_bytes, num_handles) =
3745                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
3746
3747            let member_inline_size = match ordinal {
3748            1 => <fidl::encoding::UnboundedVector<SelectorArgument> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
3749            2 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
3750            0 => return Err(fidl::Error::UnknownUnionTag),
3751            _ => num_bytes as usize,
3752        };
3753
3754            if inlined != (member_inline_size <= 4) {
3755                return Err(fidl::Error::InvalidInlineBitInEnvelope);
3756            }
3757            let _inner_offset;
3758            if inlined {
3759                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
3760                _inner_offset = offset + 8;
3761            } else {
3762                depth.increment()?;
3763                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3764            }
3765            match ordinal {
3766                1 => {
3767                    #[allow(irrefutable_let_patterns)]
3768                    if let ClientSelectorConfiguration::Selectors(_) = self {
3769                        // Do nothing, read the value into the object
3770                    } else {
3771                        // Initialize `self` to the right variant
3772                        *self = ClientSelectorConfiguration::Selectors(fidl::new_empty!(
3773                            fidl::encoding::UnboundedVector<SelectorArgument>,
3774                            D
3775                        ));
3776                    }
3777                    #[allow(irrefutable_let_patterns)]
3778                    if let ClientSelectorConfiguration::Selectors(ref mut val) = self {
3779                        fidl::decode!(
3780                            fidl::encoding::UnboundedVector<SelectorArgument>,
3781                            D,
3782                            val,
3783                            decoder,
3784                            _inner_offset,
3785                            depth
3786                        )?;
3787                    } else {
3788                        unreachable!()
3789                    }
3790                }
3791                2 => {
3792                    #[allow(irrefutable_let_patterns)]
3793                    if let ClientSelectorConfiguration::SelectAll(_) = self {
3794                        // Do nothing, read the value into the object
3795                    } else {
3796                        // Initialize `self` to the right variant
3797                        *self = ClientSelectorConfiguration::SelectAll(fidl::new_empty!(bool, D));
3798                    }
3799                    #[allow(irrefutable_let_patterns)]
3800                    if let ClientSelectorConfiguration::SelectAll(ref mut val) = self {
3801                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
3802                    } else {
3803                        unreachable!()
3804                    }
3805                }
3806                #[allow(deprecated)]
3807                ordinal => {
3808                    for _ in 0..num_handles {
3809                        decoder.drop_next_handle()?;
3810                    }
3811                    *self =
3812                        ClientSelectorConfiguration::__SourceBreaking { unknown_ordinal: ordinal };
3813                }
3814            }
3815            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
3816                return Err(fidl::Error::InvalidNumBytesInEnvelope);
3817            }
3818            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3819                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3820            }
3821            Ok(())
3822        }
3823    }
3824
3825    impl fidl::encoding::ValueTypeMarker for SelectorArgument {
3826        type Borrowed<'a> = &'a Self;
3827        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3828            value
3829        }
3830    }
3831
3832    unsafe impl fidl::encoding::TypeMarker for SelectorArgument {
3833        type Owned = Self;
3834
3835        #[inline(always)]
3836        fn inline_align(_context: fidl::encoding::Context) -> usize {
3837            8
3838        }
3839
3840        #[inline(always)]
3841        fn inline_size(_context: fidl::encoding::Context) -> usize {
3842            16
3843        }
3844    }
3845
3846    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SelectorArgument, D>
3847        for &SelectorArgument
3848    {
3849        #[inline]
3850        unsafe fn encode(
3851            self,
3852            encoder: &mut fidl::encoding::Encoder<'_, D>,
3853            offset: usize,
3854            _depth: fidl::encoding::Depth,
3855        ) -> fidl::Result<()> {
3856            encoder.debug_check_bounds::<SelectorArgument>(offset);
3857            encoder.write_num::<u64>(self.ordinal(), offset);
3858            match self {
3859            SelectorArgument::StructuredSelector(ref val) => {
3860                fidl::encoding::encode_in_envelope::<Selector, D>(
3861                    <Selector as fidl::encoding::ValueTypeMarker>::borrow(val),
3862                    encoder, offset + 8, _depth
3863                )
3864            }
3865            SelectorArgument::RawSelector(ref val) => {
3866                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
3867                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
3868                    encoder, offset + 8, _depth
3869                )
3870            }
3871            SelectorArgument::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
3872        }
3873        }
3874    }
3875
3876    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SelectorArgument {
3877        #[inline(always)]
3878        fn new_empty() -> Self {
3879            Self::__SourceBreaking { unknown_ordinal: 0 }
3880        }
3881
3882        #[inline]
3883        unsafe fn decode(
3884            &mut self,
3885            decoder: &mut fidl::encoding::Decoder<'_, D>,
3886            offset: usize,
3887            mut depth: fidl::encoding::Depth,
3888        ) -> fidl::Result<()> {
3889            decoder.debug_check_bounds::<Self>(offset);
3890            #[allow(unused_variables)]
3891            let next_out_of_line = decoder.next_out_of_line();
3892            let handles_before = decoder.remaining_handles();
3893            let (ordinal, inlined, num_bytes, num_handles) =
3894                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
3895
3896            let member_inline_size = match ordinal {
3897                1 => <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
3898                2 => {
3899                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
3900                        decoder.context,
3901                    )
3902                }
3903                0 => return Err(fidl::Error::UnknownUnionTag),
3904                _ => num_bytes as usize,
3905            };
3906
3907            if inlined != (member_inline_size <= 4) {
3908                return Err(fidl::Error::InvalidInlineBitInEnvelope);
3909            }
3910            let _inner_offset;
3911            if inlined {
3912                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
3913                _inner_offset = offset + 8;
3914            } else {
3915                depth.increment()?;
3916                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3917            }
3918            match ordinal {
3919                1 => {
3920                    #[allow(irrefutable_let_patterns)]
3921                    if let SelectorArgument::StructuredSelector(_) = self {
3922                        // Do nothing, read the value into the object
3923                    } else {
3924                        // Initialize `self` to the right variant
3925                        *self = SelectorArgument::StructuredSelector(fidl::new_empty!(Selector, D));
3926                    }
3927                    #[allow(irrefutable_let_patterns)]
3928                    if let SelectorArgument::StructuredSelector(ref mut val) = self {
3929                        fidl::decode!(Selector, D, val, decoder, _inner_offset, depth)?;
3930                    } else {
3931                        unreachable!()
3932                    }
3933                }
3934                2 => {
3935                    #[allow(irrefutable_let_patterns)]
3936                    if let SelectorArgument::RawSelector(_) = self {
3937                        // Do nothing, read the value into the object
3938                    } else {
3939                        // Initialize `self` to the right variant
3940                        *self = SelectorArgument::RawSelector(fidl::new_empty!(
3941                            fidl::encoding::BoundedString<1024>,
3942                            D
3943                        ));
3944                    }
3945                    #[allow(irrefutable_let_patterns)]
3946                    if let SelectorArgument::RawSelector(ref mut val) = self {
3947                        fidl::decode!(
3948                            fidl::encoding::BoundedString<1024>,
3949                            D,
3950                            val,
3951                            decoder,
3952                            _inner_offset,
3953                            depth
3954                        )?;
3955                    } else {
3956                        unreachable!()
3957                    }
3958                }
3959                #[allow(deprecated)]
3960                ordinal => {
3961                    for _ in 0..num_handles {
3962                        decoder.drop_next_handle()?;
3963                    }
3964                    *self = SelectorArgument::__SourceBreaking { unknown_ordinal: ordinal };
3965                }
3966            }
3967            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
3968                return Err(fidl::Error::InvalidNumBytesInEnvelope);
3969            }
3970            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3971                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3972            }
3973            Ok(())
3974        }
3975    }
3976
3977    impl fidl::encoding::ValueTypeMarker for StringSelector {
3978        type Borrowed<'a> = &'a Self;
3979        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3980            value
3981        }
3982    }
3983
3984    unsafe impl fidl::encoding::TypeMarker for StringSelector {
3985        type Owned = Self;
3986
3987        #[inline(always)]
3988        fn inline_align(_context: fidl::encoding::Context) -> usize {
3989            8
3990        }
3991
3992        #[inline(always)]
3993        fn inline_size(_context: fidl::encoding::Context) -> usize {
3994            16
3995        }
3996    }
3997
3998    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StringSelector, D>
3999        for &StringSelector
4000    {
4001        #[inline]
4002        unsafe fn encode(
4003            self,
4004            encoder: &mut fidl::encoding::Encoder<'_, D>,
4005            offset: usize,
4006            _depth: fidl::encoding::Depth,
4007        ) -> fidl::Result<()> {
4008            encoder.debug_check_bounds::<StringSelector>(offset);
4009            encoder.write_num::<u64>(self.ordinal(), offset);
4010            match self {
4011            StringSelector::StringPattern(ref val) => {
4012                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
4013                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
4014                    encoder, offset + 8, _depth
4015                )
4016            }
4017            StringSelector::ExactMatch(ref val) => {
4018                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
4019                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
4020                    encoder, offset + 8, _depth
4021                )
4022            }
4023            StringSelector::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4024        }
4025        }
4026    }
4027
4028    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StringSelector {
4029        #[inline(always)]
4030        fn new_empty() -> Self {
4031            Self::__SourceBreaking { unknown_ordinal: 0 }
4032        }
4033
4034        #[inline]
4035        unsafe fn decode(
4036            &mut self,
4037            decoder: &mut fidl::encoding::Decoder<'_, D>,
4038            offset: usize,
4039            mut depth: fidl::encoding::Depth,
4040        ) -> fidl::Result<()> {
4041            decoder.debug_check_bounds::<Self>(offset);
4042            #[allow(unused_variables)]
4043            let next_out_of_line = decoder.next_out_of_line();
4044            let handles_before = decoder.remaining_handles();
4045            let (ordinal, inlined, num_bytes, num_handles) =
4046                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4047
4048            let member_inline_size = match ordinal {
4049                1 => {
4050                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
4051                        decoder.context,
4052                    )
4053                }
4054                2 => {
4055                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
4056                        decoder.context,
4057                    )
4058                }
4059                0 => return Err(fidl::Error::UnknownUnionTag),
4060                _ => num_bytes as usize,
4061            };
4062
4063            if inlined != (member_inline_size <= 4) {
4064                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4065            }
4066            let _inner_offset;
4067            if inlined {
4068                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4069                _inner_offset = offset + 8;
4070            } else {
4071                depth.increment()?;
4072                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4073            }
4074            match ordinal {
4075                1 => {
4076                    #[allow(irrefutable_let_patterns)]
4077                    if let StringSelector::StringPattern(_) = self {
4078                        // Do nothing, read the value into the object
4079                    } else {
4080                        // Initialize `self` to the right variant
4081                        *self = StringSelector::StringPattern(fidl::new_empty!(
4082                            fidl::encoding::BoundedString<1024>,
4083                            D
4084                        ));
4085                    }
4086                    #[allow(irrefutable_let_patterns)]
4087                    if let StringSelector::StringPattern(ref mut val) = self {
4088                        fidl::decode!(
4089                            fidl::encoding::BoundedString<1024>,
4090                            D,
4091                            val,
4092                            decoder,
4093                            _inner_offset,
4094                            depth
4095                        )?;
4096                    } else {
4097                        unreachable!()
4098                    }
4099                }
4100                2 => {
4101                    #[allow(irrefutable_let_patterns)]
4102                    if let StringSelector::ExactMatch(_) = self {
4103                        // Do nothing, read the value into the object
4104                    } else {
4105                        // Initialize `self` to the right variant
4106                        *self = StringSelector::ExactMatch(fidl::new_empty!(
4107                            fidl::encoding::BoundedString<1024>,
4108                            D
4109                        ));
4110                    }
4111                    #[allow(irrefutable_let_patterns)]
4112                    if let StringSelector::ExactMatch(ref mut val) = self {
4113                        fidl::decode!(
4114                            fidl::encoding::BoundedString<1024>,
4115                            D,
4116                            val,
4117                            decoder,
4118                            _inner_offset,
4119                            depth
4120                        )?;
4121                    } else {
4122                        unreachable!()
4123                    }
4124                }
4125                #[allow(deprecated)]
4126                ordinal => {
4127                    for _ in 0..num_handles {
4128                        decoder.drop_next_handle()?;
4129                    }
4130                    *self = StringSelector::__SourceBreaking { unknown_ordinal: ordinal };
4131                }
4132            }
4133            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4134                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4135            }
4136            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4137                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4138            }
4139            Ok(())
4140        }
4141    }
4142
4143    impl fidl::encoding::ValueTypeMarker for TreeNames {
4144        type Borrowed<'a> = &'a Self;
4145        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4146            value
4147        }
4148    }
4149
4150    unsafe impl fidl::encoding::TypeMarker for TreeNames {
4151        type Owned = Self;
4152
4153        #[inline(always)]
4154        fn inline_align(_context: fidl::encoding::Context) -> usize {
4155            8
4156        }
4157
4158        #[inline(always)]
4159        fn inline_size(_context: fidl::encoding::Context) -> usize {
4160            16
4161        }
4162    }
4163
4164    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TreeNames, D>
4165        for &TreeNames
4166    {
4167        #[inline]
4168        unsafe fn encode(
4169            self,
4170            encoder: &mut fidl::encoding::Encoder<'_, D>,
4171            offset: usize,
4172            _depth: fidl::encoding::Depth,
4173        ) -> fidl::Result<()> {
4174            encoder.debug_check_bounds::<TreeNames>(offset);
4175            encoder.write_num::<u64>(self.ordinal(), offset);
4176            match self {
4177            TreeNames::Some(ref val) => {
4178                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>, D>(
4179                    <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>> as fidl::encoding::ValueTypeMarker>::borrow(val),
4180                    encoder, offset + 8, _depth
4181                )
4182            }
4183            TreeNames::All(ref val) => {
4184                fidl::encoding::encode_in_envelope::<All, D>(
4185                    <All as fidl::encoding::ValueTypeMarker>::borrow(val),
4186                    encoder, offset + 8, _depth
4187                )
4188            }
4189            TreeNames::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4190        }
4191        }
4192    }
4193
4194    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TreeNames {
4195        #[inline(always)]
4196        fn new_empty() -> Self {
4197            Self::__SourceBreaking { unknown_ordinal: 0 }
4198        }
4199
4200        #[inline]
4201        unsafe fn decode(
4202            &mut self,
4203            decoder: &mut fidl::encoding::Decoder<'_, D>,
4204            offset: usize,
4205            mut depth: fidl::encoding::Depth,
4206        ) -> fidl::Result<()> {
4207            decoder.debug_check_bounds::<Self>(offset);
4208            #[allow(unused_variables)]
4209            let next_out_of_line = decoder.next_out_of_line();
4210            let handles_before = decoder.remaining_handles();
4211            let (ordinal, inlined, num_bytes, num_handles) =
4212                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4213
4214            let member_inline_size = match ordinal {
4215            1 => <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4216            2 => <All as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4217            0 => return Err(fidl::Error::UnknownUnionTag),
4218            _ => num_bytes as usize,
4219        };
4220
4221            if inlined != (member_inline_size <= 4) {
4222                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4223            }
4224            let _inner_offset;
4225            if inlined {
4226                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4227                _inner_offset = offset + 8;
4228            } else {
4229                depth.increment()?;
4230                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4231            }
4232            match ordinal {
4233                1 => {
4234                    #[allow(irrefutable_let_patterns)]
4235                    if let TreeNames::Some(_) = self {
4236                        // Do nothing, read the value into the object
4237                    } else {
4238                        // Initialize `self` to the right variant
4239                        *self = TreeNames::Some(fidl::new_empty!(
4240                            fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>,
4241                            D
4242                        ));
4243                    }
4244                    #[allow(irrefutable_let_patterns)]
4245                    if let TreeNames::Some(ref mut val) = self {
4246                        fidl::decode!(
4247                            fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>,
4248                            D,
4249                            val,
4250                            decoder,
4251                            _inner_offset,
4252                            depth
4253                        )?;
4254                    } else {
4255                        unreachable!()
4256                    }
4257                }
4258                2 => {
4259                    #[allow(irrefutable_let_patterns)]
4260                    if let TreeNames::All(_) = self {
4261                        // Do nothing, read the value into the object
4262                    } else {
4263                        // Initialize `self` to the right variant
4264                        *self = TreeNames::All(fidl::new_empty!(All, D));
4265                    }
4266                    #[allow(irrefutable_let_patterns)]
4267                    if let TreeNames::All(ref mut val) = self {
4268                        fidl::decode!(All, D, val, decoder, _inner_offset, depth)?;
4269                    } else {
4270                        unreachable!()
4271                    }
4272                }
4273                #[allow(deprecated)]
4274                ordinal => {
4275                    for _ in 0..num_handles {
4276                        decoder.drop_next_handle()?;
4277                    }
4278                    *self = TreeNames::__SourceBreaking { unknown_ordinal: ordinal };
4279                }
4280            }
4281            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4282                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4283            }
4284            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4285                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4286            }
4287            Ok(())
4288        }
4289    }
4290
4291    impl fidl::encoding::ValueTypeMarker for TreeSelector {
4292        type Borrowed<'a> = &'a Self;
4293        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4294            value
4295        }
4296    }
4297
4298    unsafe impl fidl::encoding::TypeMarker for TreeSelector {
4299        type Owned = Self;
4300
4301        #[inline(always)]
4302        fn inline_align(_context: fidl::encoding::Context) -> usize {
4303            8
4304        }
4305
4306        #[inline(always)]
4307        fn inline_size(_context: fidl::encoding::Context) -> usize {
4308            16
4309        }
4310    }
4311
4312    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TreeSelector, D>
4313        for &TreeSelector
4314    {
4315        #[inline]
4316        unsafe fn encode(
4317            self,
4318            encoder: &mut fidl::encoding::Encoder<'_, D>,
4319            offset: usize,
4320            _depth: fidl::encoding::Depth,
4321        ) -> fidl::Result<()> {
4322            encoder.debug_check_bounds::<TreeSelector>(offset);
4323            encoder.write_num::<u64>(self.ordinal(), offset);
4324            match self {
4325                TreeSelector::SubtreeSelector(ref val) => {
4326                    fidl::encoding::encode_in_envelope::<SubtreeSelector, D>(
4327                        <SubtreeSelector as fidl::encoding::ValueTypeMarker>::borrow(val),
4328                        encoder,
4329                        offset + 8,
4330                        _depth,
4331                    )
4332                }
4333                TreeSelector::PropertySelector(ref val) => {
4334                    fidl::encoding::encode_in_envelope::<PropertySelector, D>(
4335                        <PropertySelector as fidl::encoding::ValueTypeMarker>::borrow(val),
4336                        encoder,
4337                        offset + 8,
4338                        _depth,
4339                    )
4340                }
4341                TreeSelector::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4342            }
4343        }
4344    }
4345
4346    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TreeSelector {
4347        #[inline(always)]
4348        fn new_empty() -> Self {
4349            Self::__SourceBreaking { unknown_ordinal: 0 }
4350        }
4351
4352        #[inline]
4353        unsafe fn decode(
4354            &mut self,
4355            decoder: &mut fidl::encoding::Decoder<'_, D>,
4356            offset: usize,
4357            mut depth: fidl::encoding::Depth,
4358        ) -> fidl::Result<()> {
4359            decoder.debug_check_bounds::<Self>(offset);
4360            #[allow(unused_variables)]
4361            let next_out_of_line = decoder.next_out_of_line();
4362            let handles_before = decoder.remaining_handles();
4363            let (ordinal, inlined, num_bytes, num_handles) =
4364                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4365
4366            let member_inline_size = match ordinal {
4367                1 => <SubtreeSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4368                2 => <PropertySelector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4369                0 => return Err(fidl::Error::UnknownUnionTag),
4370                _ => num_bytes as usize,
4371            };
4372
4373            if inlined != (member_inline_size <= 4) {
4374                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4375            }
4376            let _inner_offset;
4377            if inlined {
4378                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4379                _inner_offset = offset + 8;
4380            } else {
4381                depth.increment()?;
4382                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4383            }
4384            match ordinal {
4385                1 => {
4386                    #[allow(irrefutable_let_patterns)]
4387                    if let TreeSelector::SubtreeSelector(_) = self {
4388                        // Do nothing, read the value into the object
4389                    } else {
4390                        // Initialize `self` to the right variant
4391                        *self = TreeSelector::SubtreeSelector(fidl::new_empty!(SubtreeSelector, D));
4392                    }
4393                    #[allow(irrefutable_let_patterns)]
4394                    if let TreeSelector::SubtreeSelector(ref mut val) = self {
4395                        fidl::decode!(SubtreeSelector, D, val, decoder, _inner_offset, depth)?;
4396                    } else {
4397                        unreachable!()
4398                    }
4399                }
4400                2 => {
4401                    #[allow(irrefutable_let_patterns)]
4402                    if let TreeSelector::PropertySelector(_) = self {
4403                        // Do nothing, read the value into the object
4404                    } else {
4405                        // Initialize `self` to the right variant
4406                        *self =
4407                            TreeSelector::PropertySelector(fidl::new_empty!(PropertySelector, D));
4408                    }
4409                    #[allow(irrefutable_let_patterns)]
4410                    if let TreeSelector::PropertySelector(ref mut val) = self {
4411                        fidl::decode!(PropertySelector, D, val, decoder, _inner_offset, depth)?;
4412                    } else {
4413                        unreachable!()
4414                    }
4415                }
4416                #[allow(deprecated)]
4417                ordinal => {
4418                    for _ in 0..num_handles {
4419                        decoder.drop_next_handle()?;
4420                    }
4421                    *self = TreeSelector::__SourceBreaking { unknown_ordinal: ordinal };
4422                }
4423            }
4424            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4425                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4426            }
4427            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4428                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4429            }
4430            Ok(())
4431        }
4432    }
4433}