Skip to main content

fidl_fuchsia_lowpan_device_common/
fidl_fuchsia_lowpan_device_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// String describing a network type.
12pub type NetworkType = String;
13
14/// Maximum number of channels that can be returned by
15/// [`Device.GetSupportedChannels`].
16///
17/// Value was chosen arbitrarily to be large enough to accommodate any
18/// reasonable future use case.
19pub const MAX_CHANNELS: u16 = 200;
20
21/// Maximum number of distinct network types that a LoWPAN
22/// device can support.
23///
24/// The choice of 16 is an arbitrary upper bound. Most devices will only support one,
25/// and maybe one day a device might support two. Sixteen was chosen because it's
26/// large enough to account for any failure of imagination, yet small enough to not
27/// cause system stability issues.
28pub const MAX_NETWORK_TYPES: u16 = 16;
29
30/// Maximum length of a network type string.
31///
32/// Chosen arbitrarily to be large enough to accommodate any reasonable future
33/// net types.
34pub const MAX_NET_TYPE_LEN: u16 = 64;
35
36/// The maximum number of items that can be returned at one
37/// time by a scan stream.
38pub const MAX_STREAM_SET_SIZE: u16 = 32;
39
40pub const NET_TYPE_RAW_6_LOWPAN: &str = "fuchsia.lowpan.net_type.6lowpan";
41
42pub const NET_TYPE_THREAD_1_X: &str = "org.threadgroup.std.thread.1";
43
44pub const NET_TYPE_UNKNOWN_802_15_4_PID: &str = "fuchsia.lowpan.net_type.802.15.4.pid";
45
46pub const NET_TYPE_ZIGBEE_IP_1_X: &str = "org.zigbee.std.zigbee-ip.1";
47
48/// LoWPAN Connectivity State
49///
50/// This enum describes the level of connectivity being provided
51/// by a device.
52#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
53pub enum ConnectivityState {
54    /// Inactive state.
55    ///
56    /// In this state the device is unprovisioned and administratively
57    /// disabled (inactive).
58    ///
59    /// This state can always be explicitly entered by calling `Leave`
60    /// followed by `SetActive(false)`.
61    Inactive,
62    /// Ready state.
63    ///
64    /// In this state the device is provisioned for a network, but is
65    /// administratively disabled (inactive).
66    ///
67    /// This state can be directly entered with the following actions
68    /// based on the current connectivity state:
69    ///
70    /// * `INACTIVE`: by calling `ProvisionNetwork(...)`.
71    /// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `SetActive(false)`.
72    Ready,
73    /// Offline state.
74    ///
75    /// In this state the device is administratively enabled (active)
76    /// but is not provisioned and thus has no network to attach to.
77    ///
78    /// This state can be directly entered with the following actions
79    /// based on the current connectivity state:
80    ///
81    /// * `INACTIVE`: by calling `SetActive(true)`.
82    /// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `Leave()`.
83    Offline,
84    /// Attaching state.
85    ///
86    /// In this state the device is administratively enabled
87    /// (active) and either provisioned for a network or shortly
88    /// about to become provisioned for a network.
89    ///
90    /// The interface enters this state when it starts the process
91    /// of trying to find other nodes so that it can attach to any
92    /// pre-existing network fragment, or when it is in the process
93    /// of calculating the optimal values for unspecified parameters
94    /// when forming a new network.
95    ///
96    /// This state can be directly entered with the following actions
97    /// based on the current connectivity state:
98    ///
99    /// * `READY`: by calling `SetActive(true)`
100    /// * `OFFLINE`, `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`:
101    ///    by calling `ProvisionNetwork(...)`, `FormNetwork(...)`, or `JoinNetwork(...)`
102    Attaching,
103    /// Attached state.
104    ///
105    /// In this state the device is both administratively enabled
106    /// (active) and provisioned for a network. The device is an
107    /// active participant on the network and can communicate with
108    /// peers.
109    ///
110    /// This state usually implies that peers are available, but that
111    /// may not actually be the case due to current network conditions
112    /// or privacy-protecting measures.
113    ///
114    /// This state cannot generally be entered directly, rather
115    /// the device will enter this state automatically from the
116    /// `ATTACHING` or `ISOLATED` states once connectivity has been
117    /// (re)established.
118    Attached,
119    /// Isolated state.
120    ///
121    /// In this state the device is both administratively enabled
122    /// (active) and provisioned for a network. However, the device
123    /// has no connectivity because there are no peers in range on
124    /// the provisioned network.
125    ///
126    /// Once peer devices on the same network come into range
127    /// the connectivity state will eventually switch back to
128    /// `ATTACHED`, indicating restored connectivity with at least
129    /// one peer.
130    ///
131    /// This state cannot generally be entered directly, rather
132    /// the device may enter this state automatically from the
133    /// `ATTACHING` or `ATTACHED` states.
134    Isolated,
135    /// Commissioning state.
136    ///
137    /// Currently unused, but will later be used to
138    /// support in-band commissioning. It is usually appropriate
139    /// to consider this as a synonym for the `ATTACHING` state
140    /// except that the device remains unprovisioned.
141    Commissioning,
142    #[doc(hidden)]
143    __SourceBreaking { unknown_ordinal: i32 },
144}
145
146/// Pattern that matches an unknown `ConnectivityState` member.
147#[macro_export]
148macro_rules! ConnectivityStateUnknown {
149    () => {
150        _
151    };
152}
153
154impl ConnectivityState {
155    #[inline]
156    pub fn from_primitive(prim: i32) -> Option<Self> {
157        match prim {
158            1 => Some(Self::Inactive),
159            2 => Some(Self::Ready),
160            3 => Some(Self::Offline),
161            4 => Some(Self::Attaching),
162            5 => Some(Self::Attached),
163            6 => Some(Self::Isolated),
164            7 => Some(Self::Commissioning),
165            _ => None,
166        }
167    }
168
169    #[inline]
170    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
171        match prim {
172            1 => Self::Inactive,
173            2 => Self::Ready,
174            3 => Self::Offline,
175            4 => Self::Attaching,
176            5 => Self::Attached,
177            6 => Self::Isolated,
178            7 => Self::Commissioning,
179            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
180        }
181    }
182
183    #[inline]
184    pub fn unknown() -> Self {
185        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
186    }
187
188    #[inline]
189    pub const fn into_primitive(self) -> i32 {
190        match self {
191            Self::Inactive => 1,
192            Self::Ready => 2,
193            Self::Offline => 3,
194            Self::Attaching => 4,
195            Self::Attached => 5,
196            Self::Isolated => 6,
197            Self::Commissioning => 7,
198            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
199        }
200    }
201
202    #[inline]
203    pub fn is_unknown(&self) -> bool {
204        match self {
205            Self::__SourceBreaking { unknown_ordinal: _ } => true,
206            _ => false,
207        }
208    }
209}
210
211/// LoWPAN Role Type.
212///
213/// This type describes the role a device can assume on a network.
214#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
215pub enum Role {
216    /// Detached role. The interface is not
217    /// currently participating on the network,
218    /// either because it cannot find a parent
219    Detached,
220    /// End-device role. End devices do not route
221    /// traffic on behalf of other nodes.
222    EndDevice,
223    /// Router role. Routers help route traffic
224    /// around the mesh network.
225    ///
226    /// Note that this role is independent of the
227    /// device being a "border router".
228    ///
229    /// Not all network types support this role.
230    Router,
231    /// Sleepy End-Device role.
232    ///
233    /// End devices with this role are nominally asleep,
234    /// waking up periodically to check in with their
235    /// parent to see if there are packets destined for
236    /// them. Such devices are capable of extraordinarily
237    /// low power consumption, but packet latency can be
238    /// on the order of dozens of seconds(depending on how
239    /// the node is configured). Not all network types
240    /// support this role.
241    ///
242    /// Not all network types support this role.
243    SleepyEndDevice,
244    /// Sleepy-router role.
245    ///
246    /// Routers with this role are nominally asleep,
247    /// waking up periodically to check in with
248    /// other routers and their children.
249    ///
250    /// Not all network types support this role.
251    SleepyRouter,
252    /// Leader role.
253    ///
254    /// On Thread networks, for each partition/fragment
255    /// one router is designated as the "leader", which
256    /// means that it is considered authoritative for
257    /// all network data. In most cases this role can be
258    /// considered as a synonym to Role::ROUTER.
259    ///
260    /// Not all network types support this role.
261    Leader,
262    /// Coordinator role.
263    ///
264    /// Not all network types support this role.
265    Coordinator,
266    #[doc(hidden)]
267    __SourceBreaking { unknown_ordinal: i32 },
268}
269
270/// Pattern that matches an unknown `Role` member.
271#[macro_export]
272macro_rules! RoleUnknown {
273    () => {
274        _
275    };
276}
277
278impl Role {
279    #[inline]
280    pub fn from_primitive(prim: i32) -> Option<Self> {
281        match prim {
282            1 => Some(Self::Detached),
283            2 => Some(Self::EndDevice),
284            3 => Some(Self::Router),
285            4 => Some(Self::SleepyEndDevice),
286            5 => Some(Self::SleepyRouter),
287            6 => Some(Self::Leader),
288            7 => Some(Self::Coordinator),
289            _ => None,
290        }
291    }
292
293    #[inline]
294    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
295        match prim {
296            1 => Self::Detached,
297            2 => Self::EndDevice,
298            3 => Self::Router,
299            4 => Self::SleepyEndDevice,
300            5 => Self::SleepyRouter,
301            6 => Self::Leader,
302            7 => Self::Coordinator,
303            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
304        }
305    }
306
307    #[inline]
308    pub fn unknown() -> Self {
309        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
310    }
311
312    #[inline]
313    pub const fn into_primitive(self) -> i32 {
314        match self {
315            Self::Detached => 1,
316            Self::EndDevice => 2,
317            Self::Router => 3,
318            Self::SleepyEndDevice => 4,
319            Self::SleepyRouter => 5,
320            Self::Leader => 6,
321            Self::Coordinator => 7,
322            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
323        }
324    }
325
326    #[inline]
327    pub fn is_unknown(&self) -> bool {
328        match self {
329            Self::__SourceBreaking { unknown_ordinal: _ } => true,
330            _ => false,
331        }
332    }
333}
334
335#[derive(Clone, Debug, PartialEq)]
336pub struct CountersGetResponse {
337    pub counters: AllCounters,
338}
339
340impl fidl::Persistable for CountersGetResponse {}
341
342#[derive(Clone, Debug, PartialEq)]
343pub struct CountersResetResponse {
344    pub counters: AllCounters,
345}
346
347impl fidl::Persistable for CountersResetResponse {}
348
349#[derive(Clone, Debug, PartialEq)]
350pub struct DeviceExtraGetCredentialResponse {
351    pub credential: Option<Box<Credential>>,
352}
353
354impl fidl::Persistable for DeviceExtraGetCredentialResponse {}
355
356#[derive(Clone, Debug, PartialEq)]
357pub struct DeviceExtraGetCurrentMacAddressResponse {
358    pub address: fidl_fuchsia_lowpan_common::MacAddress,
359}
360
361impl fidl::Persistable for DeviceExtraGetCurrentMacAddressResponse {}
362
363#[derive(Clone, Debug, PartialEq)]
364pub struct DeviceExtraWatchIdentityResponse {
365    pub identity: Identity,
366}
367
368impl fidl::Persistable for DeviceExtraWatchIdentityResponse {}
369
370#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
371pub struct DeviceGetSupportedNetworkTypesResponse {
372    pub network_types: Vec<String>,
373}
374
375impl fidl::Persistable for DeviceGetSupportedNetworkTypesResponse {}
376
377#[derive(Clone, Debug, PartialEq)]
378pub struct DeviceProvisionNetworkRequest {
379    pub params: ProvisioningParams,
380}
381
382impl fidl::Persistable for DeviceProvisionNetworkRequest {}
383
384#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
385pub struct DeviceSetActiveRequest {
386    pub active: bool,
387}
388
389impl fidl::Persistable for DeviceSetActiveRequest {}
390
391#[derive(Clone, Debug, PartialEq)]
392pub struct DeviceWatchDeviceStateResponse {
393    pub device_combined_state: DeviceState,
394}
395
396impl fidl::Persistable for DeviceWatchDeviceStateResponse {}
397
398#[derive(Clone, Debug, PartialEq)]
399pub struct EnergyScanResultStreamNextResponse {
400    pub results: Vec<EnergyScanResult>,
401}
402
403impl fidl::Persistable for EnergyScanResultStreamNextResponse {}
404
405#[derive(Clone, Debug, PartialEq)]
406pub struct ProvisioningParams {
407    /// The identity of the network.
408    pub identity: Identity,
409    /// The credential used to authenticate to
410    /// the network.
411    pub credential: Option<Box<Credential>>,
412}
413
414impl fidl::Persistable for ProvisioningParams {}
415
416/// Describes all counters.
417///
418/// May be empty if no counters are supported.
419#[derive(Clone, Debug, Default, PartialEq)]
420pub struct AllCounters {
421    /// MAC Counters for TX
422    pub mac_tx: Option<MacCounters>,
423    /// MAC Counters for RX
424    pub mac_rx: Option<MacCounters>,
425    /// Coex Counters for TX
426    pub coex_tx: Option<CoexCounters>,
427    /// Coex Counters for RX
428    pub coex_rx: Option<CoexCounters>,
429    /// Coex stats may be incorrect due to internal counter overflow.
430    ///
431    /// Reset the counters to clear this flag.
432    pub coex_saturated: Option<bool>,
433    /// IP Counters for TX.
434    pub ip_tx: Option<IpCounters>,
435    /// IP Counters for RX.
436    pub ip_rx: Option<IpCounters>,
437    /// Border agent related counters.
438    pub border_agent: Option<BorderAgentCounters>,
439    /// MLE counters.
440    pub mle: Option<MleCounters>,
441    #[doc(hidden)]
442    pub __source_breaking: fidl::marker::SourceBreaking,
443}
444
445impl fidl::Persistable for AllCounters {}
446
447/// Counters associated with border agent functionality.
448#[derive(Clone, Debug, Default, PartialEq)]
449pub struct BorderAgentCounters {
450    /// The number of ePSKc activations.
451    pub epskc_activations: Option<u32>,
452    /// The number of ePSKc deactivations via API.
453    pub epskc_deactivation_clears: Option<u32>,
454    /// The number of ePSKc deactivations due to timeout.
455    pub epskc_deactivation_timeouts: Option<u32>,
456    /// The number of ePSKc deactivations due to reached max attempts.
457    pub epskc_deactivation_max_attempts: Option<u32>,
458    /// The number of ePSKc deactivations due to commissioner disconnected.
459    pub epskc_deactivation_disconnects: Option<u32>,
460    /// The number of invalid border agent state errors at ePSKc activation.
461    pub epskc_invalid_ba_state_errors: Option<u32>,
462    /// The number of invalid args errors at ePSKc activation.
463    pub epskc_invalid_args_errors: Option<u32>,
464    /// The number of start secure session errors at ePSKc activation.
465    pub epskc_start_secure_session_errors: Option<u32>,
466    /// The number of established secure sessions with ePSKc.
467    pub epskc_secure_session_successes: Option<u32>,
468    /// The number of failed secure sessions with ePSKc.
469    pub epskc_secure_session_failures: Option<u32>,
470    /// The number of successful commissioner petitions with ePSKc.
471    pub epskc_commissioner_petitions: Option<u32>,
472    /// The number of established secure sessions with PSKc.
473    pub pskc_secure_session_successes: Option<u32>,
474    /// The number of failed secure sessions with PSKc.
475    pub pskc_secure_session_failures: Option<u32>,
476    /// The number of successful commissioner petitions with PSKc.
477    pub pskc_commissioner_petitions: Option<u32>,
478    /// The number of MGMT_ACTIVE_GET.req sent over secure sessions.
479    pub mgmt_active_gets: Option<u32>,
480    /// The number of MGMT_PENDING_GET.req sent over secure sessions.
481    pub mgmt_pending_gets: Option<u32>,
482    #[doc(hidden)]
483    pub __source_breaking: fidl::marker::SourceBreaking,
484}
485
486impl fidl::Persistable for BorderAgentCounters {}
487
488/// Counters associated with RF Coexistance.
489///
490/// Some counters are only valid for RX or TX. See [this][1] for more info.
491///
492/// [1]: https://github.com/openthread/wpantund/blob/4ae4619/third_party/openthread/src/ncp/spinel.h#L1738-L1775
493#[derive(Clone, Debug, Default, PartialEq)]
494pub struct CoexCounters {
495    /// The number of requests
496    pub requests: Option<u64>,
497    /// The number of requests while grant was active
498    pub grant_immediate: Option<u64>,
499    /// The number of requests while grant was inactive
500    pub grant_wait: Option<u64>,
501    /// The number of requests while grant was inactive that were
502    /// ultimately granted
503    pub grant_wait_activated: Option<u64>,
504    /// The number of requests while grant was inactive that timed out
505    pub grant_wait_timeout: Option<u64>,
506    /// The number of requests that were in progress when grant was
507    /// deactivated
508    pub grant_deactivated_during_request: Option<u64>,
509    /// The number of requests that were not granted within 50µs
510    pub delayed_grant: Option<u64>,
511    /// The average time in µsec from request to grant
512    pub avg_delay_request_to_grant_usec: Option<u32>,
513    /// The number of requests that completed without receiving grant.
514    ///
515    /// Receive only.
516    pub grant_none: Option<u64>,
517    #[doc(hidden)]
518    pub __source_breaking: fidl::marker::SourceBreaking,
519}
520
521impl fidl::Persistable for CoexCounters {}
522
523/// Combined State for LoWPAN Devices
524///
525/// Contains the various properties of a LoWPAN device
526/// that define its current operational state.
527///
528/// You will get a snapshot of the current state upon the first
529/// invocation of `WatchDeviceState()`, after which future
530/// invocations of that method will return deltas.
531#[derive(Clone, Debug, Default, PartialEq)]
532pub struct DeviceState {
533    /// LoWPAN Connectivity State
534    ///
535    /// This field describes the current level of connectivity being
536    /// provided by this device.
537    pub connectivity_state: Option<ConnectivityState>,
538    /// LoWPAN Role
539    ///
540    /// This field describes the current role this device is taking
541    /// on the current network.
542    pub role: Option<Role>,
543    #[doc(hidden)]
544    pub __source_breaking: fidl::marker::SourceBreaking,
545}
546
547impl fidl::Persistable for DeviceState {}
548
549/// Describes the parameters of an energy scan.
550#[derive(Clone, Debug, Default, PartialEq)]
551pub struct EnergyScanParameters {
552    /// Subset of channels to scan.
553    ///
554    /// If unspecified, all channels will be scanned.
555    pub channels: Option<Vec<u16>>,
556    /// Desired dwell time per-channel for the energy scan,
557    /// measured in milliseconds.
558    ///
559    /// Note that firmware limitations may prevent the
560    /// exact dwell time from being used. In such cases
561    /// an approximation will be used.
562    ///
563    /// Implementations must be able to support dwell times of at least
564    /// 5000ms (5 seconds). The exact supported dwell-time range is
565    /// device/driver dependent.
566    ///
567    /// Setting a value outside of the supported range of
568    /// values for this device will result in the value being
569    /// clamped to the closest valid value, so setting a value of zero
570    /// will always request the smallest energy scan duration the
571    /// device is capable of.
572    ///
573    /// If unspecified, a dwell time of approximately 500ms will be used.
574    pub dwell_time_ms: Option<u32>,
575    #[doc(hidden)]
576    pub __source_breaking: fidl::marker::SourceBreaking,
577}
578
579impl fidl::Persistable for EnergyScanParameters {}
580
581/// Describes the result from one channel of an energy scan.
582#[derive(Clone, Debug, Default, PartialEq)]
583pub struct EnergyScanResult {
584    /// The channel index for this energy scan result.
585    pub channel_index: Option<u16>,
586    /// The maximum RSSI detected on this channel.
587    pub max_rssi: Option<i32>,
588    /// The minimum RSSI detected on this channel.
589    pub min_rssi: Option<i32>,
590    #[doc(hidden)]
591    pub __source_breaking: fidl::marker::SourceBreaking,
592}
593
594impl fidl::Persistable for EnergyScanResult {}
595
596#[derive(Clone, Debug, Default, PartialEq)]
597pub struct Identity {
598    /// The raw bytes for the network name.
599    /// This is typically a [StringPrep'd][1] UTF8 encoding.
600    ///
601    /// Note that extra care must be taken when displaying
602    /// this value to users, since there are many ways
603    /// to make visually similar UTF8 strings that
604    /// have differing bytecode representations.
605    ///
606    /// [1]: https://tools.ietf.org/html/rfc3454
607    pub raw_name: Option<Vec<u8>>,
608    /// String identifying the type of network.
609    ///
610    /// Well-known protocol ids are associated with
611    /// specific string values (like "org.threadgroup.std.thread"
612    /// or "org.zigbee.std.zigbee-ip"). For unknown protocol ids,
613    /// the string will map to something like
614    /// `fuchsia.lowpan.net_type.802.15.4.pid.XX`, where `XX` is
615    /// the value of the protocol id from a 802.14.5 beacon.
616    /// This field is optional when joining, forming, or provisioning.
617    pub net_type: Option<String>,
618    /// Channel Index.
619    pub channel: Option<u16>,
620    /// PANID for 802.14.5-based networks (or the equivalent).
621    pub panid: Option<u16>,
622    /// IPv6 Mesh-local prefix.
623    ///
624    /// This parameter allows you to determine the mesh-local
625    /// IPv6 prefix for the current network, or to specify one
626    /// when provisioning the interface for a network or forming
627    /// a new network.
628    ///
629    /// The prefix length is always 64 bits, so only the upper
630    /// 64 bits of the value are used: the least significant bits
631    /// must be ignored when read and zero when set.
632    ///
633    /// This field is ignored when supplied to `JoinNetwork()`.
634    pub mesh_local_prefix: Option<fidl_fuchsia_net_common::Ipv6AddressWithPrefix>,
635    /// Extended PANID.
636    pub xpanid: Option<[u8; 8]>,
637    #[doc(hidden)]
638    pub __source_breaking: fidl::marker::SourceBreaking,
639}
640
641impl fidl::Persistable for Identity {}
642
643/// Counters associated with the IP layer.
644#[derive(Clone, Debug, Default, PartialEq)]
645pub struct IpCounters {
646    /// The number of IPv6 packets successfully transmitted/received.
647    pub success: Option<u32>,
648    /// The number of IPv6 packets failed to transmit/receive.
649    pub failure: Option<u32>,
650    #[doc(hidden)]
651    pub __source_breaking: fidl::marker::SourceBreaking,
652}
653
654impl fidl::Persistable for IpCounters {}
655
656/// Counters associated with the MAC layer.
657///
658/// Some counters are only valid for RX or TX.
659#[derive(Clone, Debug, Default, PartialEq)]
660pub struct MacCounters {
661    /// The total number of frames
662    pub total: Option<u32>,
663    /// The total number of unicast frames
664    pub unicast: Option<u32>,
665    /// The total number of broadcast frames
666    pub broadcast: Option<u32>,
667    /// The number of frames with ack request
668    pub ack_requested: Option<u32>,
669    /// The number of frames that were acked
670    pub acked: Option<u32>,
671    /// The number of frames without ack request
672    pub no_ack_requested: Option<u32>,
673    /// The number of data frames
674    pub data: Option<u32>,
675    /// The number of data poll frames
676    pub data_poll: Option<u32>,
677    /// The number of beacon frames
678    pub beacon: Option<u32>,
679    /// The number of beacon request frames
680    pub beacon_request: Option<u32>,
681    /// The number of other types of frames
682    pub other: Option<u32>,
683    /// The number of frames filtered by address filter (allowlist
684    /// or denylist).
685    pub address_filtered: Option<u32>,
686    /// The number of retransmission attempts.
687    /// TX only.
688    pub retries: Option<u32>,
689    /// The number of expired retransmission retries for direct message.
690    /// TX only.
691    pub direct_max_retry_expiry: Option<u32>,
692    /// The number of expired retransmission retries for indirect message
693    /// TX only.
694    pub indirect_max_retry_expiry: Option<u32>,
695    /// The number of received frames filtered by destination check.
696    /// RX only.
697    pub dest_addr_filtered: Option<u32>,
698    /// The number of received duplicated frames.
699    /// RX only.
700    pub duplicated: Option<u32>,
701    /// The number of received frames with no or malformed content.
702    /// RX only.
703    pub err_no_frame: Option<u32>,
704    /// The number of received frames from unknown neighbor.
705    /// RX only.
706    pub err_unknown_neighbor: Option<u32>,
707    /// The number of received frames whose source address is invalid.
708    /// RX only.
709    pub err_invalid_src_addr: Option<u32>,
710    /// The number of received frames with security error.
711    /// RX only.
712    pub err_sec: Option<u32>,
713    /// The number of received frames with FCS error.
714    /// RX only.
715    pub err_fcs: Option<u32>,
716    /// The number of CCA failures.
717    /// TX only.
718    pub err_cca: Option<u32>,
719    /// The number of frame transmission failures due to abort error.
720    /// TX only.
721    pub err_abort: Option<u32>,
722    /// The number of frames that were dropped due to a busy channel.
723    /// TX only.
724    pub err_busy_channel: Option<u32>,
725    /// The number of frames that encountered some other error.
726    pub err_other: Option<u32>,
727    #[doc(hidden)]
728    pub __source_breaking: fidl::marker::SourceBreaking,
729}
730
731impl fidl::Persistable for MacCounters {}
732
733/// Counters associated with the MLE.
734#[derive(Clone, Debug, Default, PartialEq)]
735pub struct MleCounters {
736    /// Number of times device entered OT_DEVICE_ROLE_DISABLED role.
737    pub disabled_role: Option<u16>,
738    /// Number of times device entered OT_DEVICE_ROLE_DETACHED role.
739    pub detached_role: Option<u16>,
740    /// Number of times device entered OT_DEVICE_ROLE_CHILD role.
741    pub child_role: Option<u16>,
742    /// Number of times device entered OT_DEVICE_ROLE_ROUTER role.
743    pub router_role: Option<u16>,
744    /// Number of times device entered OT_DEVICE_ROLE_LEADER role.
745    pub leader_role: Option<u16>,
746    /// Number of attach attempts while device was detached.
747    pub attach_attempts: Option<u16>,
748    /// Number of changes to partition ID.
749    pub partition_id_changes: Option<u16>,
750    /// Number of attempts to attach to a better partition.
751    pub better_partition_attach_attempts: Option<u16>,
752    /// Number of attempts to attach to find a better parent (parent search).
753    pub better_parent_attach_attempts: Option<u16>,
754    /// Number of milliseconds device has been in OT_DEVICE_ROLE_DISABLED role.
755    pub disabled_time: Option<u64>,
756    /// Number of milliseconds device has been in OT_DEVICE_ROLE_DETACHED role.
757    pub detached_time: Option<u64>,
758    /// Number of milliseconds device has been in OT_DEVICE_ROLE_CHILD role.
759    pub child_time: Option<u64>,
760    /// Number of milliseconds device has been in OT_DEVICE_ROLE_ROUTER role.
761    pub router_time: Option<u64>,
762    /// Number of milliseconds device has been in OT_DEVICE_ROLE_LEADER role.
763    pub leader_time: Option<u64>,
764    /// Number of milliseconds tracked by previous counters.
765    pub tracked_time: Option<u64>,
766    /// Number of times device changed its parent.
767    pub parent_changes: Option<u16>,
768    #[doc(hidden)]
769    pub __source_breaking: fidl::marker::SourceBreaking,
770}
771
772impl fidl::Persistable for MleCounters {}
773
774/// Describes a LoWPAN credential.
775///
776/// Currently only supports a symmetric network key,
777/// but may be extended in the future to support other
778/// types of credentials, such as passwords, PAKE
779/// secrets, or a reference to a certificate/private-key
780/// pair.
781#[derive(Clone, Debug)]
782pub enum Credential {
783    /// Describes a symmetric key credential.
784    ///
785    /// The size of the symmetric key is defined by the
786    /// underlying network technology. For Thread this
787    /// is a 16-byte value.
788    ///
789    /// Note that this value is not a password.
790    NetworkKey(Vec<u8>),
791    #[doc(hidden)]
792    __SourceBreaking { unknown_ordinal: u64 },
793}
794
795/// Pattern that matches an unknown `Credential` member.
796#[macro_export]
797macro_rules! CredentialUnknown {
798    () => {
799        _
800    };
801}
802
803// Custom PartialEq so that unknown variants are not equal to themselves.
804impl PartialEq for Credential {
805    fn eq(&self, other: &Self) -> bool {
806        match (self, other) {
807            (Self::NetworkKey(x), Self::NetworkKey(y)) => *x == *y,
808            _ => false,
809        }
810    }
811}
812
813impl Credential {
814    #[inline]
815    pub fn ordinal(&self) -> u64 {
816        match *self {
817            Self::NetworkKey(_) => 1,
818            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
819        }
820    }
821
822    #[inline]
823    pub fn unknown_variant_for_testing() -> Self {
824        Self::__SourceBreaking { unknown_ordinal: 0 }
825    }
826
827    #[inline]
828    pub fn is_unknown(&self) -> bool {
829        match self {
830            Self::__SourceBreaking { .. } => true,
831            _ => false,
832        }
833    }
834}
835
836impl fidl::Persistable for Credential {}
837
838pub mod counters_ordinals {
839    pub const GET: u64 = 0xaa28d44c1535a24;
840    pub const RESET: u64 = 0x4cf9a102017cf7ad;
841}
842
843pub mod counters_connector_ordinals {
844    pub const CONNECT: u64 = 0x61ec847f2702d188;
845}
846
847pub mod device_ordinals {
848    pub const PROVISION_NETWORK: u64 = 0x3501046988e17076;
849    pub const LEAVE_NETWORK: u64 = 0x66919e4f9752c53e;
850    pub const SET_ACTIVE: u64 = 0x55a6837f8bbb344b;
851    pub const GET_SUPPORTED_NETWORK_TYPES: u64 = 0x6d8f71a5beb15ebf;
852    pub const WATCH_DEVICE_STATE: u64 = 0x593be5b83e80d249;
853}
854
855pub mod device_connector_ordinals {
856    pub const CONNECT: u64 = 0x63470c4c0c8e678a;
857}
858
859pub mod device_extra_ordinals {
860    pub const GET_CREDENTIAL: u64 = 0x77f75f289c8c4ceb;
861    pub const WATCH_IDENTITY: u64 = 0xb9f5d8963eaebc6;
862    pub const GET_CURRENT_MAC_ADDRESS: u64 = 0x70835954071d94dd;
863}
864
865pub mod device_extra_connector_ordinals {
866    pub const CONNECT: u64 = 0x2959be873ae18ae3;
867}
868
869pub mod energy_scan_ordinals {
870    pub const START_ENERGY_SCAN: u64 = 0x4b2928a05c619b06;
871}
872
873pub mod energy_scan_connector_ordinals {
874    pub const CONNECT: u64 = 0x1076a774e74ab290;
875}
876
877pub mod energy_scan_result_stream_ordinals {
878    pub const NEXT: u64 = 0x7f0139fc06fd6a9e;
879}
880
881mod internal {
882    use super::*;
883    unsafe impl fidl::encoding::TypeMarker for ConnectivityState {
884        type Owned = Self;
885
886        #[inline(always)]
887        fn inline_align(_context: fidl::encoding::Context) -> usize {
888            std::mem::align_of::<i32>()
889        }
890
891        #[inline(always)]
892        fn inline_size(_context: fidl::encoding::Context) -> usize {
893            std::mem::size_of::<i32>()
894        }
895
896        #[inline(always)]
897        fn encode_is_copy() -> bool {
898            false
899        }
900
901        #[inline(always)]
902        fn decode_is_copy() -> bool {
903            false
904        }
905    }
906
907    impl fidl::encoding::ValueTypeMarker for ConnectivityState {
908        type Borrowed<'a> = Self;
909        #[inline(always)]
910        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
911            *value
912        }
913    }
914
915    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
916        for ConnectivityState
917    {
918        #[inline]
919        unsafe fn encode(
920            self,
921            encoder: &mut fidl::encoding::Encoder<'_, D>,
922            offset: usize,
923            _depth: fidl::encoding::Depth,
924        ) -> fidl::Result<()> {
925            encoder.debug_check_bounds::<Self>(offset);
926            encoder.write_num(self.into_primitive(), offset);
927            Ok(())
928        }
929    }
930
931    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityState {
932        #[inline(always)]
933        fn new_empty() -> Self {
934            Self::unknown()
935        }
936
937        #[inline]
938        unsafe fn decode(
939            &mut self,
940            decoder: &mut fidl::encoding::Decoder<'_, D>,
941            offset: usize,
942            _depth: fidl::encoding::Depth,
943        ) -> fidl::Result<()> {
944            decoder.debug_check_bounds::<Self>(offset);
945            let prim = decoder.read_num::<i32>(offset);
946
947            *self = Self::from_primitive_allow_unknown(prim);
948            Ok(())
949        }
950    }
951    unsafe impl fidl::encoding::TypeMarker for Role {
952        type Owned = Self;
953
954        #[inline(always)]
955        fn inline_align(_context: fidl::encoding::Context) -> usize {
956            std::mem::align_of::<i32>()
957        }
958
959        #[inline(always)]
960        fn inline_size(_context: fidl::encoding::Context) -> usize {
961            std::mem::size_of::<i32>()
962        }
963
964        #[inline(always)]
965        fn encode_is_copy() -> bool {
966            false
967        }
968
969        #[inline(always)]
970        fn decode_is_copy() -> bool {
971            false
972        }
973    }
974
975    impl fidl::encoding::ValueTypeMarker for Role {
976        type Borrowed<'a> = Self;
977        #[inline(always)]
978        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
979            *value
980        }
981    }
982
983    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Role {
984        #[inline]
985        unsafe fn encode(
986            self,
987            encoder: &mut fidl::encoding::Encoder<'_, D>,
988            offset: usize,
989            _depth: fidl::encoding::Depth,
990        ) -> fidl::Result<()> {
991            encoder.debug_check_bounds::<Self>(offset);
992            encoder.write_num(self.into_primitive(), offset);
993            Ok(())
994        }
995    }
996
997    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Role {
998        #[inline(always)]
999        fn new_empty() -> Self {
1000            Self::unknown()
1001        }
1002
1003        #[inline]
1004        unsafe fn decode(
1005            &mut self,
1006            decoder: &mut fidl::encoding::Decoder<'_, D>,
1007            offset: usize,
1008            _depth: fidl::encoding::Depth,
1009        ) -> fidl::Result<()> {
1010            decoder.debug_check_bounds::<Self>(offset);
1011            let prim = decoder.read_num::<i32>(offset);
1012
1013            *self = Self::from_primitive_allow_unknown(prim);
1014            Ok(())
1015        }
1016    }
1017
1018    impl fidl::encoding::ValueTypeMarker for CountersGetResponse {
1019        type Borrowed<'a> = &'a Self;
1020        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1021            value
1022        }
1023    }
1024
1025    unsafe impl fidl::encoding::TypeMarker for CountersGetResponse {
1026        type Owned = Self;
1027
1028        #[inline(always)]
1029        fn inline_align(_context: fidl::encoding::Context) -> usize {
1030            8
1031        }
1032
1033        #[inline(always)]
1034        fn inline_size(_context: fidl::encoding::Context) -> usize {
1035            16
1036        }
1037    }
1038
1039    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CountersGetResponse, D>
1040        for &CountersGetResponse
1041    {
1042        #[inline]
1043        unsafe fn encode(
1044            self,
1045            encoder: &mut fidl::encoding::Encoder<'_, D>,
1046            offset: usize,
1047            _depth: fidl::encoding::Depth,
1048        ) -> fidl::Result<()> {
1049            encoder.debug_check_bounds::<CountersGetResponse>(offset);
1050            // Delegate to tuple encoding.
1051            fidl::encoding::Encode::<CountersGetResponse, D>::encode(
1052                (<AllCounters as fidl::encoding::ValueTypeMarker>::borrow(&self.counters),),
1053                encoder,
1054                offset,
1055                _depth,
1056            )
1057        }
1058    }
1059    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<AllCounters, D>>
1060        fidl::encoding::Encode<CountersGetResponse, D> for (T0,)
1061    {
1062        #[inline]
1063        unsafe fn encode(
1064            self,
1065            encoder: &mut fidl::encoding::Encoder<'_, D>,
1066            offset: usize,
1067            depth: fidl::encoding::Depth,
1068        ) -> fidl::Result<()> {
1069            encoder.debug_check_bounds::<CountersGetResponse>(offset);
1070            // Zero out padding regions. There's no need to apply masks
1071            // because the unmasked parts will be overwritten by fields.
1072            // Write the fields.
1073            self.0.encode(encoder, offset + 0, depth)?;
1074            Ok(())
1075        }
1076    }
1077
1078    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CountersGetResponse {
1079        #[inline(always)]
1080        fn new_empty() -> Self {
1081            Self { counters: fidl::new_empty!(AllCounters, D) }
1082        }
1083
1084        #[inline]
1085        unsafe fn decode(
1086            &mut self,
1087            decoder: &mut fidl::encoding::Decoder<'_, D>,
1088            offset: usize,
1089            _depth: fidl::encoding::Depth,
1090        ) -> fidl::Result<()> {
1091            decoder.debug_check_bounds::<Self>(offset);
1092            // Verify that padding bytes are zero.
1093            fidl::decode!(AllCounters, D, &mut self.counters, decoder, offset + 0, _depth)?;
1094            Ok(())
1095        }
1096    }
1097
1098    impl fidl::encoding::ValueTypeMarker for CountersResetResponse {
1099        type Borrowed<'a> = &'a Self;
1100        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1101            value
1102        }
1103    }
1104
1105    unsafe impl fidl::encoding::TypeMarker for CountersResetResponse {
1106        type Owned = Self;
1107
1108        #[inline(always)]
1109        fn inline_align(_context: fidl::encoding::Context) -> usize {
1110            8
1111        }
1112
1113        #[inline(always)]
1114        fn inline_size(_context: fidl::encoding::Context) -> usize {
1115            16
1116        }
1117    }
1118
1119    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CountersResetResponse, D>
1120        for &CountersResetResponse
1121    {
1122        #[inline]
1123        unsafe fn encode(
1124            self,
1125            encoder: &mut fidl::encoding::Encoder<'_, D>,
1126            offset: usize,
1127            _depth: fidl::encoding::Depth,
1128        ) -> fidl::Result<()> {
1129            encoder.debug_check_bounds::<CountersResetResponse>(offset);
1130            // Delegate to tuple encoding.
1131            fidl::encoding::Encode::<CountersResetResponse, D>::encode(
1132                (<AllCounters as fidl::encoding::ValueTypeMarker>::borrow(&self.counters),),
1133                encoder,
1134                offset,
1135                _depth,
1136            )
1137        }
1138    }
1139    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<AllCounters, D>>
1140        fidl::encoding::Encode<CountersResetResponse, D> for (T0,)
1141    {
1142        #[inline]
1143        unsafe fn encode(
1144            self,
1145            encoder: &mut fidl::encoding::Encoder<'_, D>,
1146            offset: usize,
1147            depth: fidl::encoding::Depth,
1148        ) -> fidl::Result<()> {
1149            encoder.debug_check_bounds::<CountersResetResponse>(offset);
1150            // Zero out padding regions. There's no need to apply masks
1151            // because the unmasked parts will be overwritten by fields.
1152            // Write the fields.
1153            self.0.encode(encoder, offset + 0, depth)?;
1154            Ok(())
1155        }
1156    }
1157
1158    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CountersResetResponse {
1159        #[inline(always)]
1160        fn new_empty() -> Self {
1161            Self { counters: fidl::new_empty!(AllCounters, D) }
1162        }
1163
1164        #[inline]
1165        unsafe fn decode(
1166            &mut self,
1167            decoder: &mut fidl::encoding::Decoder<'_, D>,
1168            offset: usize,
1169            _depth: fidl::encoding::Depth,
1170        ) -> fidl::Result<()> {
1171            decoder.debug_check_bounds::<Self>(offset);
1172            // Verify that padding bytes are zero.
1173            fidl::decode!(AllCounters, D, &mut self.counters, decoder, offset + 0, _depth)?;
1174            Ok(())
1175        }
1176    }
1177
1178    impl fidl::encoding::ValueTypeMarker for DeviceExtraGetCredentialResponse {
1179        type Borrowed<'a> = &'a Self;
1180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1181            value
1182        }
1183    }
1184
1185    unsafe impl fidl::encoding::TypeMarker for DeviceExtraGetCredentialResponse {
1186        type Owned = Self;
1187
1188        #[inline(always)]
1189        fn inline_align(_context: fidl::encoding::Context) -> usize {
1190            8
1191        }
1192
1193        #[inline(always)]
1194        fn inline_size(_context: fidl::encoding::Context) -> usize {
1195            16
1196        }
1197    }
1198
1199    unsafe impl<D: fidl::encoding::ResourceDialect>
1200        fidl::encoding::Encode<DeviceExtraGetCredentialResponse, D>
1201        for &DeviceExtraGetCredentialResponse
1202    {
1203        #[inline]
1204        unsafe fn encode(
1205            self,
1206            encoder: &mut fidl::encoding::Encoder<'_, D>,
1207            offset: usize,
1208            _depth: fidl::encoding::Depth,
1209        ) -> fidl::Result<()> {
1210            encoder.debug_check_bounds::<DeviceExtraGetCredentialResponse>(offset);
1211            // Delegate to tuple encoding.
1212            fidl::encoding::Encode::<DeviceExtraGetCredentialResponse, D>::encode(
1213                (
1214                    <fidl::encoding::OptionalUnion<Credential> as fidl::encoding::ValueTypeMarker>::borrow(&self.credential),
1215                ),
1216                encoder, offset, _depth
1217            )
1218        }
1219    }
1220    unsafe impl<
1221        D: fidl::encoding::ResourceDialect,
1222        T0: fidl::encoding::Encode<fidl::encoding::OptionalUnion<Credential>, D>,
1223    > fidl::encoding::Encode<DeviceExtraGetCredentialResponse, D> for (T0,)
1224    {
1225        #[inline]
1226        unsafe fn encode(
1227            self,
1228            encoder: &mut fidl::encoding::Encoder<'_, D>,
1229            offset: usize,
1230            depth: fidl::encoding::Depth,
1231        ) -> fidl::Result<()> {
1232            encoder.debug_check_bounds::<DeviceExtraGetCredentialResponse>(offset);
1233            // Zero out padding regions. There's no need to apply masks
1234            // because the unmasked parts will be overwritten by fields.
1235            // Write the fields.
1236            self.0.encode(encoder, offset + 0, depth)?;
1237            Ok(())
1238        }
1239    }
1240
1241    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1242        for DeviceExtraGetCredentialResponse
1243    {
1244        #[inline(always)]
1245        fn new_empty() -> Self {
1246            Self { credential: fidl::new_empty!(fidl::encoding::OptionalUnion<Credential>, D) }
1247        }
1248
1249        #[inline]
1250        unsafe fn decode(
1251            &mut self,
1252            decoder: &mut fidl::encoding::Decoder<'_, D>,
1253            offset: usize,
1254            _depth: fidl::encoding::Depth,
1255        ) -> fidl::Result<()> {
1256            decoder.debug_check_bounds::<Self>(offset);
1257            // Verify that padding bytes are zero.
1258            fidl::decode!(
1259                fidl::encoding::OptionalUnion<Credential>,
1260                D,
1261                &mut self.credential,
1262                decoder,
1263                offset + 0,
1264                _depth
1265            )?;
1266            Ok(())
1267        }
1268    }
1269
1270    impl fidl::encoding::ValueTypeMarker for DeviceExtraGetCurrentMacAddressResponse {
1271        type Borrowed<'a> = &'a Self;
1272        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1273            value
1274        }
1275    }
1276
1277    unsafe impl fidl::encoding::TypeMarker for DeviceExtraGetCurrentMacAddressResponse {
1278        type Owned = Self;
1279
1280        #[inline(always)]
1281        fn inline_align(_context: fidl::encoding::Context) -> usize {
1282            1
1283        }
1284
1285        #[inline(always)]
1286        fn inline_size(_context: fidl::encoding::Context) -> usize {
1287            8
1288        }
1289    }
1290
1291    unsafe impl<D: fidl::encoding::ResourceDialect>
1292        fidl::encoding::Encode<DeviceExtraGetCurrentMacAddressResponse, D>
1293        for &DeviceExtraGetCurrentMacAddressResponse
1294    {
1295        #[inline]
1296        unsafe fn encode(
1297            self,
1298            encoder: &mut fidl::encoding::Encoder<'_, D>,
1299            offset: usize,
1300            _depth: fidl::encoding::Depth,
1301        ) -> fidl::Result<()> {
1302            encoder.debug_check_bounds::<DeviceExtraGetCurrentMacAddressResponse>(offset);
1303            // Delegate to tuple encoding.
1304            fidl::encoding::Encode::<DeviceExtraGetCurrentMacAddressResponse, D>::encode(
1305                (
1306                    <fidl_fuchsia_lowpan_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
1307                ),
1308                encoder, offset, _depth
1309            )
1310        }
1311    }
1312    unsafe impl<
1313        D: fidl::encoding::ResourceDialect,
1314        T0: fidl::encoding::Encode<fidl_fuchsia_lowpan_common::MacAddress, D>,
1315    > fidl::encoding::Encode<DeviceExtraGetCurrentMacAddressResponse, D> for (T0,)
1316    {
1317        #[inline]
1318        unsafe fn encode(
1319            self,
1320            encoder: &mut fidl::encoding::Encoder<'_, D>,
1321            offset: usize,
1322            depth: fidl::encoding::Depth,
1323        ) -> fidl::Result<()> {
1324            encoder.debug_check_bounds::<DeviceExtraGetCurrentMacAddressResponse>(offset);
1325            // Zero out padding regions. There's no need to apply masks
1326            // because the unmasked parts will be overwritten by fields.
1327            // Write the fields.
1328            self.0.encode(encoder, offset + 0, depth)?;
1329            Ok(())
1330        }
1331    }
1332
1333    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1334        for DeviceExtraGetCurrentMacAddressResponse
1335    {
1336        #[inline(always)]
1337        fn new_empty() -> Self {
1338            Self { address: fidl::new_empty!(fidl_fuchsia_lowpan_common::MacAddress, D) }
1339        }
1340
1341        #[inline]
1342        unsafe fn decode(
1343            &mut self,
1344            decoder: &mut fidl::encoding::Decoder<'_, D>,
1345            offset: usize,
1346            _depth: fidl::encoding::Depth,
1347        ) -> fidl::Result<()> {
1348            decoder.debug_check_bounds::<Self>(offset);
1349            // Verify that padding bytes are zero.
1350            fidl::decode!(
1351                fidl_fuchsia_lowpan_common::MacAddress,
1352                D,
1353                &mut self.address,
1354                decoder,
1355                offset + 0,
1356                _depth
1357            )?;
1358            Ok(())
1359        }
1360    }
1361
1362    impl fidl::encoding::ValueTypeMarker for DeviceExtraWatchIdentityResponse {
1363        type Borrowed<'a> = &'a Self;
1364        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1365            value
1366        }
1367    }
1368
1369    unsafe impl fidl::encoding::TypeMarker for DeviceExtraWatchIdentityResponse {
1370        type Owned = Self;
1371
1372        #[inline(always)]
1373        fn inline_align(_context: fidl::encoding::Context) -> usize {
1374            8
1375        }
1376
1377        #[inline(always)]
1378        fn inline_size(_context: fidl::encoding::Context) -> usize {
1379            16
1380        }
1381    }
1382
1383    unsafe impl<D: fidl::encoding::ResourceDialect>
1384        fidl::encoding::Encode<DeviceExtraWatchIdentityResponse, D>
1385        for &DeviceExtraWatchIdentityResponse
1386    {
1387        #[inline]
1388        unsafe fn encode(
1389            self,
1390            encoder: &mut fidl::encoding::Encoder<'_, D>,
1391            offset: usize,
1392            _depth: fidl::encoding::Depth,
1393        ) -> fidl::Result<()> {
1394            encoder.debug_check_bounds::<DeviceExtraWatchIdentityResponse>(offset);
1395            // Delegate to tuple encoding.
1396            fidl::encoding::Encode::<DeviceExtraWatchIdentityResponse, D>::encode(
1397                (<Identity as fidl::encoding::ValueTypeMarker>::borrow(&self.identity),),
1398                encoder,
1399                offset,
1400                _depth,
1401            )
1402        }
1403    }
1404    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Identity, D>>
1405        fidl::encoding::Encode<DeviceExtraWatchIdentityResponse, D> for (T0,)
1406    {
1407        #[inline]
1408        unsafe fn encode(
1409            self,
1410            encoder: &mut fidl::encoding::Encoder<'_, D>,
1411            offset: usize,
1412            depth: fidl::encoding::Depth,
1413        ) -> fidl::Result<()> {
1414            encoder.debug_check_bounds::<DeviceExtraWatchIdentityResponse>(offset);
1415            // Zero out padding regions. There's no need to apply masks
1416            // because the unmasked parts will be overwritten by fields.
1417            // Write the fields.
1418            self.0.encode(encoder, offset + 0, depth)?;
1419            Ok(())
1420        }
1421    }
1422
1423    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1424        for DeviceExtraWatchIdentityResponse
1425    {
1426        #[inline(always)]
1427        fn new_empty() -> Self {
1428            Self { identity: fidl::new_empty!(Identity, D) }
1429        }
1430
1431        #[inline]
1432        unsafe fn decode(
1433            &mut self,
1434            decoder: &mut fidl::encoding::Decoder<'_, D>,
1435            offset: usize,
1436            _depth: fidl::encoding::Depth,
1437        ) -> fidl::Result<()> {
1438            decoder.debug_check_bounds::<Self>(offset);
1439            // Verify that padding bytes are zero.
1440            fidl::decode!(Identity, D, &mut self.identity, decoder, offset + 0, _depth)?;
1441            Ok(())
1442        }
1443    }
1444
1445    impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedNetworkTypesResponse {
1446        type Borrowed<'a> = &'a Self;
1447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1448            value
1449        }
1450    }
1451
1452    unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedNetworkTypesResponse {
1453        type Owned = Self;
1454
1455        #[inline(always)]
1456        fn inline_align(_context: fidl::encoding::Context) -> usize {
1457            8
1458        }
1459
1460        #[inline(always)]
1461        fn inline_size(_context: fidl::encoding::Context) -> usize {
1462            16
1463        }
1464    }
1465
1466    unsafe impl<D: fidl::encoding::ResourceDialect>
1467        fidl::encoding::Encode<DeviceGetSupportedNetworkTypesResponse, D>
1468        for &DeviceGetSupportedNetworkTypesResponse
1469    {
1470        #[inline]
1471        unsafe fn encode(
1472            self,
1473            encoder: &mut fidl::encoding::Encoder<'_, D>,
1474            offset: usize,
1475            _depth: fidl::encoding::Depth,
1476        ) -> fidl::Result<()> {
1477            encoder.debug_check_bounds::<DeviceGetSupportedNetworkTypesResponse>(offset);
1478            // Delegate to tuple encoding.
1479            fidl::encoding::Encode::<DeviceGetSupportedNetworkTypesResponse, D>::encode(
1480                (
1481                    <fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.network_types),
1482                ),
1483                encoder, offset, _depth
1484            )
1485        }
1486    }
1487    unsafe impl<
1488        D: fidl::encoding::ResourceDialect,
1489        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>, D>,
1490    > fidl::encoding::Encode<DeviceGetSupportedNetworkTypesResponse, D> for (T0,)
1491    {
1492        #[inline]
1493        unsafe fn encode(
1494            self,
1495            encoder: &mut fidl::encoding::Encoder<'_, D>,
1496            offset: usize,
1497            depth: fidl::encoding::Depth,
1498        ) -> fidl::Result<()> {
1499            encoder.debug_check_bounds::<DeviceGetSupportedNetworkTypesResponse>(offset);
1500            // Zero out padding regions. There's no need to apply masks
1501            // because the unmasked parts will be overwritten by fields.
1502            // Write the fields.
1503            self.0.encode(encoder, offset + 0, depth)?;
1504            Ok(())
1505        }
1506    }
1507
1508    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1509        for DeviceGetSupportedNetworkTypesResponse
1510    {
1511        #[inline(always)]
1512        fn new_empty() -> Self {
1513            Self {
1514                network_types: fidl::new_empty!(
1515                    fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>,
1516                    D
1517                ),
1518            }
1519        }
1520
1521        #[inline]
1522        unsafe fn decode(
1523            &mut self,
1524            decoder: &mut fidl::encoding::Decoder<'_, D>,
1525            offset: usize,
1526            _depth: fidl::encoding::Depth,
1527        ) -> fidl::Result<()> {
1528            decoder.debug_check_bounds::<Self>(offset);
1529            // Verify that padding bytes are zero.
1530            fidl::decode!(
1531                fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>,
1532                D,
1533                &mut self.network_types,
1534                decoder,
1535                offset + 0,
1536                _depth
1537            )?;
1538            Ok(())
1539        }
1540    }
1541
1542    impl fidl::encoding::ValueTypeMarker for DeviceProvisionNetworkRequest {
1543        type Borrowed<'a> = &'a Self;
1544        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1545            value
1546        }
1547    }
1548
1549    unsafe impl fidl::encoding::TypeMarker for DeviceProvisionNetworkRequest {
1550        type Owned = Self;
1551
1552        #[inline(always)]
1553        fn inline_align(_context: fidl::encoding::Context) -> usize {
1554            8
1555        }
1556
1557        #[inline(always)]
1558        fn inline_size(_context: fidl::encoding::Context) -> usize {
1559            32
1560        }
1561    }
1562
1563    unsafe impl<D: fidl::encoding::ResourceDialect>
1564        fidl::encoding::Encode<DeviceProvisionNetworkRequest, D>
1565        for &DeviceProvisionNetworkRequest
1566    {
1567        #[inline]
1568        unsafe fn encode(
1569            self,
1570            encoder: &mut fidl::encoding::Encoder<'_, D>,
1571            offset: usize,
1572            _depth: fidl::encoding::Depth,
1573        ) -> fidl::Result<()> {
1574            encoder.debug_check_bounds::<DeviceProvisionNetworkRequest>(offset);
1575            // Delegate to tuple encoding.
1576            fidl::encoding::Encode::<DeviceProvisionNetworkRequest, D>::encode(
1577                (<ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),),
1578                encoder,
1579                offset,
1580                _depth,
1581            )
1582        }
1583    }
1584    unsafe impl<
1585        D: fidl::encoding::ResourceDialect,
1586        T0: fidl::encoding::Encode<ProvisioningParams, D>,
1587    > fidl::encoding::Encode<DeviceProvisionNetworkRequest, D> for (T0,)
1588    {
1589        #[inline]
1590        unsafe fn encode(
1591            self,
1592            encoder: &mut fidl::encoding::Encoder<'_, D>,
1593            offset: usize,
1594            depth: fidl::encoding::Depth,
1595        ) -> fidl::Result<()> {
1596            encoder.debug_check_bounds::<DeviceProvisionNetworkRequest>(offset);
1597            // Zero out padding regions. There's no need to apply masks
1598            // because the unmasked parts will be overwritten by fields.
1599            // Write the fields.
1600            self.0.encode(encoder, offset + 0, depth)?;
1601            Ok(())
1602        }
1603    }
1604
1605    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1606        for DeviceProvisionNetworkRequest
1607    {
1608        #[inline(always)]
1609        fn new_empty() -> Self {
1610            Self { params: fidl::new_empty!(ProvisioningParams, D) }
1611        }
1612
1613        #[inline]
1614        unsafe fn decode(
1615            &mut self,
1616            decoder: &mut fidl::encoding::Decoder<'_, D>,
1617            offset: usize,
1618            _depth: fidl::encoding::Depth,
1619        ) -> fidl::Result<()> {
1620            decoder.debug_check_bounds::<Self>(offset);
1621            // Verify that padding bytes are zero.
1622            fidl::decode!(ProvisioningParams, D, &mut self.params, decoder, offset + 0, _depth)?;
1623            Ok(())
1624        }
1625    }
1626
1627    impl fidl::encoding::ValueTypeMarker for DeviceSetActiveRequest {
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 DeviceSetActiveRequest {
1635        type Owned = Self;
1636
1637        #[inline(always)]
1638        fn inline_align(_context: fidl::encoding::Context) -> usize {
1639            1
1640        }
1641
1642        #[inline(always)]
1643        fn inline_size(_context: fidl::encoding::Context) -> usize {
1644            1
1645        }
1646    }
1647
1648    unsafe impl<D: fidl::encoding::ResourceDialect>
1649        fidl::encoding::Encode<DeviceSetActiveRequest, D> for &DeviceSetActiveRequest
1650    {
1651        #[inline]
1652        unsafe fn encode(
1653            self,
1654            encoder: &mut fidl::encoding::Encoder<'_, D>,
1655            offset: usize,
1656            _depth: fidl::encoding::Depth,
1657        ) -> fidl::Result<()> {
1658            encoder.debug_check_bounds::<DeviceSetActiveRequest>(offset);
1659            // Delegate to tuple encoding.
1660            fidl::encoding::Encode::<DeviceSetActiveRequest, D>::encode(
1661                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.active),),
1662                encoder,
1663                offset,
1664                _depth,
1665            )
1666        }
1667    }
1668    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
1669        fidl::encoding::Encode<DeviceSetActiveRequest, D> for (T0,)
1670    {
1671        #[inline]
1672        unsafe fn encode(
1673            self,
1674            encoder: &mut fidl::encoding::Encoder<'_, D>,
1675            offset: usize,
1676            depth: fidl::encoding::Depth,
1677        ) -> fidl::Result<()> {
1678            encoder.debug_check_bounds::<DeviceSetActiveRequest>(offset);
1679            // Zero out padding regions. There's no need to apply masks
1680            // because the unmasked parts will be overwritten by fields.
1681            // Write the fields.
1682            self.0.encode(encoder, offset + 0, depth)?;
1683            Ok(())
1684        }
1685    }
1686
1687    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1688        for DeviceSetActiveRequest
1689    {
1690        #[inline(always)]
1691        fn new_empty() -> Self {
1692            Self { active: fidl::new_empty!(bool, D) }
1693        }
1694
1695        #[inline]
1696        unsafe fn decode(
1697            &mut self,
1698            decoder: &mut fidl::encoding::Decoder<'_, D>,
1699            offset: usize,
1700            _depth: fidl::encoding::Depth,
1701        ) -> fidl::Result<()> {
1702            decoder.debug_check_bounds::<Self>(offset);
1703            // Verify that padding bytes are zero.
1704            fidl::decode!(bool, D, &mut self.active, decoder, offset + 0, _depth)?;
1705            Ok(())
1706        }
1707    }
1708
1709    impl fidl::encoding::ValueTypeMarker for DeviceWatchDeviceStateResponse {
1710        type Borrowed<'a> = &'a Self;
1711        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1712            value
1713        }
1714    }
1715
1716    unsafe impl fidl::encoding::TypeMarker for DeviceWatchDeviceStateResponse {
1717        type Owned = Self;
1718
1719        #[inline(always)]
1720        fn inline_align(_context: fidl::encoding::Context) -> usize {
1721            8
1722        }
1723
1724        #[inline(always)]
1725        fn inline_size(_context: fidl::encoding::Context) -> usize {
1726            16
1727        }
1728    }
1729
1730    unsafe impl<D: fidl::encoding::ResourceDialect>
1731        fidl::encoding::Encode<DeviceWatchDeviceStateResponse, D>
1732        for &DeviceWatchDeviceStateResponse
1733    {
1734        #[inline]
1735        unsafe fn encode(
1736            self,
1737            encoder: &mut fidl::encoding::Encoder<'_, D>,
1738            offset: usize,
1739            _depth: fidl::encoding::Depth,
1740        ) -> fidl::Result<()> {
1741            encoder.debug_check_bounds::<DeviceWatchDeviceStateResponse>(offset);
1742            // Delegate to tuple encoding.
1743            fidl::encoding::Encode::<DeviceWatchDeviceStateResponse, D>::encode(
1744                (<DeviceState as fidl::encoding::ValueTypeMarker>::borrow(
1745                    &self.device_combined_state,
1746                ),),
1747                encoder,
1748                offset,
1749                _depth,
1750            )
1751        }
1752    }
1753    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceState, D>>
1754        fidl::encoding::Encode<DeviceWatchDeviceStateResponse, D> for (T0,)
1755    {
1756        #[inline]
1757        unsafe fn encode(
1758            self,
1759            encoder: &mut fidl::encoding::Encoder<'_, D>,
1760            offset: usize,
1761            depth: fidl::encoding::Depth,
1762        ) -> fidl::Result<()> {
1763            encoder.debug_check_bounds::<DeviceWatchDeviceStateResponse>(offset);
1764            // Zero out padding regions. There's no need to apply masks
1765            // because the unmasked parts will be overwritten by fields.
1766            // Write the fields.
1767            self.0.encode(encoder, offset + 0, depth)?;
1768            Ok(())
1769        }
1770    }
1771
1772    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1773        for DeviceWatchDeviceStateResponse
1774    {
1775        #[inline(always)]
1776        fn new_empty() -> Self {
1777            Self { device_combined_state: fidl::new_empty!(DeviceState, D) }
1778        }
1779
1780        #[inline]
1781        unsafe fn decode(
1782            &mut self,
1783            decoder: &mut fidl::encoding::Decoder<'_, D>,
1784            offset: usize,
1785            _depth: fidl::encoding::Depth,
1786        ) -> fidl::Result<()> {
1787            decoder.debug_check_bounds::<Self>(offset);
1788            // Verify that padding bytes are zero.
1789            fidl::decode!(
1790                DeviceState,
1791                D,
1792                &mut self.device_combined_state,
1793                decoder,
1794                offset + 0,
1795                _depth
1796            )?;
1797            Ok(())
1798        }
1799    }
1800
1801    impl fidl::encoding::ValueTypeMarker for EnergyScanResultStreamNextResponse {
1802        type Borrowed<'a> = &'a Self;
1803        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1804            value
1805        }
1806    }
1807
1808    unsafe impl fidl::encoding::TypeMarker for EnergyScanResultStreamNextResponse {
1809        type Owned = Self;
1810
1811        #[inline(always)]
1812        fn inline_align(_context: fidl::encoding::Context) -> usize {
1813            8
1814        }
1815
1816        #[inline(always)]
1817        fn inline_size(_context: fidl::encoding::Context) -> usize {
1818            16
1819        }
1820    }
1821
1822    unsafe impl<D: fidl::encoding::ResourceDialect>
1823        fidl::encoding::Encode<EnergyScanResultStreamNextResponse, D>
1824        for &EnergyScanResultStreamNextResponse
1825    {
1826        #[inline]
1827        unsafe fn encode(
1828            self,
1829            encoder: &mut fidl::encoding::Encoder<'_, D>,
1830            offset: usize,
1831            _depth: fidl::encoding::Depth,
1832        ) -> fidl::Result<()> {
1833            encoder.debug_check_bounds::<EnergyScanResultStreamNextResponse>(offset);
1834            // Delegate to tuple encoding.
1835            fidl::encoding::Encode::<EnergyScanResultStreamNextResponse, D>::encode(
1836                (
1837                    <fidl::encoding::Vector<EnergyScanResult, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
1838                ),
1839                encoder, offset, _depth
1840            )
1841        }
1842    }
1843    unsafe impl<
1844        D: fidl::encoding::ResourceDialect,
1845        T0: fidl::encoding::Encode<fidl::encoding::Vector<EnergyScanResult, 32>, D>,
1846    > fidl::encoding::Encode<EnergyScanResultStreamNextResponse, D> for (T0,)
1847    {
1848        #[inline]
1849        unsafe fn encode(
1850            self,
1851            encoder: &mut fidl::encoding::Encoder<'_, D>,
1852            offset: usize,
1853            depth: fidl::encoding::Depth,
1854        ) -> fidl::Result<()> {
1855            encoder.debug_check_bounds::<EnergyScanResultStreamNextResponse>(offset);
1856            // Zero out padding regions. There's no need to apply masks
1857            // because the unmasked parts will be overwritten by fields.
1858            // Write the fields.
1859            self.0.encode(encoder, offset + 0, depth)?;
1860            Ok(())
1861        }
1862    }
1863
1864    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1865        for EnergyScanResultStreamNextResponse
1866    {
1867        #[inline(always)]
1868        fn new_empty() -> Self {
1869            Self { results: fidl::new_empty!(fidl::encoding::Vector<EnergyScanResult, 32>, D) }
1870        }
1871
1872        #[inline]
1873        unsafe fn decode(
1874            &mut self,
1875            decoder: &mut fidl::encoding::Decoder<'_, D>,
1876            offset: usize,
1877            _depth: fidl::encoding::Depth,
1878        ) -> fidl::Result<()> {
1879            decoder.debug_check_bounds::<Self>(offset);
1880            // Verify that padding bytes are zero.
1881            fidl::decode!(fidl::encoding::Vector<EnergyScanResult, 32>, D, &mut self.results, decoder, offset + 0, _depth)?;
1882            Ok(())
1883        }
1884    }
1885
1886    impl fidl::encoding::ValueTypeMarker for ProvisioningParams {
1887        type Borrowed<'a> = &'a Self;
1888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1889            value
1890        }
1891    }
1892
1893    unsafe impl fidl::encoding::TypeMarker for ProvisioningParams {
1894        type Owned = Self;
1895
1896        #[inline(always)]
1897        fn inline_align(_context: fidl::encoding::Context) -> usize {
1898            8
1899        }
1900
1901        #[inline(always)]
1902        fn inline_size(_context: fidl::encoding::Context) -> usize {
1903            32
1904        }
1905    }
1906
1907    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningParams, D>
1908        for &ProvisioningParams
1909    {
1910        #[inline]
1911        unsafe fn encode(
1912            self,
1913            encoder: &mut fidl::encoding::Encoder<'_, D>,
1914            offset: usize,
1915            _depth: fidl::encoding::Depth,
1916        ) -> fidl::Result<()> {
1917            encoder.debug_check_bounds::<ProvisioningParams>(offset);
1918            // Delegate to tuple encoding.
1919            fidl::encoding::Encode::<ProvisioningParams, D>::encode(
1920                (
1921                    <Identity as fidl::encoding::ValueTypeMarker>::borrow(&self.identity),
1922                    <fidl::encoding::OptionalUnion<Credential> as fidl::encoding::ValueTypeMarker>::borrow(&self.credential),
1923                ),
1924                encoder, offset, _depth
1925            )
1926        }
1927    }
1928    unsafe impl<
1929        D: fidl::encoding::ResourceDialect,
1930        T0: fidl::encoding::Encode<Identity, D>,
1931        T1: fidl::encoding::Encode<fidl::encoding::OptionalUnion<Credential>, D>,
1932    > fidl::encoding::Encode<ProvisioningParams, D> for (T0, T1)
1933    {
1934        #[inline]
1935        unsafe fn encode(
1936            self,
1937            encoder: &mut fidl::encoding::Encoder<'_, D>,
1938            offset: usize,
1939            depth: fidl::encoding::Depth,
1940        ) -> fidl::Result<()> {
1941            encoder.debug_check_bounds::<ProvisioningParams>(offset);
1942            // Zero out padding regions. There's no need to apply masks
1943            // because the unmasked parts will be overwritten by fields.
1944            // Write the fields.
1945            self.0.encode(encoder, offset + 0, depth)?;
1946            self.1.encode(encoder, offset + 16, depth)?;
1947            Ok(())
1948        }
1949    }
1950
1951    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningParams {
1952        #[inline(always)]
1953        fn new_empty() -> Self {
1954            Self {
1955                identity: fidl::new_empty!(Identity, D),
1956                credential: fidl::new_empty!(fidl::encoding::OptionalUnion<Credential>, D),
1957            }
1958        }
1959
1960        #[inline]
1961        unsafe fn decode(
1962            &mut self,
1963            decoder: &mut fidl::encoding::Decoder<'_, D>,
1964            offset: usize,
1965            _depth: fidl::encoding::Depth,
1966        ) -> fidl::Result<()> {
1967            decoder.debug_check_bounds::<Self>(offset);
1968            // Verify that padding bytes are zero.
1969            fidl::decode!(Identity, D, &mut self.identity, decoder, offset + 0, _depth)?;
1970            fidl::decode!(
1971                fidl::encoding::OptionalUnion<Credential>,
1972                D,
1973                &mut self.credential,
1974                decoder,
1975                offset + 16,
1976                _depth
1977            )?;
1978            Ok(())
1979        }
1980    }
1981
1982    impl AllCounters {
1983        #[inline(always)]
1984        fn max_ordinal_present(&self) -> u64 {
1985            if let Some(_) = self.mle {
1986                return 9;
1987            }
1988            if let Some(_) = self.border_agent {
1989                return 8;
1990            }
1991            if let Some(_) = self.ip_rx {
1992                return 7;
1993            }
1994            if let Some(_) = self.ip_tx {
1995                return 6;
1996            }
1997            if let Some(_) = self.coex_saturated {
1998                return 5;
1999            }
2000            if let Some(_) = self.coex_rx {
2001                return 4;
2002            }
2003            if let Some(_) = self.coex_tx {
2004                return 3;
2005            }
2006            if let Some(_) = self.mac_rx {
2007                return 2;
2008            }
2009            if let Some(_) = self.mac_tx {
2010                return 1;
2011            }
2012            0
2013        }
2014    }
2015
2016    impl fidl::encoding::ValueTypeMarker for AllCounters {
2017        type Borrowed<'a> = &'a Self;
2018        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2019            value
2020        }
2021    }
2022
2023    unsafe impl fidl::encoding::TypeMarker for AllCounters {
2024        type Owned = Self;
2025
2026        #[inline(always)]
2027        fn inline_align(_context: fidl::encoding::Context) -> usize {
2028            8
2029        }
2030
2031        #[inline(always)]
2032        fn inline_size(_context: fidl::encoding::Context) -> usize {
2033            16
2034        }
2035    }
2036
2037    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllCounters, D>
2038        for &AllCounters
2039    {
2040        unsafe fn encode(
2041            self,
2042            encoder: &mut fidl::encoding::Encoder<'_, D>,
2043            offset: usize,
2044            mut depth: fidl::encoding::Depth,
2045        ) -> fidl::Result<()> {
2046            encoder.debug_check_bounds::<AllCounters>(offset);
2047            // Vector header
2048            let max_ordinal: u64 = self.max_ordinal_present();
2049            encoder.write_num(max_ordinal, offset);
2050            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2051            // Calling encoder.out_of_line_offset(0) is not allowed.
2052            if max_ordinal == 0 {
2053                return Ok(());
2054            }
2055            depth.increment()?;
2056            let envelope_size = 8;
2057            let bytes_len = max_ordinal as usize * envelope_size;
2058            #[allow(unused_variables)]
2059            let offset = encoder.out_of_line_offset(bytes_len);
2060            let mut _prev_end_offset: usize = 0;
2061            if 1 > max_ordinal {
2062                return Ok(());
2063            }
2064
2065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2066            // are envelope_size bytes.
2067            let cur_offset: usize = (1 - 1) * envelope_size;
2068
2069            // Zero reserved fields.
2070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2071
2072            // Safety:
2073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2075            //   envelope_size bytes, there is always sufficient room.
2076            fidl::encoding::encode_in_envelope_optional::<MacCounters, D>(
2077                self.mac_tx.as_ref().map(<MacCounters as fidl::encoding::ValueTypeMarker>::borrow),
2078                encoder,
2079                offset + cur_offset,
2080                depth,
2081            )?;
2082
2083            _prev_end_offset = cur_offset + envelope_size;
2084            if 2 > max_ordinal {
2085                return Ok(());
2086            }
2087
2088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2089            // are envelope_size bytes.
2090            let cur_offset: usize = (2 - 1) * envelope_size;
2091
2092            // Zero reserved fields.
2093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2094
2095            // Safety:
2096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2098            //   envelope_size bytes, there is always sufficient room.
2099            fidl::encoding::encode_in_envelope_optional::<MacCounters, D>(
2100                self.mac_rx.as_ref().map(<MacCounters as fidl::encoding::ValueTypeMarker>::borrow),
2101                encoder,
2102                offset + cur_offset,
2103                depth,
2104            )?;
2105
2106            _prev_end_offset = cur_offset + envelope_size;
2107            if 3 > max_ordinal {
2108                return Ok(());
2109            }
2110
2111            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2112            // are envelope_size bytes.
2113            let cur_offset: usize = (3 - 1) * envelope_size;
2114
2115            // Zero reserved fields.
2116            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2117
2118            // Safety:
2119            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2120            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2121            //   envelope_size bytes, there is always sufficient room.
2122            fidl::encoding::encode_in_envelope_optional::<CoexCounters, D>(
2123                self.coex_tx
2124                    .as_ref()
2125                    .map(<CoexCounters as fidl::encoding::ValueTypeMarker>::borrow),
2126                encoder,
2127                offset + cur_offset,
2128                depth,
2129            )?;
2130
2131            _prev_end_offset = cur_offset + envelope_size;
2132            if 4 > max_ordinal {
2133                return Ok(());
2134            }
2135
2136            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2137            // are envelope_size bytes.
2138            let cur_offset: usize = (4 - 1) * envelope_size;
2139
2140            // Zero reserved fields.
2141            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2142
2143            // Safety:
2144            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2145            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2146            //   envelope_size bytes, there is always sufficient room.
2147            fidl::encoding::encode_in_envelope_optional::<CoexCounters, D>(
2148                self.coex_rx
2149                    .as_ref()
2150                    .map(<CoexCounters as fidl::encoding::ValueTypeMarker>::borrow),
2151                encoder,
2152                offset + cur_offset,
2153                depth,
2154            )?;
2155
2156            _prev_end_offset = cur_offset + envelope_size;
2157            if 5 > max_ordinal {
2158                return Ok(());
2159            }
2160
2161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2162            // are envelope_size bytes.
2163            let cur_offset: usize = (5 - 1) * envelope_size;
2164
2165            // Zero reserved fields.
2166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2167
2168            // Safety:
2169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2171            //   envelope_size bytes, there is always sufficient room.
2172            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2173                self.coex_saturated.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2174                encoder,
2175                offset + cur_offset,
2176                depth,
2177            )?;
2178
2179            _prev_end_offset = cur_offset + envelope_size;
2180            if 6 > max_ordinal {
2181                return Ok(());
2182            }
2183
2184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2185            // are envelope_size bytes.
2186            let cur_offset: usize = (6 - 1) * envelope_size;
2187
2188            // Zero reserved fields.
2189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2190
2191            // Safety:
2192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2194            //   envelope_size bytes, there is always sufficient room.
2195            fidl::encoding::encode_in_envelope_optional::<IpCounters, D>(
2196                self.ip_tx.as_ref().map(<IpCounters as fidl::encoding::ValueTypeMarker>::borrow),
2197                encoder,
2198                offset + cur_offset,
2199                depth,
2200            )?;
2201
2202            _prev_end_offset = cur_offset + envelope_size;
2203            if 7 > max_ordinal {
2204                return Ok(());
2205            }
2206
2207            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2208            // are envelope_size bytes.
2209            let cur_offset: usize = (7 - 1) * envelope_size;
2210
2211            // Zero reserved fields.
2212            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2213
2214            // Safety:
2215            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2216            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2217            //   envelope_size bytes, there is always sufficient room.
2218            fidl::encoding::encode_in_envelope_optional::<IpCounters, D>(
2219                self.ip_rx.as_ref().map(<IpCounters as fidl::encoding::ValueTypeMarker>::borrow),
2220                encoder,
2221                offset + cur_offset,
2222                depth,
2223            )?;
2224
2225            _prev_end_offset = cur_offset + envelope_size;
2226            if 8 > max_ordinal {
2227                return Ok(());
2228            }
2229
2230            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2231            // are envelope_size bytes.
2232            let cur_offset: usize = (8 - 1) * envelope_size;
2233
2234            // Zero reserved fields.
2235            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2236
2237            // Safety:
2238            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2239            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2240            //   envelope_size bytes, there is always sufficient room.
2241            fidl::encoding::encode_in_envelope_optional::<BorderAgentCounters, D>(
2242                self.border_agent
2243                    .as_ref()
2244                    .map(<BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
2245                encoder,
2246                offset + cur_offset,
2247                depth,
2248            )?;
2249
2250            _prev_end_offset = cur_offset + envelope_size;
2251            if 9 > max_ordinal {
2252                return Ok(());
2253            }
2254
2255            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2256            // are envelope_size bytes.
2257            let cur_offset: usize = (9 - 1) * envelope_size;
2258
2259            // Zero reserved fields.
2260            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2261
2262            // Safety:
2263            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2264            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2265            //   envelope_size bytes, there is always sufficient room.
2266            fidl::encoding::encode_in_envelope_optional::<MleCounters, D>(
2267                self.mle.as_ref().map(<MleCounters as fidl::encoding::ValueTypeMarker>::borrow),
2268                encoder,
2269                offset + cur_offset,
2270                depth,
2271            )?;
2272
2273            _prev_end_offset = cur_offset + envelope_size;
2274
2275            Ok(())
2276        }
2277    }
2278
2279    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllCounters {
2280        #[inline(always)]
2281        fn new_empty() -> Self {
2282            Self::default()
2283        }
2284
2285        unsafe fn decode(
2286            &mut self,
2287            decoder: &mut fidl::encoding::Decoder<'_, D>,
2288            offset: usize,
2289            mut depth: fidl::encoding::Depth,
2290        ) -> fidl::Result<()> {
2291            decoder.debug_check_bounds::<Self>(offset);
2292            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2293                None => return Err(fidl::Error::NotNullable),
2294                Some(len) => len,
2295            };
2296            // Calling decoder.out_of_line_offset(0) is not allowed.
2297            if len == 0 {
2298                return Ok(());
2299            };
2300            depth.increment()?;
2301            let envelope_size = 8;
2302            let bytes_len = len * envelope_size;
2303            let offset = decoder.out_of_line_offset(bytes_len)?;
2304            // Decode the envelope for each type.
2305            let mut _next_ordinal_to_read = 0;
2306            let mut next_offset = offset;
2307            let end_offset = offset + bytes_len;
2308            _next_ordinal_to_read += 1;
2309            if next_offset >= end_offset {
2310                return Ok(());
2311            }
2312
2313            // Decode unknown envelopes for gaps in ordinals.
2314            while _next_ordinal_to_read < 1 {
2315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2316                _next_ordinal_to_read += 1;
2317                next_offset += envelope_size;
2318            }
2319
2320            let next_out_of_line = decoder.next_out_of_line();
2321            let handles_before = decoder.remaining_handles();
2322            if let Some((inlined, num_bytes, num_handles)) =
2323                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2324            {
2325                let member_inline_size =
2326                    <MacCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2327                if inlined != (member_inline_size <= 4) {
2328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2329                }
2330                let inner_offset;
2331                let mut inner_depth = depth.clone();
2332                if inlined {
2333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2334                    inner_offset = next_offset;
2335                } else {
2336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2337                    inner_depth.increment()?;
2338                }
2339                let val_ref = self.mac_tx.get_or_insert_with(|| fidl::new_empty!(MacCounters, D));
2340                fidl::decode!(MacCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2341                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2342                {
2343                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2344                }
2345                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2346                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2347                }
2348            }
2349
2350            next_offset += envelope_size;
2351            _next_ordinal_to_read += 1;
2352            if next_offset >= end_offset {
2353                return Ok(());
2354            }
2355
2356            // Decode unknown envelopes for gaps in ordinals.
2357            while _next_ordinal_to_read < 2 {
2358                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2359                _next_ordinal_to_read += 1;
2360                next_offset += envelope_size;
2361            }
2362
2363            let next_out_of_line = decoder.next_out_of_line();
2364            let handles_before = decoder.remaining_handles();
2365            if let Some((inlined, num_bytes, num_handles)) =
2366                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2367            {
2368                let member_inline_size =
2369                    <MacCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2370                if inlined != (member_inline_size <= 4) {
2371                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2372                }
2373                let inner_offset;
2374                let mut inner_depth = depth.clone();
2375                if inlined {
2376                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2377                    inner_offset = next_offset;
2378                } else {
2379                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2380                    inner_depth.increment()?;
2381                }
2382                let val_ref = self.mac_rx.get_or_insert_with(|| fidl::new_empty!(MacCounters, D));
2383                fidl::decode!(MacCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2384                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2385                {
2386                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2387                }
2388                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2389                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2390                }
2391            }
2392
2393            next_offset += envelope_size;
2394            _next_ordinal_to_read += 1;
2395            if next_offset >= end_offset {
2396                return Ok(());
2397            }
2398
2399            // Decode unknown envelopes for gaps in ordinals.
2400            while _next_ordinal_to_read < 3 {
2401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2402                _next_ordinal_to_read += 1;
2403                next_offset += envelope_size;
2404            }
2405
2406            let next_out_of_line = decoder.next_out_of_line();
2407            let handles_before = decoder.remaining_handles();
2408            if let Some((inlined, num_bytes, num_handles)) =
2409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2410            {
2411                let member_inline_size =
2412                    <CoexCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2413                if inlined != (member_inline_size <= 4) {
2414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2415                }
2416                let inner_offset;
2417                let mut inner_depth = depth.clone();
2418                if inlined {
2419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2420                    inner_offset = next_offset;
2421                } else {
2422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2423                    inner_depth.increment()?;
2424                }
2425                let val_ref = self.coex_tx.get_or_insert_with(|| fidl::new_empty!(CoexCounters, D));
2426                fidl::decode!(CoexCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2428                {
2429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2430                }
2431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2433                }
2434            }
2435
2436            next_offset += envelope_size;
2437            _next_ordinal_to_read += 1;
2438            if next_offset >= end_offset {
2439                return Ok(());
2440            }
2441
2442            // Decode unknown envelopes for gaps in ordinals.
2443            while _next_ordinal_to_read < 4 {
2444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2445                _next_ordinal_to_read += 1;
2446                next_offset += envelope_size;
2447            }
2448
2449            let next_out_of_line = decoder.next_out_of_line();
2450            let handles_before = decoder.remaining_handles();
2451            if let Some((inlined, num_bytes, num_handles)) =
2452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2453            {
2454                let member_inline_size =
2455                    <CoexCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2456                if inlined != (member_inline_size <= 4) {
2457                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2458                }
2459                let inner_offset;
2460                let mut inner_depth = depth.clone();
2461                if inlined {
2462                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2463                    inner_offset = next_offset;
2464                } else {
2465                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2466                    inner_depth.increment()?;
2467                }
2468                let val_ref = self.coex_rx.get_or_insert_with(|| fidl::new_empty!(CoexCounters, D));
2469                fidl::decode!(CoexCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2470                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2471                {
2472                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2473                }
2474                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2475                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2476                }
2477            }
2478
2479            next_offset += envelope_size;
2480            _next_ordinal_to_read += 1;
2481            if next_offset >= end_offset {
2482                return Ok(());
2483            }
2484
2485            // Decode unknown envelopes for gaps in ordinals.
2486            while _next_ordinal_to_read < 5 {
2487                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2488                _next_ordinal_to_read += 1;
2489                next_offset += envelope_size;
2490            }
2491
2492            let next_out_of_line = decoder.next_out_of_line();
2493            let handles_before = decoder.remaining_handles();
2494            if let Some((inlined, num_bytes, num_handles)) =
2495                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2496            {
2497                let member_inline_size =
2498                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2499                if inlined != (member_inline_size <= 4) {
2500                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2501                }
2502                let inner_offset;
2503                let mut inner_depth = depth.clone();
2504                if inlined {
2505                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2506                    inner_offset = next_offset;
2507                } else {
2508                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2509                    inner_depth.increment()?;
2510                }
2511                let val_ref = self.coex_saturated.get_or_insert_with(|| fidl::new_empty!(bool, D));
2512                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2513                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2514                {
2515                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2516                }
2517                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2518                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2519                }
2520            }
2521
2522            next_offset += envelope_size;
2523            _next_ordinal_to_read += 1;
2524            if next_offset >= end_offset {
2525                return Ok(());
2526            }
2527
2528            // Decode unknown envelopes for gaps in ordinals.
2529            while _next_ordinal_to_read < 6 {
2530                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2531                _next_ordinal_to_read += 1;
2532                next_offset += envelope_size;
2533            }
2534
2535            let next_out_of_line = decoder.next_out_of_line();
2536            let handles_before = decoder.remaining_handles();
2537            if let Some((inlined, num_bytes, num_handles)) =
2538                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2539            {
2540                let member_inline_size =
2541                    <IpCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2542                if inlined != (member_inline_size <= 4) {
2543                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2544                }
2545                let inner_offset;
2546                let mut inner_depth = depth.clone();
2547                if inlined {
2548                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2549                    inner_offset = next_offset;
2550                } else {
2551                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2552                    inner_depth.increment()?;
2553                }
2554                let val_ref = self.ip_tx.get_or_insert_with(|| fidl::new_empty!(IpCounters, D));
2555                fidl::decode!(IpCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2556                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2557                {
2558                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2559                }
2560                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2561                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2562                }
2563            }
2564
2565            next_offset += envelope_size;
2566            _next_ordinal_to_read += 1;
2567            if next_offset >= end_offset {
2568                return Ok(());
2569            }
2570
2571            // Decode unknown envelopes for gaps in ordinals.
2572            while _next_ordinal_to_read < 7 {
2573                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2574                _next_ordinal_to_read += 1;
2575                next_offset += envelope_size;
2576            }
2577
2578            let next_out_of_line = decoder.next_out_of_line();
2579            let handles_before = decoder.remaining_handles();
2580            if let Some((inlined, num_bytes, num_handles)) =
2581                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2582            {
2583                let member_inline_size =
2584                    <IpCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2585                if inlined != (member_inline_size <= 4) {
2586                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2587                }
2588                let inner_offset;
2589                let mut inner_depth = depth.clone();
2590                if inlined {
2591                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2592                    inner_offset = next_offset;
2593                } else {
2594                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2595                    inner_depth.increment()?;
2596                }
2597                let val_ref = self.ip_rx.get_or_insert_with(|| fidl::new_empty!(IpCounters, D));
2598                fidl::decode!(IpCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2599                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2600                {
2601                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2602                }
2603                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2604                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2605                }
2606            }
2607
2608            next_offset += envelope_size;
2609            _next_ordinal_to_read += 1;
2610            if next_offset >= end_offset {
2611                return Ok(());
2612            }
2613
2614            // Decode unknown envelopes for gaps in ordinals.
2615            while _next_ordinal_to_read < 8 {
2616                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2617                _next_ordinal_to_read += 1;
2618                next_offset += envelope_size;
2619            }
2620
2621            let next_out_of_line = decoder.next_out_of_line();
2622            let handles_before = decoder.remaining_handles();
2623            if let Some((inlined, num_bytes, num_handles)) =
2624                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2625            {
2626                let member_inline_size =
2627                    <BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(
2628                        decoder.context,
2629                    );
2630                if inlined != (member_inline_size <= 4) {
2631                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2632                }
2633                let inner_offset;
2634                let mut inner_depth = depth.clone();
2635                if inlined {
2636                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2637                    inner_offset = next_offset;
2638                } else {
2639                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2640                    inner_depth.increment()?;
2641                }
2642                let val_ref = self
2643                    .border_agent
2644                    .get_or_insert_with(|| fidl::new_empty!(BorderAgentCounters, D));
2645                fidl::decode!(BorderAgentCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2646                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2647                {
2648                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2649                }
2650                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2651                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2652                }
2653            }
2654
2655            next_offset += envelope_size;
2656            _next_ordinal_to_read += 1;
2657            if next_offset >= end_offset {
2658                return Ok(());
2659            }
2660
2661            // Decode unknown envelopes for gaps in ordinals.
2662            while _next_ordinal_to_read < 9 {
2663                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2664                _next_ordinal_to_read += 1;
2665                next_offset += envelope_size;
2666            }
2667
2668            let next_out_of_line = decoder.next_out_of_line();
2669            let handles_before = decoder.remaining_handles();
2670            if let Some((inlined, num_bytes, num_handles)) =
2671                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2672            {
2673                let member_inline_size =
2674                    <MleCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2675                if inlined != (member_inline_size <= 4) {
2676                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2677                }
2678                let inner_offset;
2679                let mut inner_depth = depth.clone();
2680                if inlined {
2681                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2682                    inner_offset = next_offset;
2683                } else {
2684                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2685                    inner_depth.increment()?;
2686                }
2687                let val_ref = self.mle.get_or_insert_with(|| fidl::new_empty!(MleCounters, D));
2688                fidl::decode!(MleCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2689                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2690                {
2691                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2692                }
2693                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2694                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2695                }
2696            }
2697
2698            next_offset += envelope_size;
2699
2700            // Decode the remaining unknown envelopes.
2701            while next_offset < end_offset {
2702                _next_ordinal_to_read += 1;
2703                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2704                next_offset += envelope_size;
2705            }
2706
2707            Ok(())
2708        }
2709    }
2710
2711    impl BorderAgentCounters {
2712        #[inline(always)]
2713        fn max_ordinal_present(&self) -> u64 {
2714            if let Some(_) = self.mgmt_pending_gets {
2715                return 16;
2716            }
2717            if let Some(_) = self.mgmt_active_gets {
2718                return 15;
2719            }
2720            if let Some(_) = self.pskc_commissioner_petitions {
2721                return 14;
2722            }
2723            if let Some(_) = self.pskc_secure_session_failures {
2724                return 13;
2725            }
2726            if let Some(_) = self.pskc_secure_session_successes {
2727                return 12;
2728            }
2729            if let Some(_) = self.epskc_commissioner_petitions {
2730                return 11;
2731            }
2732            if let Some(_) = self.epskc_secure_session_failures {
2733                return 10;
2734            }
2735            if let Some(_) = self.epskc_secure_session_successes {
2736                return 9;
2737            }
2738            if let Some(_) = self.epskc_start_secure_session_errors {
2739                return 8;
2740            }
2741            if let Some(_) = self.epskc_invalid_args_errors {
2742                return 7;
2743            }
2744            if let Some(_) = self.epskc_invalid_ba_state_errors {
2745                return 6;
2746            }
2747            if let Some(_) = self.epskc_deactivation_disconnects {
2748                return 5;
2749            }
2750            if let Some(_) = self.epskc_deactivation_max_attempts {
2751                return 4;
2752            }
2753            if let Some(_) = self.epskc_deactivation_timeouts {
2754                return 3;
2755            }
2756            if let Some(_) = self.epskc_deactivation_clears {
2757                return 2;
2758            }
2759            if let Some(_) = self.epskc_activations {
2760                return 1;
2761            }
2762            0
2763        }
2764    }
2765
2766    impl fidl::encoding::ValueTypeMarker for BorderAgentCounters {
2767        type Borrowed<'a> = &'a Self;
2768        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2769            value
2770        }
2771    }
2772
2773    unsafe impl fidl::encoding::TypeMarker for BorderAgentCounters {
2774        type Owned = Self;
2775
2776        #[inline(always)]
2777        fn inline_align(_context: fidl::encoding::Context) -> usize {
2778            8
2779        }
2780
2781        #[inline(always)]
2782        fn inline_size(_context: fidl::encoding::Context) -> usize {
2783            16
2784        }
2785    }
2786
2787    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderAgentCounters, D>
2788        for &BorderAgentCounters
2789    {
2790        unsafe fn encode(
2791            self,
2792            encoder: &mut fidl::encoding::Encoder<'_, D>,
2793            offset: usize,
2794            mut depth: fidl::encoding::Depth,
2795        ) -> fidl::Result<()> {
2796            encoder.debug_check_bounds::<BorderAgentCounters>(offset);
2797            // Vector header
2798            let max_ordinal: u64 = self.max_ordinal_present();
2799            encoder.write_num(max_ordinal, offset);
2800            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2801            // Calling encoder.out_of_line_offset(0) is not allowed.
2802            if max_ordinal == 0 {
2803                return Ok(());
2804            }
2805            depth.increment()?;
2806            let envelope_size = 8;
2807            let bytes_len = max_ordinal as usize * envelope_size;
2808            #[allow(unused_variables)]
2809            let offset = encoder.out_of_line_offset(bytes_len);
2810            let mut _prev_end_offset: usize = 0;
2811            if 1 > max_ordinal {
2812                return Ok(());
2813            }
2814
2815            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2816            // are envelope_size bytes.
2817            let cur_offset: usize = (1 - 1) * envelope_size;
2818
2819            // Zero reserved fields.
2820            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2821
2822            // Safety:
2823            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2824            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2825            //   envelope_size bytes, there is always sufficient room.
2826            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2827                self.epskc_activations
2828                    .as_ref()
2829                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2830                encoder,
2831                offset + cur_offset,
2832                depth,
2833            )?;
2834
2835            _prev_end_offset = cur_offset + envelope_size;
2836            if 2 > max_ordinal {
2837                return Ok(());
2838            }
2839
2840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2841            // are envelope_size bytes.
2842            let cur_offset: usize = (2 - 1) * envelope_size;
2843
2844            // Zero reserved fields.
2845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2846
2847            // Safety:
2848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2850            //   envelope_size bytes, there is always sufficient room.
2851            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2852                self.epskc_deactivation_clears
2853                    .as_ref()
2854                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2855                encoder,
2856                offset + cur_offset,
2857                depth,
2858            )?;
2859
2860            _prev_end_offset = cur_offset + envelope_size;
2861            if 3 > max_ordinal {
2862                return Ok(());
2863            }
2864
2865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2866            // are envelope_size bytes.
2867            let cur_offset: usize = (3 - 1) * envelope_size;
2868
2869            // Zero reserved fields.
2870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2871
2872            // Safety:
2873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2875            //   envelope_size bytes, there is always sufficient room.
2876            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2877                self.epskc_deactivation_timeouts
2878                    .as_ref()
2879                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2880                encoder,
2881                offset + cur_offset,
2882                depth,
2883            )?;
2884
2885            _prev_end_offset = cur_offset + envelope_size;
2886            if 4 > max_ordinal {
2887                return Ok(());
2888            }
2889
2890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2891            // are envelope_size bytes.
2892            let cur_offset: usize = (4 - 1) * envelope_size;
2893
2894            // Zero reserved fields.
2895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2896
2897            // Safety:
2898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2900            //   envelope_size bytes, there is always sufficient room.
2901            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2902                self.epskc_deactivation_max_attempts
2903                    .as_ref()
2904                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2905                encoder,
2906                offset + cur_offset,
2907                depth,
2908            )?;
2909
2910            _prev_end_offset = cur_offset + envelope_size;
2911            if 5 > max_ordinal {
2912                return Ok(());
2913            }
2914
2915            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2916            // are envelope_size bytes.
2917            let cur_offset: usize = (5 - 1) * envelope_size;
2918
2919            // Zero reserved fields.
2920            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2921
2922            // Safety:
2923            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2924            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2925            //   envelope_size bytes, there is always sufficient room.
2926            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2927                self.epskc_deactivation_disconnects
2928                    .as_ref()
2929                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2930                encoder,
2931                offset + cur_offset,
2932                depth,
2933            )?;
2934
2935            _prev_end_offset = cur_offset + envelope_size;
2936            if 6 > max_ordinal {
2937                return Ok(());
2938            }
2939
2940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2941            // are envelope_size bytes.
2942            let cur_offset: usize = (6 - 1) * envelope_size;
2943
2944            // Zero reserved fields.
2945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2946
2947            // Safety:
2948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2950            //   envelope_size bytes, there is always sufficient room.
2951            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2952                self.epskc_invalid_ba_state_errors
2953                    .as_ref()
2954                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2955                encoder,
2956                offset + cur_offset,
2957                depth,
2958            )?;
2959
2960            _prev_end_offset = cur_offset + envelope_size;
2961            if 7 > max_ordinal {
2962                return Ok(());
2963            }
2964
2965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2966            // are envelope_size bytes.
2967            let cur_offset: usize = (7 - 1) * envelope_size;
2968
2969            // Zero reserved fields.
2970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2971
2972            // Safety:
2973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2975            //   envelope_size bytes, there is always sufficient room.
2976            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2977                self.epskc_invalid_args_errors
2978                    .as_ref()
2979                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2980                encoder,
2981                offset + cur_offset,
2982                depth,
2983            )?;
2984
2985            _prev_end_offset = cur_offset + envelope_size;
2986            if 8 > max_ordinal {
2987                return Ok(());
2988            }
2989
2990            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2991            // are envelope_size bytes.
2992            let cur_offset: usize = (8 - 1) * envelope_size;
2993
2994            // Zero reserved fields.
2995            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2996
2997            // Safety:
2998            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2999            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3000            //   envelope_size bytes, there is always sufficient room.
3001            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3002                self.epskc_start_secure_session_errors
3003                    .as_ref()
3004                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3005                encoder,
3006                offset + cur_offset,
3007                depth,
3008            )?;
3009
3010            _prev_end_offset = cur_offset + envelope_size;
3011            if 9 > max_ordinal {
3012                return Ok(());
3013            }
3014
3015            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3016            // are envelope_size bytes.
3017            let cur_offset: usize = (9 - 1) * envelope_size;
3018
3019            // Zero reserved fields.
3020            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3021
3022            // Safety:
3023            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3024            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3025            //   envelope_size bytes, there is always sufficient room.
3026            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3027                self.epskc_secure_session_successes
3028                    .as_ref()
3029                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3030                encoder,
3031                offset + cur_offset,
3032                depth,
3033            )?;
3034
3035            _prev_end_offset = cur_offset + envelope_size;
3036            if 10 > max_ordinal {
3037                return Ok(());
3038            }
3039
3040            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3041            // are envelope_size bytes.
3042            let cur_offset: usize = (10 - 1) * envelope_size;
3043
3044            // Zero reserved fields.
3045            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3046
3047            // Safety:
3048            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3049            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3050            //   envelope_size bytes, there is always sufficient room.
3051            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3052                self.epskc_secure_session_failures
3053                    .as_ref()
3054                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3055                encoder,
3056                offset + cur_offset,
3057                depth,
3058            )?;
3059
3060            _prev_end_offset = cur_offset + envelope_size;
3061            if 11 > max_ordinal {
3062                return Ok(());
3063            }
3064
3065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3066            // are envelope_size bytes.
3067            let cur_offset: usize = (11 - 1) * envelope_size;
3068
3069            // Zero reserved fields.
3070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3071
3072            // Safety:
3073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3075            //   envelope_size bytes, there is always sufficient room.
3076            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3077                self.epskc_commissioner_petitions
3078                    .as_ref()
3079                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3080                encoder,
3081                offset + cur_offset,
3082                depth,
3083            )?;
3084
3085            _prev_end_offset = cur_offset + envelope_size;
3086            if 12 > max_ordinal {
3087                return Ok(());
3088            }
3089
3090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3091            // are envelope_size bytes.
3092            let cur_offset: usize = (12 - 1) * envelope_size;
3093
3094            // Zero reserved fields.
3095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3096
3097            // Safety:
3098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3100            //   envelope_size bytes, there is always sufficient room.
3101            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3102                self.pskc_secure_session_successes
3103                    .as_ref()
3104                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3105                encoder,
3106                offset + cur_offset,
3107                depth,
3108            )?;
3109
3110            _prev_end_offset = cur_offset + envelope_size;
3111            if 13 > max_ordinal {
3112                return Ok(());
3113            }
3114
3115            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3116            // are envelope_size bytes.
3117            let cur_offset: usize = (13 - 1) * envelope_size;
3118
3119            // Zero reserved fields.
3120            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3121
3122            // Safety:
3123            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3124            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3125            //   envelope_size bytes, there is always sufficient room.
3126            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3127                self.pskc_secure_session_failures
3128                    .as_ref()
3129                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3130                encoder,
3131                offset + cur_offset,
3132                depth,
3133            )?;
3134
3135            _prev_end_offset = cur_offset + envelope_size;
3136            if 14 > max_ordinal {
3137                return Ok(());
3138            }
3139
3140            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3141            // are envelope_size bytes.
3142            let cur_offset: usize = (14 - 1) * envelope_size;
3143
3144            // Zero reserved fields.
3145            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3146
3147            // Safety:
3148            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3149            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3150            //   envelope_size bytes, there is always sufficient room.
3151            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3152                self.pskc_commissioner_petitions
3153                    .as_ref()
3154                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3155                encoder,
3156                offset + cur_offset,
3157                depth,
3158            )?;
3159
3160            _prev_end_offset = cur_offset + envelope_size;
3161            if 15 > max_ordinal {
3162                return Ok(());
3163            }
3164
3165            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3166            // are envelope_size bytes.
3167            let cur_offset: usize = (15 - 1) * envelope_size;
3168
3169            // Zero reserved fields.
3170            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3171
3172            // Safety:
3173            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3174            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3175            //   envelope_size bytes, there is always sufficient room.
3176            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3177                self.mgmt_active_gets
3178                    .as_ref()
3179                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3180                encoder,
3181                offset + cur_offset,
3182                depth,
3183            )?;
3184
3185            _prev_end_offset = cur_offset + envelope_size;
3186            if 16 > max_ordinal {
3187                return Ok(());
3188            }
3189
3190            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3191            // are envelope_size bytes.
3192            let cur_offset: usize = (16 - 1) * envelope_size;
3193
3194            // Zero reserved fields.
3195            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3196
3197            // Safety:
3198            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3199            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3200            //   envelope_size bytes, there is always sufficient room.
3201            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3202                self.mgmt_pending_gets
3203                    .as_ref()
3204                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3205                encoder,
3206                offset + cur_offset,
3207                depth,
3208            )?;
3209
3210            _prev_end_offset = cur_offset + envelope_size;
3211
3212            Ok(())
3213        }
3214    }
3215
3216    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderAgentCounters {
3217        #[inline(always)]
3218        fn new_empty() -> Self {
3219            Self::default()
3220        }
3221
3222        unsafe fn decode(
3223            &mut self,
3224            decoder: &mut fidl::encoding::Decoder<'_, D>,
3225            offset: usize,
3226            mut depth: fidl::encoding::Depth,
3227        ) -> fidl::Result<()> {
3228            decoder.debug_check_bounds::<Self>(offset);
3229            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3230                None => return Err(fidl::Error::NotNullable),
3231                Some(len) => len,
3232            };
3233            // Calling decoder.out_of_line_offset(0) is not allowed.
3234            if len == 0 {
3235                return Ok(());
3236            };
3237            depth.increment()?;
3238            let envelope_size = 8;
3239            let bytes_len = len * envelope_size;
3240            let offset = decoder.out_of_line_offset(bytes_len)?;
3241            // Decode the envelope for each type.
3242            let mut _next_ordinal_to_read = 0;
3243            let mut next_offset = offset;
3244            let end_offset = offset + bytes_len;
3245            _next_ordinal_to_read += 1;
3246            if next_offset >= end_offset {
3247                return Ok(());
3248            }
3249
3250            // Decode unknown envelopes for gaps in ordinals.
3251            while _next_ordinal_to_read < 1 {
3252                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3253                _next_ordinal_to_read += 1;
3254                next_offset += envelope_size;
3255            }
3256
3257            let next_out_of_line = decoder.next_out_of_line();
3258            let handles_before = decoder.remaining_handles();
3259            if let Some((inlined, num_bytes, num_handles)) =
3260                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3261            {
3262                let member_inline_size =
3263                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3264                if inlined != (member_inline_size <= 4) {
3265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3266                }
3267                let inner_offset;
3268                let mut inner_depth = depth.clone();
3269                if inlined {
3270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3271                    inner_offset = next_offset;
3272                } else {
3273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3274                    inner_depth.increment()?;
3275                }
3276                let val_ref =
3277                    self.epskc_activations.get_or_insert_with(|| fidl::new_empty!(u32, D));
3278                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3280                {
3281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3282                }
3283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3285                }
3286            }
3287
3288            next_offset += envelope_size;
3289            _next_ordinal_to_read += 1;
3290            if next_offset >= end_offset {
3291                return Ok(());
3292            }
3293
3294            // Decode unknown envelopes for gaps in ordinals.
3295            while _next_ordinal_to_read < 2 {
3296                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3297                _next_ordinal_to_read += 1;
3298                next_offset += envelope_size;
3299            }
3300
3301            let next_out_of_line = decoder.next_out_of_line();
3302            let handles_before = decoder.remaining_handles();
3303            if let Some((inlined, num_bytes, num_handles)) =
3304                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3305            {
3306                let member_inline_size =
3307                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3308                if inlined != (member_inline_size <= 4) {
3309                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3310                }
3311                let inner_offset;
3312                let mut inner_depth = depth.clone();
3313                if inlined {
3314                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3315                    inner_offset = next_offset;
3316                } else {
3317                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3318                    inner_depth.increment()?;
3319                }
3320                let val_ref =
3321                    self.epskc_deactivation_clears.get_or_insert_with(|| fidl::new_empty!(u32, D));
3322                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3323                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3324                {
3325                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3326                }
3327                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3328                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3329                }
3330            }
3331
3332            next_offset += envelope_size;
3333            _next_ordinal_to_read += 1;
3334            if next_offset >= end_offset {
3335                return Ok(());
3336            }
3337
3338            // Decode unknown envelopes for gaps in ordinals.
3339            while _next_ordinal_to_read < 3 {
3340                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3341                _next_ordinal_to_read += 1;
3342                next_offset += envelope_size;
3343            }
3344
3345            let next_out_of_line = decoder.next_out_of_line();
3346            let handles_before = decoder.remaining_handles();
3347            if let Some((inlined, num_bytes, num_handles)) =
3348                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3349            {
3350                let member_inline_size =
3351                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3352                if inlined != (member_inline_size <= 4) {
3353                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3354                }
3355                let inner_offset;
3356                let mut inner_depth = depth.clone();
3357                if inlined {
3358                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3359                    inner_offset = next_offset;
3360                } else {
3361                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3362                    inner_depth.increment()?;
3363                }
3364                let val_ref = self
3365                    .epskc_deactivation_timeouts
3366                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3367                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3368                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3369                {
3370                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3371                }
3372                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3373                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3374                }
3375            }
3376
3377            next_offset += envelope_size;
3378            _next_ordinal_to_read += 1;
3379            if next_offset >= end_offset {
3380                return Ok(());
3381            }
3382
3383            // Decode unknown envelopes for gaps in ordinals.
3384            while _next_ordinal_to_read < 4 {
3385                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3386                _next_ordinal_to_read += 1;
3387                next_offset += envelope_size;
3388            }
3389
3390            let next_out_of_line = decoder.next_out_of_line();
3391            let handles_before = decoder.remaining_handles();
3392            if let Some((inlined, num_bytes, num_handles)) =
3393                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3394            {
3395                let member_inline_size =
3396                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3397                if inlined != (member_inline_size <= 4) {
3398                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3399                }
3400                let inner_offset;
3401                let mut inner_depth = depth.clone();
3402                if inlined {
3403                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3404                    inner_offset = next_offset;
3405                } else {
3406                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3407                    inner_depth.increment()?;
3408                }
3409                let val_ref = self
3410                    .epskc_deactivation_max_attempts
3411                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3412                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3413                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3414                {
3415                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3416                }
3417                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3418                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3419                }
3420            }
3421
3422            next_offset += envelope_size;
3423            _next_ordinal_to_read += 1;
3424            if next_offset >= end_offset {
3425                return Ok(());
3426            }
3427
3428            // Decode unknown envelopes for gaps in ordinals.
3429            while _next_ordinal_to_read < 5 {
3430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3431                _next_ordinal_to_read += 1;
3432                next_offset += envelope_size;
3433            }
3434
3435            let next_out_of_line = decoder.next_out_of_line();
3436            let handles_before = decoder.remaining_handles();
3437            if let Some((inlined, num_bytes, num_handles)) =
3438                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3439            {
3440                let member_inline_size =
3441                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3442                if inlined != (member_inline_size <= 4) {
3443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3444                }
3445                let inner_offset;
3446                let mut inner_depth = depth.clone();
3447                if inlined {
3448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3449                    inner_offset = next_offset;
3450                } else {
3451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3452                    inner_depth.increment()?;
3453                }
3454                let val_ref = self
3455                    .epskc_deactivation_disconnects
3456                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3457                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3458                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3459                {
3460                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3461                }
3462                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3463                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3464                }
3465            }
3466
3467            next_offset += envelope_size;
3468            _next_ordinal_to_read += 1;
3469            if next_offset >= end_offset {
3470                return Ok(());
3471            }
3472
3473            // Decode unknown envelopes for gaps in ordinals.
3474            while _next_ordinal_to_read < 6 {
3475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3476                _next_ordinal_to_read += 1;
3477                next_offset += envelope_size;
3478            }
3479
3480            let next_out_of_line = decoder.next_out_of_line();
3481            let handles_before = decoder.remaining_handles();
3482            if let Some((inlined, num_bytes, num_handles)) =
3483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3484            {
3485                let member_inline_size =
3486                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3487                if inlined != (member_inline_size <= 4) {
3488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3489                }
3490                let inner_offset;
3491                let mut inner_depth = depth.clone();
3492                if inlined {
3493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3494                    inner_offset = next_offset;
3495                } else {
3496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3497                    inner_depth.increment()?;
3498                }
3499                let val_ref = self
3500                    .epskc_invalid_ba_state_errors
3501                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3502                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3503                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3504                {
3505                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3506                }
3507                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3508                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3509                }
3510            }
3511
3512            next_offset += envelope_size;
3513            _next_ordinal_to_read += 1;
3514            if next_offset >= end_offset {
3515                return Ok(());
3516            }
3517
3518            // Decode unknown envelopes for gaps in ordinals.
3519            while _next_ordinal_to_read < 7 {
3520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3521                _next_ordinal_to_read += 1;
3522                next_offset += envelope_size;
3523            }
3524
3525            let next_out_of_line = decoder.next_out_of_line();
3526            let handles_before = decoder.remaining_handles();
3527            if let Some((inlined, num_bytes, num_handles)) =
3528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3529            {
3530                let member_inline_size =
3531                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3532                if inlined != (member_inline_size <= 4) {
3533                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3534                }
3535                let inner_offset;
3536                let mut inner_depth = depth.clone();
3537                if inlined {
3538                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3539                    inner_offset = next_offset;
3540                } else {
3541                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3542                    inner_depth.increment()?;
3543                }
3544                let val_ref =
3545                    self.epskc_invalid_args_errors.get_or_insert_with(|| fidl::new_empty!(u32, D));
3546                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3547                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3548                {
3549                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3550                }
3551                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3552                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3553                }
3554            }
3555
3556            next_offset += envelope_size;
3557            _next_ordinal_to_read += 1;
3558            if next_offset >= end_offset {
3559                return Ok(());
3560            }
3561
3562            // Decode unknown envelopes for gaps in ordinals.
3563            while _next_ordinal_to_read < 8 {
3564                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3565                _next_ordinal_to_read += 1;
3566                next_offset += envelope_size;
3567            }
3568
3569            let next_out_of_line = decoder.next_out_of_line();
3570            let handles_before = decoder.remaining_handles();
3571            if let Some((inlined, num_bytes, num_handles)) =
3572                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3573            {
3574                let member_inline_size =
3575                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3576                if inlined != (member_inline_size <= 4) {
3577                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3578                }
3579                let inner_offset;
3580                let mut inner_depth = depth.clone();
3581                if inlined {
3582                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3583                    inner_offset = next_offset;
3584                } else {
3585                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3586                    inner_depth.increment()?;
3587                }
3588                let val_ref = self
3589                    .epskc_start_secure_session_errors
3590                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3591                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3592                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3593                {
3594                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3595                }
3596                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3597                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3598                }
3599            }
3600
3601            next_offset += envelope_size;
3602            _next_ordinal_to_read += 1;
3603            if next_offset >= end_offset {
3604                return Ok(());
3605            }
3606
3607            // Decode unknown envelopes for gaps in ordinals.
3608            while _next_ordinal_to_read < 9 {
3609                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3610                _next_ordinal_to_read += 1;
3611                next_offset += envelope_size;
3612            }
3613
3614            let next_out_of_line = decoder.next_out_of_line();
3615            let handles_before = decoder.remaining_handles();
3616            if let Some((inlined, num_bytes, num_handles)) =
3617                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3618            {
3619                let member_inline_size =
3620                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3621                if inlined != (member_inline_size <= 4) {
3622                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3623                }
3624                let inner_offset;
3625                let mut inner_depth = depth.clone();
3626                if inlined {
3627                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3628                    inner_offset = next_offset;
3629                } else {
3630                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3631                    inner_depth.increment()?;
3632                }
3633                let val_ref = self
3634                    .epskc_secure_session_successes
3635                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3636                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3637                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3638                {
3639                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3640                }
3641                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3642                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3643                }
3644            }
3645
3646            next_offset += envelope_size;
3647            _next_ordinal_to_read += 1;
3648            if next_offset >= end_offset {
3649                return Ok(());
3650            }
3651
3652            // Decode unknown envelopes for gaps in ordinals.
3653            while _next_ordinal_to_read < 10 {
3654                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3655                _next_ordinal_to_read += 1;
3656                next_offset += envelope_size;
3657            }
3658
3659            let next_out_of_line = decoder.next_out_of_line();
3660            let handles_before = decoder.remaining_handles();
3661            if let Some((inlined, num_bytes, num_handles)) =
3662                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3663            {
3664                let member_inline_size =
3665                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3666                if inlined != (member_inline_size <= 4) {
3667                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3668                }
3669                let inner_offset;
3670                let mut inner_depth = depth.clone();
3671                if inlined {
3672                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3673                    inner_offset = next_offset;
3674                } else {
3675                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3676                    inner_depth.increment()?;
3677                }
3678                let val_ref = self
3679                    .epskc_secure_session_failures
3680                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3681                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3682                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3683                {
3684                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3685                }
3686                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3687                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3688                }
3689            }
3690
3691            next_offset += envelope_size;
3692            _next_ordinal_to_read += 1;
3693            if next_offset >= end_offset {
3694                return Ok(());
3695            }
3696
3697            // Decode unknown envelopes for gaps in ordinals.
3698            while _next_ordinal_to_read < 11 {
3699                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3700                _next_ordinal_to_read += 1;
3701                next_offset += envelope_size;
3702            }
3703
3704            let next_out_of_line = decoder.next_out_of_line();
3705            let handles_before = decoder.remaining_handles();
3706            if let Some((inlined, num_bytes, num_handles)) =
3707                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3708            {
3709                let member_inline_size =
3710                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3711                if inlined != (member_inline_size <= 4) {
3712                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3713                }
3714                let inner_offset;
3715                let mut inner_depth = depth.clone();
3716                if inlined {
3717                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3718                    inner_offset = next_offset;
3719                } else {
3720                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3721                    inner_depth.increment()?;
3722                }
3723                let val_ref = self
3724                    .epskc_commissioner_petitions
3725                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3726                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3727                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3728                {
3729                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3730                }
3731                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3732                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3733                }
3734            }
3735
3736            next_offset += envelope_size;
3737            _next_ordinal_to_read += 1;
3738            if next_offset >= end_offset {
3739                return Ok(());
3740            }
3741
3742            // Decode unknown envelopes for gaps in ordinals.
3743            while _next_ordinal_to_read < 12 {
3744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3745                _next_ordinal_to_read += 1;
3746                next_offset += envelope_size;
3747            }
3748
3749            let next_out_of_line = decoder.next_out_of_line();
3750            let handles_before = decoder.remaining_handles();
3751            if let Some((inlined, num_bytes, num_handles)) =
3752                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3753            {
3754                let member_inline_size =
3755                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3756                if inlined != (member_inline_size <= 4) {
3757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3758                }
3759                let inner_offset;
3760                let mut inner_depth = depth.clone();
3761                if inlined {
3762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3763                    inner_offset = next_offset;
3764                } else {
3765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3766                    inner_depth.increment()?;
3767                }
3768                let val_ref = self
3769                    .pskc_secure_session_successes
3770                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3771                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3773                {
3774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3775                }
3776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3778                }
3779            }
3780
3781            next_offset += envelope_size;
3782            _next_ordinal_to_read += 1;
3783            if next_offset >= end_offset {
3784                return Ok(());
3785            }
3786
3787            // Decode unknown envelopes for gaps in ordinals.
3788            while _next_ordinal_to_read < 13 {
3789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3790                _next_ordinal_to_read += 1;
3791                next_offset += envelope_size;
3792            }
3793
3794            let next_out_of_line = decoder.next_out_of_line();
3795            let handles_before = decoder.remaining_handles();
3796            if let Some((inlined, num_bytes, num_handles)) =
3797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3798            {
3799                let member_inline_size =
3800                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3801                if inlined != (member_inline_size <= 4) {
3802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3803                }
3804                let inner_offset;
3805                let mut inner_depth = depth.clone();
3806                if inlined {
3807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3808                    inner_offset = next_offset;
3809                } else {
3810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3811                    inner_depth.increment()?;
3812                }
3813                let val_ref = self
3814                    .pskc_secure_session_failures
3815                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3816                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3818                {
3819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3820                }
3821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3823                }
3824            }
3825
3826            next_offset += envelope_size;
3827            _next_ordinal_to_read += 1;
3828            if next_offset >= end_offset {
3829                return Ok(());
3830            }
3831
3832            // Decode unknown envelopes for gaps in ordinals.
3833            while _next_ordinal_to_read < 14 {
3834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3835                _next_ordinal_to_read += 1;
3836                next_offset += envelope_size;
3837            }
3838
3839            let next_out_of_line = decoder.next_out_of_line();
3840            let handles_before = decoder.remaining_handles();
3841            if let Some((inlined, num_bytes, num_handles)) =
3842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3843            {
3844                let member_inline_size =
3845                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3846                if inlined != (member_inline_size <= 4) {
3847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3848                }
3849                let inner_offset;
3850                let mut inner_depth = depth.clone();
3851                if inlined {
3852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3853                    inner_offset = next_offset;
3854                } else {
3855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3856                    inner_depth.increment()?;
3857                }
3858                let val_ref = self
3859                    .pskc_commissioner_petitions
3860                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3861                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3862                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3863                {
3864                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3865                }
3866                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3867                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3868                }
3869            }
3870
3871            next_offset += envelope_size;
3872            _next_ordinal_to_read += 1;
3873            if next_offset >= end_offset {
3874                return Ok(());
3875            }
3876
3877            // Decode unknown envelopes for gaps in ordinals.
3878            while _next_ordinal_to_read < 15 {
3879                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3880                _next_ordinal_to_read += 1;
3881                next_offset += envelope_size;
3882            }
3883
3884            let next_out_of_line = decoder.next_out_of_line();
3885            let handles_before = decoder.remaining_handles();
3886            if let Some((inlined, num_bytes, num_handles)) =
3887                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3888            {
3889                let member_inline_size =
3890                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3891                if inlined != (member_inline_size <= 4) {
3892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3893                }
3894                let inner_offset;
3895                let mut inner_depth = depth.clone();
3896                if inlined {
3897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3898                    inner_offset = next_offset;
3899                } else {
3900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3901                    inner_depth.increment()?;
3902                }
3903                let val_ref = self.mgmt_active_gets.get_or_insert_with(|| fidl::new_empty!(u32, D));
3904                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3905                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3906                {
3907                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3908                }
3909                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3910                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3911                }
3912            }
3913
3914            next_offset += envelope_size;
3915            _next_ordinal_to_read += 1;
3916            if next_offset >= end_offset {
3917                return Ok(());
3918            }
3919
3920            // Decode unknown envelopes for gaps in ordinals.
3921            while _next_ordinal_to_read < 16 {
3922                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3923                _next_ordinal_to_read += 1;
3924                next_offset += envelope_size;
3925            }
3926
3927            let next_out_of_line = decoder.next_out_of_line();
3928            let handles_before = decoder.remaining_handles();
3929            if let Some((inlined, num_bytes, num_handles)) =
3930                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3931            {
3932                let member_inline_size =
3933                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3934                if inlined != (member_inline_size <= 4) {
3935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3936                }
3937                let inner_offset;
3938                let mut inner_depth = depth.clone();
3939                if inlined {
3940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3941                    inner_offset = next_offset;
3942                } else {
3943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3944                    inner_depth.increment()?;
3945                }
3946                let val_ref =
3947                    self.mgmt_pending_gets.get_or_insert_with(|| fidl::new_empty!(u32, D));
3948                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3949                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3950                {
3951                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3952                }
3953                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3954                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3955                }
3956            }
3957
3958            next_offset += envelope_size;
3959
3960            // Decode the remaining unknown envelopes.
3961            while next_offset < end_offset {
3962                _next_ordinal_to_read += 1;
3963                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3964                next_offset += envelope_size;
3965            }
3966
3967            Ok(())
3968        }
3969    }
3970
3971    impl CoexCounters {
3972        #[inline(always)]
3973        fn max_ordinal_present(&self) -> u64 {
3974            if let Some(_) = self.grant_none {
3975                return 9;
3976            }
3977            if let Some(_) = self.avg_delay_request_to_grant_usec {
3978                return 8;
3979            }
3980            if let Some(_) = self.delayed_grant {
3981                return 7;
3982            }
3983            if let Some(_) = self.grant_deactivated_during_request {
3984                return 6;
3985            }
3986            if let Some(_) = self.grant_wait_timeout {
3987                return 5;
3988            }
3989            if let Some(_) = self.grant_wait_activated {
3990                return 4;
3991            }
3992            if let Some(_) = self.grant_wait {
3993                return 3;
3994            }
3995            if let Some(_) = self.grant_immediate {
3996                return 2;
3997            }
3998            if let Some(_) = self.requests {
3999                return 1;
4000            }
4001            0
4002        }
4003    }
4004
4005    impl fidl::encoding::ValueTypeMarker for CoexCounters {
4006        type Borrowed<'a> = &'a Self;
4007        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4008            value
4009        }
4010    }
4011
4012    unsafe impl fidl::encoding::TypeMarker for CoexCounters {
4013        type Owned = Self;
4014
4015        #[inline(always)]
4016        fn inline_align(_context: fidl::encoding::Context) -> usize {
4017            8
4018        }
4019
4020        #[inline(always)]
4021        fn inline_size(_context: fidl::encoding::Context) -> usize {
4022            16
4023        }
4024    }
4025
4026    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CoexCounters, D>
4027        for &CoexCounters
4028    {
4029        unsafe fn encode(
4030            self,
4031            encoder: &mut fidl::encoding::Encoder<'_, D>,
4032            offset: usize,
4033            mut depth: fidl::encoding::Depth,
4034        ) -> fidl::Result<()> {
4035            encoder.debug_check_bounds::<CoexCounters>(offset);
4036            // Vector header
4037            let max_ordinal: u64 = self.max_ordinal_present();
4038            encoder.write_num(max_ordinal, offset);
4039            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4040            // Calling encoder.out_of_line_offset(0) is not allowed.
4041            if max_ordinal == 0 {
4042                return Ok(());
4043            }
4044            depth.increment()?;
4045            let envelope_size = 8;
4046            let bytes_len = max_ordinal as usize * envelope_size;
4047            #[allow(unused_variables)]
4048            let offset = encoder.out_of_line_offset(bytes_len);
4049            let mut _prev_end_offset: usize = 0;
4050            if 1 > max_ordinal {
4051                return Ok(());
4052            }
4053
4054            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4055            // are envelope_size bytes.
4056            let cur_offset: usize = (1 - 1) * envelope_size;
4057
4058            // Zero reserved fields.
4059            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4060
4061            // Safety:
4062            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4063            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4064            //   envelope_size bytes, there is always sufficient room.
4065            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4066                self.requests.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4067                encoder,
4068                offset + cur_offset,
4069                depth,
4070            )?;
4071
4072            _prev_end_offset = cur_offset + envelope_size;
4073            if 2 > max_ordinal {
4074                return Ok(());
4075            }
4076
4077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4078            // are envelope_size bytes.
4079            let cur_offset: usize = (2 - 1) * envelope_size;
4080
4081            // Zero reserved fields.
4082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4083
4084            // Safety:
4085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4087            //   envelope_size bytes, there is always sufficient room.
4088            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4089                self.grant_immediate.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4090                encoder,
4091                offset + cur_offset,
4092                depth,
4093            )?;
4094
4095            _prev_end_offset = cur_offset + envelope_size;
4096            if 3 > max_ordinal {
4097                return Ok(());
4098            }
4099
4100            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4101            // are envelope_size bytes.
4102            let cur_offset: usize = (3 - 1) * envelope_size;
4103
4104            // Zero reserved fields.
4105            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4106
4107            // Safety:
4108            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4109            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4110            //   envelope_size bytes, there is always sufficient room.
4111            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4112                self.grant_wait.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4113                encoder,
4114                offset + cur_offset,
4115                depth,
4116            )?;
4117
4118            _prev_end_offset = cur_offset + envelope_size;
4119            if 4 > max_ordinal {
4120                return Ok(());
4121            }
4122
4123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4124            // are envelope_size bytes.
4125            let cur_offset: usize = (4 - 1) * envelope_size;
4126
4127            // Zero reserved fields.
4128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4129
4130            // Safety:
4131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4133            //   envelope_size bytes, there is always sufficient room.
4134            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4135                self.grant_wait_activated
4136                    .as_ref()
4137                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4138                encoder,
4139                offset + cur_offset,
4140                depth,
4141            )?;
4142
4143            _prev_end_offset = cur_offset + envelope_size;
4144            if 5 > max_ordinal {
4145                return Ok(());
4146            }
4147
4148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4149            // are envelope_size bytes.
4150            let cur_offset: usize = (5 - 1) * envelope_size;
4151
4152            // Zero reserved fields.
4153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4154
4155            // Safety:
4156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4158            //   envelope_size bytes, there is always sufficient room.
4159            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4160                self.grant_wait_timeout
4161                    .as_ref()
4162                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4163                encoder,
4164                offset + cur_offset,
4165                depth,
4166            )?;
4167
4168            _prev_end_offset = cur_offset + envelope_size;
4169            if 6 > max_ordinal {
4170                return Ok(());
4171            }
4172
4173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4174            // are envelope_size bytes.
4175            let cur_offset: usize = (6 - 1) * envelope_size;
4176
4177            // Zero reserved fields.
4178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4179
4180            // Safety:
4181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4183            //   envelope_size bytes, there is always sufficient room.
4184            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4185                self.grant_deactivated_during_request
4186                    .as_ref()
4187                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4188                encoder,
4189                offset + cur_offset,
4190                depth,
4191            )?;
4192
4193            _prev_end_offset = cur_offset + envelope_size;
4194            if 7 > max_ordinal {
4195                return Ok(());
4196            }
4197
4198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4199            // are envelope_size bytes.
4200            let cur_offset: usize = (7 - 1) * envelope_size;
4201
4202            // Zero reserved fields.
4203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4204
4205            // Safety:
4206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4208            //   envelope_size bytes, there is always sufficient room.
4209            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4210                self.delayed_grant.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4211                encoder,
4212                offset + cur_offset,
4213                depth,
4214            )?;
4215
4216            _prev_end_offset = cur_offset + envelope_size;
4217            if 8 > max_ordinal {
4218                return Ok(());
4219            }
4220
4221            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4222            // are envelope_size bytes.
4223            let cur_offset: usize = (8 - 1) * envelope_size;
4224
4225            // Zero reserved fields.
4226            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4227
4228            // Safety:
4229            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4230            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4231            //   envelope_size bytes, there is always sufficient room.
4232            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4233                self.avg_delay_request_to_grant_usec
4234                    .as_ref()
4235                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4236                encoder,
4237                offset + cur_offset,
4238                depth,
4239            )?;
4240
4241            _prev_end_offset = cur_offset + envelope_size;
4242            if 9 > max_ordinal {
4243                return Ok(());
4244            }
4245
4246            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4247            // are envelope_size bytes.
4248            let cur_offset: usize = (9 - 1) * envelope_size;
4249
4250            // Zero reserved fields.
4251            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4252
4253            // Safety:
4254            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4255            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4256            //   envelope_size bytes, there is always sufficient room.
4257            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4258                self.grant_none.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4259                encoder,
4260                offset + cur_offset,
4261                depth,
4262            )?;
4263
4264            _prev_end_offset = cur_offset + envelope_size;
4265
4266            Ok(())
4267        }
4268    }
4269
4270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CoexCounters {
4271        #[inline(always)]
4272        fn new_empty() -> Self {
4273            Self::default()
4274        }
4275
4276        unsafe fn decode(
4277            &mut self,
4278            decoder: &mut fidl::encoding::Decoder<'_, D>,
4279            offset: usize,
4280            mut depth: fidl::encoding::Depth,
4281        ) -> fidl::Result<()> {
4282            decoder.debug_check_bounds::<Self>(offset);
4283            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4284                None => return Err(fidl::Error::NotNullable),
4285                Some(len) => len,
4286            };
4287            // Calling decoder.out_of_line_offset(0) is not allowed.
4288            if len == 0 {
4289                return Ok(());
4290            };
4291            depth.increment()?;
4292            let envelope_size = 8;
4293            let bytes_len = len * envelope_size;
4294            let offset = decoder.out_of_line_offset(bytes_len)?;
4295            // Decode the envelope for each type.
4296            let mut _next_ordinal_to_read = 0;
4297            let mut next_offset = offset;
4298            let end_offset = offset + bytes_len;
4299            _next_ordinal_to_read += 1;
4300            if next_offset >= end_offset {
4301                return Ok(());
4302            }
4303
4304            // Decode unknown envelopes for gaps in ordinals.
4305            while _next_ordinal_to_read < 1 {
4306                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4307                _next_ordinal_to_read += 1;
4308                next_offset += envelope_size;
4309            }
4310
4311            let next_out_of_line = decoder.next_out_of_line();
4312            let handles_before = decoder.remaining_handles();
4313            if let Some((inlined, num_bytes, num_handles)) =
4314                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4315            {
4316                let member_inline_size =
4317                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4318                if inlined != (member_inline_size <= 4) {
4319                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4320                }
4321                let inner_offset;
4322                let mut inner_depth = depth.clone();
4323                if inlined {
4324                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4325                    inner_offset = next_offset;
4326                } else {
4327                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4328                    inner_depth.increment()?;
4329                }
4330                let val_ref = self.requests.get_or_insert_with(|| fidl::new_empty!(u64, D));
4331                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4332                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4333                {
4334                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4335                }
4336                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4337                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4338                }
4339            }
4340
4341            next_offset += envelope_size;
4342            _next_ordinal_to_read += 1;
4343            if next_offset >= end_offset {
4344                return Ok(());
4345            }
4346
4347            // Decode unknown envelopes for gaps in ordinals.
4348            while _next_ordinal_to_read < 2 {
4349                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4350                _next_ordinal_to_read += 1;
4351                next_offset += envelope_size;
4352            }
4353
4354            let next_out_of_line = decoder.next_out_of_line();
4355            let handles_before = decoder.remaining_handles();
4356            if let Some((inlined, num_bytes, num_handles)) =
4357                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4358            {
4359                let member_inline_size =
4360                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4361                if inlined != (member_inline_size <= 4) {
4362                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4363                }
4364                let inner_offset;
4365                let mut inner_depth = depth.clone();
4366                if inlined {
4367                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4368                    inner_offset = next_offset;
4369                } else {
4370                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4371                    inner_depth.increment()?;
4372                }
4373                let val_ref = self.grant_immediate.get_or_insert_with(|| fidl::new_empty!(u64, D));
4374                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4375                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4376                {
4377                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4378                }
4379                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4380                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4381                }
4382            }
4383
4384            next_offset += envelope_size;
4385            _next_ordinal_to_read += 1;
4386            if next_offset >= end_offset {
4387                return Ok(());
4388            }
4389
4390            // Decode unknown envelopes for gaps in ordinals.
4391            while _next_ordinal_to_read < 3 {
4392                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4393                _next_ordinal_to_read += 1;
4394                next_offset += envelope_size;
4395            }
4396
4397            let next_out_of_line = decoder.next_out_of_line();
4398            let handles_before = decoder.remaining_handles();
4399            if let Some((inlined, num_bytes, num_handles)) =
4400                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4401            {
4402                let member_inline_size =
4403                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4404                if inlined != (member_inline_size <= 4) {
4405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4406                }
4407                let inner_offset;
4408                let mut inner_depth = depth.clone();
4409                if inlined {
4410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4411                    inner_offset = next_offset;
4412                } else {
4413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4414                    inner_depth.increment()?;
4415                }
4416                let val_ref = self.grant_wait.get_or_insert_with(|| fidl::new_empty!(u64, D));
4417                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4418                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4419                {
4420                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4421                }
4422                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4423                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4424                }
4425            }
4426
4427            next_offset += envelope_size;
4428            _next_ordinal_to_read += 1;
4429            if next_offset >= end_offset {
4430                return Ok(());
4431            }
4432
4433            // Decode unknown envelopes for gaps in ordinals.
4434            while _next_ordinal_to_read < 4 {
4435                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4436                _next_ordinal_to_read += 1;
4437                next_offset += envelope_size;
4438            }
4439
4440            let next_out_of_line = decoder.next_out_of_line();
4441            let handles_before = decoder.remaining_handles();
4442            if let Some((inlined, num_bytes, num_handles)) =
4443                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4444            {
4445                let member_inline_size =
4446                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4447                if inlined != (member_inline_size <= 4) {
4448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4449                }
4450                let inner_offset;
4451                let mut inner_depth = depth.clone();
4452                if inlined {
4453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4454                    inner_offset = next_offset;
4455                } else {
4456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4457                    inner_depth.increment()?;
4458                }
4459                let val_ref =
4460                    self.grant_wait_activated.get_or_insert_with(|| fidl::new_empty!(u64, D));
4461                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4462                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4463                {
4464                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4465                }
4466                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4467                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4468                }
4469            }
4470
4471            next_offset += envelope_size;
4472            _next_ordinal_to_read += 1;
4473            if next_offset >= end_offset {
4474                return Ok(());
4475            }
4476
4477            // Decode unknown envelopes for gaps in ordinals.
4478            while _next_ordinal_to_read < 5 {
4479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4480                _next_ordinal_to_read += 1;
4481                next_offset += envelope_size;
4482            }
4483
4484            let next_out_of_line = decoder.next_out_of_line();
4485            let handles_before = decoder.remaining_handles();
4486            if let Some((inlined, num_bytes, num_handles)) =
4487                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4488            {
4489                let member_inline_size =
4490                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4491                if inlined != (member_inline_size <= 4) {
4492                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4493                }
4494                let inner_offset;
4495                let mut inner_depth = depth.clone();
4496                if inlined {
4497                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4498                    inner_offset = next_offset;
4499                } else {
4500                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4501                    inner_depth.increment()?;
4502                }
4503                let val_ref =
4504                    self.grant_wait_timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
4505                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4506                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4507                {
4508                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4509                }
4510                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4511                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4512                }
4513            }
4514
4515            next_offset += envelope_size;
4516            _next_ordinal_to_read += 1;
4517            if next_offset >= end_offset {
4518                return Ok(());
4519            }
4520
4521            // Decode unknown envelopes for gaps in ordinals.
4522            while _next_ordinal_to_read < 6 {
4523                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4524                _next_ordinal_to_read += 1;
4525                next_offset += envelope_size;
4526            }
4527
4528            let next_out_of_line = decoder.next_out_of_line();
4529            let handles_before = decoder.remaining_handles();
4530            if let Some((inlined, num_bytes, num_handles)) =
4531                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4532            {
4533                let member_inline_size =
4534                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4535                if inlined != (member_inline_size <= 4) {
4536                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4537                }
4538                let inner_offset;
4539                let mut inner_depth = depth.clone();
4540                if inlined {
4541                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4542                    inner_offset = next_offset;
4543                } else {
4544                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4545                    inner_depth.increment()?;
4546                }
4547                let val_ref = self
4548                    .grant_deactivated_during_request
4549                    .get_or_insert_with(|| fidl::new_empty!(u64, D));
4550                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4551                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4552                {
4553                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4554                }
4555                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4556                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4557                }
4558            }
4559
4560            next_offset += envelope_size;
4561            _next_ordinal_to_read += 1;
4562            if next_offset >= end_offset {
4563                return Ok(());
4564            }
4565
4566            // Decode unknown envelopes for gaps in ordinals.
4567            while _next_ordinal_to_read < 7 {
4568                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4569                _next_ordinal_to_read += 1;
4570                next_offset += envelope_size;
4571            }
4572
4573            let next_out_of_line = decoder.next_out_of_line();
4574            let handles_before = decoder.remaining_handles();
4575            if let Some((inlined, num_bytes, num_handles)) =
4576                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4577            {
4578                let member_inline_size =
4579                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4580                if inlined != (member_inline_size <= 4) {
4581                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4582                }
4583                let inner_offset;
4584                let mut inner_depth = depth.clone();
4585                if inlined {
4586                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4587                    inner_offset = next_offset;
4588                } else {
4589                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4590                    inner_depth.increment()?;
4591                }
4592                let val_ref = self.delayed_grant.get_or_insert_with(|| fidl::new_empty!(u64, D));
4593                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4595                {
4596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4597                }
4598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4600                }
4601            }
4602
4603            next_offset += envelope_size;
4604            _next_ordinal_to_read += 1;
4605            if next_offset >= end_offset {
4606                return Ok(());
4607            }
4608
4609            // Decode unknown envelopes for gaps in ordinals.
4610            while _next_ordinal_to_read < 8 {
4611                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4612                _next_ordinal_to_read += 1;
4613                next_offset += envelope_size;
4614            }
4615
4616            let next_out_of_line = decoder.next_out_of_line();
4617            let handles_before = decoder.remaining_handles();
4618            if let Some((inlined, num_bytes, num_handles)) =
4619                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4620            {
4621                let member_inline_size =
4622                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4623                if inlined != (member_inline_size <= 4) {
4624                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4625                }
4626                let inner_offset;
4627                let mut inner_depth = depth.clone();
4628                if inlined {
4629                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4630                    inner_offset = next_offset;
4631                } else {
4632                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4633                    inner_depth.increment()?;
4634                }
4635                let val_ref = self
4636                    .avg_delay_request_to_grant_usec
4637                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
4638                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4640                {
4641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4642                }
4643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4645                }
4646            }
4647
4648            next_offset += envelope_size;
4649            _next_ordinal_to_read += 1;
4650            if next_offset >= end_offset {
4651                return Ok(());
4652            }
4653
4654            // Decode unknown envelopes for gaps in ordinals.
4655            while _next_ordinal_to_read < 9 {
4656                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4657                _next_ordinal_to_read += 1;
4658                next_offset += envelope_size;
4659            }
4660
4661            let next_out_of_line = decoder.next_out_of_line();
4662            let handles_before = decoder.remaining_handles();
4663            if let Some((inlined, num_bytes, num_handles)) =
4664                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4665            {
4666                let member_inline_size =
4667                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4668                if inlined != (member_inline_size <= 4) {
4669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4670                }
4671                let inner_offset;
4672                let mut inner_depth = depth.clone();
4673                if inlined {
4674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4675                    inner_offset = next_offset;
4676                } else {
4677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4678                    inner_depth.increment()?;
4679                }
4680                let val_ref = self.grant_none.get_or_insert_with(|| fidl::new_empty!(u64, D));
4681                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4682                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4683                {
4684                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4685                }
4686                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4687                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4688                }
4689            }
4690
4691            next_offset += envelope_size;
4692
4693            // Decode the remaining unknown envelopes.
4694            while next_offset < end_offset {
4695                _next_ordinal_to_read += 1;
4696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4697                next_offset += envelope_size;
4698            }
4699
4700            Ok(())
4701        }
4702    }
4703
4704    impl DeviceState {
4705        #[inline(always)]
4706        fn max_ordinal_present(&self) -> u64 {
4707            if let Some(_) = self.role {
4708                return 2;
4709            }
4710            if let Some(_) = self.connectivity_state {
4711                return 1;
4712            }
4713            0
4714        }
4715    }
4716
4717    impl fidl::encoding::ValueTypeMarker for DeviceState {
4718        type Borrowed<'a> = &'a Self;
4719        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4720            value
4721        }
4722    }
4723
4724    unsafe impl fidl::encoding::TypeMarker for DeviceState {
4725        type Owned = Self;
4726
4727        #[inline(always)]
4728        fn inline_align(_context: fidl::encoding::Context) -> usize {
4729            8
4730        }
4731
4732        #[inline(always)]
4733        fn inline_size(_context: fidl::encoding::Context) -> usize {
4734            16
4735        }
4736    }
4737
4738    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceState, D>
4739        for &DeviceState
4740    {
4741        unsafe fn encode(
4742            self,
4743            encoder: &mut fidl::encoding::Encoder<'_, D>,
4744            offset: usize,
4745            mut depth: fidl::encoding::Depth,
4746        ) -> fidl::Result<()> {
4747            encoder.debug_check_bounds::<DeviceState>(offset);
4748            // Vector header
4749            let max_ordinal: u64 = self.max_ordinal_present();
4750            encoder.write_num(max_ordinal, offset);
4751            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4752            // Calling encoder.out_of_line_offset(0) is not allowed.
4753            if max_ordinal == 0 {
4754                return Ok(());
4755            }
4756            depth.increment()?;
4757            let envelope_size = 8;
4758            let bytes_len = max_ordinal as usize * envelope_size;
4759            #[allow(unused_variables)]
4760            let offset = encoder.out_of_line_offset(bytes_len);
4761            let mut _prev_end_offset: usize = 0;
4762            if 1 > max_ordinal {
4763                return Ok(());
4764            }
4765
4766            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4767            // are envelope_size bytes.
4768            let cur_offset: usize = (1 - 1) * envelope_size;
4769
4770            // Zero reserved fields.
4771            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4772
4773            // Safety:
4774            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4775            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4776            //   envelope_size bytes, there is always sufficient room.
4777            fidl::encoding::encode_in_envelope_optional::<ConnectivityState, D>(
4778                self.connectivity_state
4779                    .as_ref()
4780                    .map(<ConnectivityState as fidl::encoding::ValueTypeMarker>::borrow),
4781                encoder,
4782                offset + cur_offset,
4783                depth,
4784            )?;
4785
4786            _prev_end_offset = cur_offset + envelope_size;
4787            if 2 > max_ordinal {
4788                return Ok(());
4789            }
4790
4791            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4792            // are envelope_size bytes.
4793            let cur_offset: usize = (2 - 1) * envelope_size;
4794
4795            // Zero reserved fields.
4796            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4797
4798            // Safety:
4799            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4800            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4801            //   envelope_size bytes, there is always sufficient room.
4802            fidl::encoding::encode_in_envelope_optional::<Role, D>(
4803                self.role.as_ref().map(<Role as fidl::encoding::ValueTypeMarker>::borrow),
4804                encoder,
4805                offset + cur_offset,
4806                depth,
4807            )?;
4808
4809            _prev_end_offset = cur_offset + envelope_size;
4810
4811            Ok(())
4812        }
4813    }
4814
4815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceState {
4816        #[inline(always)]
4817        fn new_empty() -> Self {
4818            Self::default()
4819        }
4820
4821        unsafe fn decode(
4822            &mut self,
4823            decoder: &mut fidl::encoding::Decoder<'_, D>,
4824            offset: usize,
4825            mut depth: fidl::encoding::Depth,
4826        ) -> fidl::Result<()> {
4827            decoder.debug_check_bounds::<Self>(offset);
4828            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4829                None => return Err(fidl::Error::NotNullable),
4830                Some(len) => len,
4831            };
4832            // Calling decoder.out_of_line_offset(0) is not allowed.
4833            if len == 0 {
4834                return Ok(());
4835            };
4836            depth.increment()?;
4837            let envelope_size = 8;
4838            let bytes_len = len * envelope_size;
4839            let offset = decoder.out_of_line_offset(bytes_len)?;
4840            // Decode the envelope for each type.
4841            let mut _next_ordinal_to_read = 0;
4842            let mut next_offset = offset;
4843            let end_offset = offset + bytes_len;
4844            _next_ordinal_to_read += 1;
4845            if next_offset >= end_offset {
4846                return Ok(());
4847            }
4848
4849            // Decode unknown envelopes for gaps in ordinals.
4850            while _next_ordinal_to_read < 1 {
4851                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4852                _next_ordinal_to_read += 1;
4853                next_offset += envelope_size;
4854            }
4855
4856            let next_out_of_line = decoder.next_out_of_line();
4857            let handles_before = decoder.remaining_handles();
4858            if let Some((inlined, num_bytes, num_handles)) =
4859                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4860            {
4861                let member_inline_size =
4862                    <ConnectivityState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4863                if inlined != (member_inline_size <= 4) {
4864                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4865                }
4866                let inner_offset;
4867                let mut inner_depth = depth.clone();
4868                if inlined {
4869                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4870                    inner_offset = next_offset;
4871                } else {
4872                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4873                    inner_depth.increment()?;
4874                }
4875                let val_ref = self
4876                    .connectivity_state
4877                    .get_or_insert_with(|| fidl::new_empty!(ConnectivityState, D));
4878                fidl::decode!(ConnectivityState, D, val_ref, decoder, inner_offset, inner_depth)?;
4879                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4880                {
4881                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4882                }
4883                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4884                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4885                }
4886            }
4887
4888            next_offset += envelope_size;
4889            _next_ordinal_to_read += 1;
4890            if next_offset >= end_offset {
4891                return Ok(());
4892            }
4893
4894            // Decode unknown envelopes for gaps in ordinals.
4895            while _next_ordinal_to_read < 2 {
4896                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4897                _next_ordinal_to_read += 1;
4898                next_offset += envelope_size;
4899            }
4900
4901            let next_out_of_line = decoder.next_out_of_line();
4902            let handles_before = decoder.remaining_handles();
4903            if let Some((inlined, num_bytes, num_handles)) =
4904                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4905            {
4906                let member_inline_size =
4907                    <Role as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4908                if inlined != (member_inline_size <= 4) {
4909                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4910                }
4911                let inner_offset;
4912                let mut inner_depth = depth.clone();
4913                if inlined {
4914                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4915                    inner_offset = next_offset;
4916                } else {
4917                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4918                    inner_depth.increment()?;
4919                }
4920                let val_ref = self.role.get_or_insert_with(|| fidl::new_empty!(Role, D));
4921                fidl::decode!(Role, D, val_ref, decoder, inner_offset, inner_depth)?;
4922                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4923                {
4924                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4925                }
4926                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4927                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4928                }
4929            }
4930
4931            next_offset += envelope_size;
4932
4933            // Decode the remaining unknown envelopes.
4934            while next_offset < end_offset {
4935                _next_ordinal_to_read += 1;
4936                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4937                next_offset += envelope_size;
4938            }
4939
4940            Ok(())
4941        }
4942    }
4943
4944    impl EnergyScanParameters {
4945        #[inline(always)]
4946        fn max_ordinal_present(&self) -> u64 {
4947            if let Some(_) = self.dwell_time_ms {
4948                return 2;
4949            }
4950            if let Some(_) = self.channels {
4951                return 1;
4952            }
4953            0
4954        }
4955    }
4956
4957    impl fidl::encoding::ValueTypeMarker for EnergyScanParameters {
4958        type Borrowed<'a> = &'a Self;
4959        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4960            value
4961        }
4962    }
4963
4964    unsafe impl fidl::encoding::TypeMarker for EnergyScanParameters {
4965        type Owned = Self;
4966
4967        #[inline(always)]
4968        fn inline_align(_context: fidl::encoding::Context) -> usize {
4969            8
4970        }
4971
4972        #[inline(always)]
4973        fn inline_size(_context: fidl::encoding::Context) -> usize {
4974            16
4975        }
4976    }
4977
4978    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnergyScanParameters, D>
4979        for &EnergyScanParameters
4980    {
4981        unsafe fn encode(
4982            self,
4983            encoder: &mut fidl::encoding::Encoder<'_, D>,
4984            offset: usize,
4985            mut depth: fidl::encoding::Depth,
4986        ) -> fidl::Result<()> {
4987            encoder.debug_check_bounds::<EnergyScanParameters>(offset);
4988            // Vector header
4989            let max_ordinal: u64 = self.max_ordinal_present();
4990            encoder.write_num(max_ordinal, offset);
4991            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4992            // Calling encoder.out_of_line_offset(0) is not allowed.
4993            if max_ordinal == 0 {
4994                return Ok(());
4995            }
4996            depth.increment()?;
4997            let envelope_size = 8;
4998            let bytes_len = max_ordinal as usize * envelope_size;
4999            #[allow(unused_variables)]
5000            let offset = encoder.out_of_line_offset(bytes_len);
5001            let mut _prev_end_offset: usize = 0;
5002            if 1 > max_ordinal {
5003                return Ok(());
5004            }
5005
5006            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5007            // are envelope_size bytes.
5008            let cur_offset: usize = (1 - 1) * envelope_size;
5009
5010            // Zero reserved fields.
5011            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5012
5013            // Safety:
5014            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5015            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5016            //   envelope_size bytes, there is always sufficient room.
5017            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
5018                self.channels.as_ref().map(
5019                    <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
5020                ),
5021                encoder,
5022                offset + cur_offset,
5023                depth,
5024            )?;
5025
5026            _prev_end_offset = cur_offset + envelope_size;
5027            if 2 > max_ordinal {
5028                return Ok(());
5029            }
5030
5031            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5032            // are envelope_size bytes.
5033            let cur_offset: usize = (2 - 1) * envelope_size;
5034
5035            // Zero reserved fields.
5036            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5037
5038            // Safety:
5039            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5040            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5041            //   envelope_size bytes, there is always sufficient room.
5042            fidl::encoding::encode_in_envelope_optional::<u32, D>(
5043                self.dwell_time_ms.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5044                encoder,
5045                offset + cur_offset,
5046                depth,
5047            )?;
5048
5049            _prev_end_offset = cur_offset + envelope_size;
5050
5051            Ok(())
5052        }
5053    }
5054
5055    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnergyScanParameters {
5056        #[inline(always)]
5057        fn new_empty() -> Self {
5058            Self::default()
5059        }
5060
5061        unsafe fn decode(
5062            &mut self,
5063            decoder: &mut fidl::encoding::Decoder<'_, D>,
5064            offset: usize,
5065            mut depth: fidl::encoding::Depth,
5066        ) -> fidl::Result<()> {
5067            decoder.debug_check_bounds::<Self>(offset);
5068            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5069                None => return Err(fidl::Error::NotNullable),
5070                Some(len) => len,
5071            };
5072            // Calling decoder.out_of_line_offset(0) is not allowed.
5073            if len == 0 {
5074                return Ok(());
5075            };
5076            depth.increment()?;
5077            let envelope_size = 8;
5078            let bytes_len = len * envelope_size;
5079            let offset = decoder.out_of_line_offset(bytes_len)?;
5080            // Decode the envelope for each type.
5081            let mut _next_ordinal_to_read = 0;
5082            let mut next_offset = offset;
5083            let end_offset = offset + bytes_len;
5084            _next_ordinal_to_read += 1;
5085            if next_offset >= end_offset {
5086                return Ok(());
5087            }
5088
5089            // Decode unknown envelopes for gaps in ordinals.
5090            while _next_ordinal_to_read < 1 {
5091                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5092                _next_ordinal_to_read += 1;
5093                next_offset += envelope_size;
5094            }
5095
5096            let next_out_of_line = decoder.next_out_of_line();
5097            let handles_before = decoder.remaining_handles();
5098            if let Some((inlined, num_bytes, num_handles)) =
5099                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5100            {
5101                let member_inline_size =
5102                    <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
5103                        decoder.context,
5104                    );
5105                if inlined != (member_inline_size <= 4) {
5106                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5107                }
5108                let inner_offset;
5109                let mut inner_depth = depth.clone();
5110                if inlined {
5111                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5112                    inner_offset = next_offset;
5113                } else {
5114                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5115                    inner_depth.increment()?;
5116                }
5117                let val_ref = self
5118                    .channels
5119                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
5120                fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
5121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5122                {
5123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5124                }
5125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5127                }
5128            }
5129
5130            next_offset += envelope_size;
5131            _next_ordinal_to_read += 1;
5132            if next_offset >= end_offset {
5133                return Ok(());
5134            }
5135
5136            // Decode unknown envelopes for gaps in ordinals.
5137            while _next_ordinal_to_read < 2 {
5138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5139                _next_ordinal_to_read += 1;
5140                next_offset += envelope_size;
5141            }
5142
5143            let next_out_of_line = decoder.next_out_of_line();
5144            let handles_before = decoder.remaining_handles();
5145            if let Some((inlined, num_bytes, num_handles)) =
5146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5147            {
5148                let member_inline_size =
5149                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5150                if inlined != (member_inline_size <= 4) {
5151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5152                }
5153                let inner_offset;
5154                let mut inner_depth = depth.clone();
5155                if inlined {
5156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5157                    inner_offset = next_offset;
5158                } else {
5159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5160                    inner_depth.increment()?;
5161                }
5162                let val_ref = self.dwell_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
5163                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5164                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5165                {
5166                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5167                }
5168                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5169                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5170                }
5171            }
5172
5173            next_offset += envelope_size;
5174
5175            // Decode the remaining unknown envelopes.
5176            while next_offset < end_offset {
5177                _next_ordinal_to_read += 1;
5178                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5179                next_offset += envelope_size;
5180            }
5181
5182            Ok(())
5183        }
5184    }
5185
5186    impl EnergyScanResult {
5187        #[inline(always)]
5188        fn max_ordinal_present(&self) -> u64 {
5189            if let Some(_) = self.min_rssi {
5190                return 3;
5191            }
5192            if let Some(_) = self.max_rssi {
5193                return 2;
5194            }
5195            if let Some(_) = self.channel_index {
5196                return 1;
5197            }
5198            0
5199        }
5200    }
5201
5202    impl fidl::encoding::ValueTypeMarker for EnergyScanResult {
5203        type Borrowed<'a> = &'a Self;
5204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5205            value
5206        }
5207    }
5208
5209    unsafe impl fidl::encoding::TypeMarker for EnergyScanResult {
5210        type Owned = Self;
5211
5212        #[inline(always)]
5213        fn inline_align(_context: fidl::encoding::Context) -> usize {
5214            8
5215        }
5216
5217        #[inline(always)]
5218        fn inline_size(_context: fidl::encoding::Context) -> usize {
5219            16
5220        }
5221    }
5222
5223    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnergyScanResult, D>
5224        for &EnergyScanResult
5225    {
5226        unsafe fn encode(
5227            self,
5228            encoder: &mut fidl::encoding::Encoder<'_, D>,
5229            offset: usize,
5230            mut depth: fidl::encoding::Depth,
5231        ) -> fidl::Result<()> {
5232            encoder.debug_check_bounds::<EnergyScanResult>(offset);
5233            // Vector header
5234            let max_ordinal: u64 = self.max_ordinal_present();
5235            encoder.write_num(max_ordinal, offset);
5236            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5237            // Calling encoder.out_of_line_offset(0) is not allowed.
5238            if max_ordinal == 0 {
5239                return Ok(());
5240            }
5241            depth.increment()?;
5242            let envelope_size = 8;
5243            let bytes_len = max_ordinal as usize * envelope_size;
5244            #[allow(unused_variables)]
5245            let offset = encoder.out_of_line_offset(bytes_len);
5246            let mut _prev_end_offset: usize = 0;
5247            if 1 > max_ordinal {
5248                return Ok(());
5249            }
5250
5251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5252            // are envelope_size bytes.
5253            let cur_offset: usize = (1 - 1) * envelope_size;
5254
5255            // Zero reserved fields.
5256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5257
5258            // Safety:
5259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5261            //   envelope_size bytes, there is always sufficient room.
5262            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5263                self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5264                encoder,
5265                offset + cur_offset,
5266                depth,
5267            )?;
5268
5269            _prev_end_offset = cur_offset + envelope_size;
5270            if 2 > max_ordinal {
5271                return Ok(());
5272            }
5273
5274            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5275            // are envelope_size bytes.
5276            let cur_offset: usize = (2 - 1) * envelope_size;
5277
5278            // Zero reserved fields.
5279            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5280
5281            // Safety:
5282            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5283            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5284            //   envelope_size bytes, there is always sufficient room.
5285            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5286                self.max_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5287                encoder,
5288                offset + cur_offset,
5289                depth,
5290            )?;
5291
5292            _prev_end_offset = cur_offset + envelope_size;
5293            if 3 > max_ordinal {
5294                return Ok(());
5295            }
5296
5297            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5298            // are envelope_size bytes.
5299            let cur_offset: usize = (3 - 1) * envelope_size;
5300
5301            // Zero reserved fields.
5302            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5303
5304            // Safety:
5305            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5306            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5307            //   envelope_size bytes, there is always sufficient room.
5308            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5309                self.min_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5310                encoder,
5311                offset + cur_offset,
5312                depth,
5313            )?;
5314
5315            _prev_end_offset = cur_offset + envelope_size;
5316
5317            Ok(())
5318        }
5319    }
5320
5321    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnergyScanResult {
5322        #[inline(always)]
5323        fn new_empty() -> Self {
5324            Self::default()
5325        }
5326
5327        unsafe fn decode(
5328            &mut self,
5329            decoder: &mut fidl::encoding::Decoder<'_, D>,
5330            offset: usize,
5331            mut depth: fidl::encoding::Depth,
5332        ) -> fidl::Result<()> {
5333            decoder.debug_check_bounds::<Self>(offset);
5334            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5335                None => return Err(fidl::Error::NotNullable),
5336                Some(len) => len,
5337            };
5338            // Calling decoder.out_of_line_offset(0) is not allowed.
5339            if len == 0 {
5340                return Ok(());
5341            };
5342            depth.increment()?;
5343            let envelope_size = 8;
5344            let bytes_len = len * envelope_size;
5345            let offset = decoder.out_of_line_offset(bytes_len)?;
5346            // Decode the envelope for each type.
5347            let mut _next_ordinal_to_read = 0;
5348            let mut next_offset = offset;
5349            let end_offset = offset + bytes_len;
5350            _next_ordinal_to_read += 1;
5351            if next_offset >= end_offset {
5352                return Ok(());
5353            }
5354
5355            // Decode unknown envelopes for gaps in ordinals.
5356            while _next_ordinal_to_read < 1 {
5357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5358                _next_ordinal_to_read += 1;
5359                next_offset += envelope_size;
5360            }
5361
5362            let next_out_of_line = decoder.next_out_of_line();
5363            let handles_before = decoder.remaining_handles();
5364            if let Some((inlined, num_bytes, num_handles)) =
5365                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5366            {
5367                let member_inline_size =
5368                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5369                if inlined != (member_inline_size <= 4) {
5370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5371                }
5372                let inner_offset;
5373                let mut inner_depth = depth.clone();
5374                if inlined {
5375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5376                    inner_offset = next_offset;
5377                } else {
5378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5379                    inner_depth.increment()?;
5380                }
5381                let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
5382                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5383                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5384                {
5385                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5386                }
5387                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5388                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5389                }
5390            }
5391
5392            next_offset += envelope_size;
5393            _next_ordinal_to_read += 1;
5394            if next_offset >= end_offset {
5395                return Ok(());
5396            }
5397
5398            // Decode unknown envelopes for gaps in ordinals.
5399            while _next_ordinal_to_read < 2 {
5400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5401                _next_ordinal_to_read += 1;
5402                next_offset += envelope_size;
5403            }
5404
5405            let next_out_of_line = decoder.next_out_of_line();
5406            let handles_before = decoder.remaining_handles();
5407            if let Some((inlined, num_bytes, num_handles)) =
5408                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5409            {
5410                let member_inline_size =
5411                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5412                if inlined != (member_inline_size <= 4) {
5413                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5414                }
5415                let inner_offset;
5416                let mut inner_depth = depth.clone();
5417                if inlined {
5418                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5419                    inner_offset = next_offset;
5420                } else {
5421                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5422                    inner_depth.increment()?;
5423                }
5424                let val_ref = self.max_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
5425                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5426                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5427                {
5428                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5429                }
5430                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5431                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5432                }
5433            }
5434
5435            next_offset += envelope_size;
5436            _next_ordinal_to_read += 1;
5437            if next_offset >= end_offset {
5438                return Ok(());
5439            }
5440
5441            // Decode unknown envelopes for gaps in ordinals.
5442            while _next_ordinal_to_read < 3 {
5443                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5444                _next_ordinal_to_read += 1;
5445                next_offset += envelope_size;
5446            }
5447
5448            let next_out_of_line = decoder.next_out_of_line();
5449            let handles_before = decoder.remaining_handles();
5450            if let Some((inlined, num_bytes, num_handles)) =
5451                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5452            {
5453                let member_inline_size =
5454                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5455                if inlined != (member_inline_size <= 4) {
5456                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5457                }
5458                let inner_offset;
5459                let mut inner_depth = depth.clone();
5460                if inlined {
5461                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5462                    inner_offset = next_offset;
5463                } else {
5464                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5465                    inner_depth.increment()?;
5466                }
5467                let val_ref = self.min_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
5468                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5470                {
5471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5472                }
5473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5475                }
5476            }
5477
5478            next_offset += envelope_size;
5479
5480            // Decode the remaining unknown envelopes.
5481            while next_offset < end_offset {
5482                _next_ordinal_to_read += 1;
5483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5484                next_offset += envelope_size;
5485            }
5486
5487            Ok(())
5488        }
5489    }
5490
5491    impl Identity {
5492        #[inline(always)]
5493        fn max_ordinal_present(&self) -> u64 {
5494            if let Some(_) = self.xpanid {
5495                return 7;
5496            }
5497            if let Some(_) = self.mesh_local_prefix {
5498                return 6;
5499            }
5500            if let Some(_) = self.panid {
5501                return 5;
5502            }
5503            if let Some(_) = self.channel {
5504                return 4;
5505            }
5506            if let Some(_) = self.net_type {
5507                return 3;
5508            }
5509            if let Some(_) = self.raw_name {
5510                return 1;
5511            }
5512            0
5513        }
5514    }
5515
5516    impl fidl::encoding::ValueTypeMarker for Identity {
5517        type Borrowed<'a> = &'a Self;
5518        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5519            value
5520        }
5521    }
5522
5523    unsafe impl fidl::encoding::TypeMarker for Identity {
5524        type Owned = Self;
5525
5526        #[inline(always)]
5527        fn inline_align(_context: fidl::encoding::Context) -> usize {
5528            8
5529        }
5530
5531        #[inline(always)]
5532        fn inline_size(_context: fidl::encoding::Context) -> usize {
5533            16
5534        }
5535    }
5536
5537    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Identity, D> for &Identity {
5538        unsafe fn encode(
5539            self,
5540            encoder: &mut fidl::encoding::Encoder<'_, D>,
5541            offset: usize,
5542            mut depth: fidl::encoding::Depth,
5543        ) -> fidl::Result<()> {
5544            encoder.debug_check_bounds::<Identity>(offset);
5545            // Vector header
5546            let max_ordinal: u64 = self.max_ordinal_present();
5547            encoder.write_num(max_ordinal, offset);
5548            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5549            // Calling encoder.out_of_line_offset(0) is not allowed.
5550            if max_ordinal == 0 {
5551                return Ok(());
5552            }
5553            depth.increment()?;
5554            let envelope_size = 8;
5555            let bytes_len = max_ordinal as usize * envelope_size;
5556            #[allow(unused_variables)]
5557            let offset = encoder.out_of_line_offset(bytes_len);
5558            let mut _prev_end_offset: usize = 0;
5559            if 1 > max_ordinal {
5560                return Ok(());
5561            }
5562
5563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5564            // are envelope_size bytes.
5565            let cur_offset: usize = (1 - 1) * envelope_size;
5566
5567            // Zero reserved fields.
5568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5569
5570            // Safety:
5571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5573            //   envelope_size bytes, there is always sufficient room.
5574            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 63>, D>(
5575                self.raw_name.as_ref().map(
5576                    <fidl::encoding::Vector<u8, 63> as fidl::encoding::ValueTypeMarker>::borrow,
5577                ),
5578                encoder,
5579                offset + cur_offset,
5580                depth,
5581            )?;
5582
5583            _prev_end_offset = cur_offset + envelope_size;
5584            if 3 > max_ordinal {
5585                return Ok(());
5586            }
5587
5588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5589            // are envelope_size bytes.
5590            let cur_offset: usize = (3 - 1) * envelope_size;
5591
5592            // Zero reserved fields.
5593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5594
5595            // Safety:
5596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5598            //   envelope_size bytes, there is always sufficient room.
5599            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5600                self.net_type.as_ref().map(
5601                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5602                ),
5603                encoder,
5604                offset + cur_offset,
5605                depth,
5606            )?;
5607
5608            _prev_end_offset = cur_offset + envelope_size;
5609            if 4 > max_ordinal {
5610                return Ok(());
5611            }
5612
5613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5614            // are envelope_size bytes.
5615            let cur_offset: usize = (4 - 1) * envelope_size;
5616
5617            // Zero reserved fields.
5618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5619
5620            // Safety:
5621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5623            //   envelope_size bytes, there is always sufficient room.
5624            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5625                self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5626                encoder,
5627                offset + cur_offset,
5628                depth,
5629            )?;
5630
5631            _prev_end_offset = cur_offset + envelope_size;
5632            if 5 > max_ordinal {
5633                return Ok(());
5634            }
5635
5636            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5637            // are envelope_size bytes.
5638            let cur_offset: usize = (5 - 1) * envelope_size;
5639
5640            // Zero reserved fields.
5641            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5642
5643            // Safety:
5644            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5645            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5646            //   envelope_size bytes, there is always sufficient room.
5647            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5648                self.panid.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5649                encoder,
5650                offset + cur_offset,
5651                depth,
5652            )?;
5653
5654            _prev_end_offset = cur_offset + envelope_size;
5655            if 6 > max_ordinal {
5656                return Ok(());
5657            }
5658
5659            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5660            // are envelope_size bytes.
5661            let cur_offset: usize = (6 - 1) * envelope_size;
5662
5663            // Zero reserved fields.
5664            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5665
5666            // Safety:
5667            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5668            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5669            //   envelope_size bytes, there is always sufficient room.
5670            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>(
5671            self.mesh_local_prefix.as_ref().map(<fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
5672            encoder, offset + cur_offset, depth
5673        )?;
5674
5675            _prev_end_offset = cur_offset + envelope_size;
5676            if 7 > max_ordinal {
5677                return Ok(());
5678            }
5679
5680            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5681            // are envelope_size bytes.
5682            let cur_offset: usize = (7 - 1) * envelope_size;
5683
5684            // Zero reserved fields.
5685            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5686
5687            // Safety:
5688            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5689            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5690            //   envelope_size bytes, there is always sufficient room.
5691            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 8>, D>(
5692                self.xpanid
5693                    .as_ref()
5694                    .map(<fidl::encoding::Array<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow),
5695                encoder,
5696                offset + cur_offset,
5697                depth,
5698            )?;
5699
5700            _prev_end_offset = cur_offset + envelope_size;
5701
5702            Ok(())
5703        }
5704    }
5705
5706    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Identity {
5707        #[inline(always)]
5708        fn new_empty() -> Self {
5709            Self::default()
5710        }
5711
5712        unsafe fn decode(
5713            &mut self,
5714            decoder: &mut fidl::encoding::Decoder<'_, D>,
5715            offset: usize,
5716            mut depth: fidl::encoding::Depth,
5717        ) -> fidl::Result<()> {
5718            decoder.debug_check_bounds::<Self>(offset);
5719            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5720                None => return Err(fidl::Error::NotNullable),
5721                Some(len) => len,
5722            };
5723            // Calling decoder.out_of_line_offset(0) is not allowed.
5724            if len == 0 {
5725                return Ok(());
5726            };
5727            depth.increment()?;
5728            let envelope_size = 8;
5729            let bytes_len = len * envelope_size;
5730            let offset = decoder.out_of_line_offset(bytes_len)?;
5731            // Decode the envelope for each type.
5732            let mut _next_ordinal_to_read = 0;
5733            let mut next_offset = offset;
5734            let end_offset = offset + bytes_len;
5735            _next_ordinal_to_read += 1;
5736            if next_offset >= end_offset {
5737                return Ok(());
5738            }
5739
5740            // Decode unknown envelopes for gaps in ordinals.
5741            while _next_ordinal_to_read < 1 {
5742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5743                _next_ordinal_to_read += 1;
5744                next_offset += envelope_size;
5745            }
5746
5747            let next_out_of_line = decoder.next_out_of_line();
5748            let handles_before = decoder.remaining_handles();
5749            if let Some((inlined, num_bytes, num_handles)) =
5750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5751            {
5752                let member_inline_size =
5753                    <fidl::encoding::Vector<u8, 63> as fidl::encoding::TypeMarker>::inline_size(
5754                        decoder.context,
5755                    );
5756                if inlined != (member_inline_size <= 4) {
5757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5758                }
5759                let inner_offset;
5760                let mut inner_depth = depth.clone();
5761                if inlined {
5762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5763                    inner_offset = next_offset;
5764                } else {
5765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5766                    inner_depth.increment()?;
5767                }
5768                let val_ref = self
5769                    .raw_name
5770                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 63>, D));
5771                fidl::decode!(fidl::encoding::Vector<u8, 63>, D, val_ref, decoder, inner_offset, inner_depth)?;
5772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5773                {
5774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5775                }
5776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5778                }
5779            }
5780
5781            next_offset += envelope_size;
5782            _next_ordinal_to_read += 1;
5783            if next_offset >= end_offset {
5784                return Ok(());
5785            }
5786
5787            // Decode unknown envelopes for gaps in ordinals.
5788            while _next_ordinal_to_read < 3 {
5789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5790                _next_ordinal_to_read += 1;
5791                next_offset += envelope_size;
5792            }
5793
5794            let next_out_of_line = decoder.next_out_of_line();
5795            let handles_before = decoder.remaining_handles();
5796            if let Some((inlined, num_bytes, num_handles)) =
5797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5798            {
5799                let member_inline_size =
5800                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5801                        decoder.context,
5802                    );
5803                if inlined != (member_inline_size <= 4) {
5804                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5805                }
5806                let inner_offset;
5807                let mut inner_depth = depth.clone();
5808                if inlined {
5809                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5810                    inner_offset = next_offset;
5811                } else {
5812                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5813                    inner_depth.increment()?;
5814                }
5815                let val_ref = self
5816                    .net_type
5817                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5818                fidl::decode!(
5819                    fidl::encoding::BoundedString<64>,
5820                    D,
5821                    val_ref,
5822                    decoder,
5823                    inner_offset,
5824                    inner_depth
5825                )?;
5826                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5827                {
5828                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5829                }
5830                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5831                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5832                }
5833            }
5834
5835            next_offset += envelope_size;
5836            _next_ordinal_to_read += 1;
5837            if next_offset >= end_offset {
5838                return Ok(());
5839            }
5840
5841            // Decode unknown envelopes for gaps in ordinals.
5842            while _next_ordinal_to_read < 4 {
5843                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5844                _next_ordinal_to_read += 1;
5845                next_offset += envelope_size;
5846            }
5847
5848            let next_out_of_line = decoder.next_out_of_line();
5849            let handles_before = decoder.remaining_handles();
5850            if let Some((inlined, num_bytes, num_handles)) =
5851                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5852            {
5853                let member_inline_size =
5854                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5855                if inlined != (member_inline_size <= 4) {
5856                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5857                }
5858                let inner_offset;
5859                let mut inner_depth = depth.clone();
5860                if inlined {
5861                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5862                    inner_offset = next_offset;
5863                } else {
5864                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5865                    inner_depth.increment()?;
5866                }
5867                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
5868                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5869                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5870                {
5871                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5872                }
5873                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5874                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5875                }
5876            }
5877
5878            next_offset += envelope_size;
5879            _next_ordinal_to_read += 1;
5880            if next_offset >= end_offset {
5881                return Ok(());
5882            }
5883
5884            // Decode unknown envelopes for gaps in ordinals.
5885            while _next_ordinal_to_read < 5 {
5886                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5887                _next_ordinal_to_read += 1;
5888                next_offset += envelope_size;
5889            }
5890
5891            let next_out_of_line = decoder.next_out_of_line();
5892            let handles_before = decoder.remaining_handles();
5893            if let Some((inlined, num_bytes, num_handles)) =
5894                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5895            {
5896                let member_inline_size =
5897                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5898                if inlined != (member_inline_size <= 4) {
5899                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5900                }
5901                let inner_offset;
5902                let mut inner_depth = depth.clone();
5903                if inlined {
5904                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5905                    inner_offset = next_offset;
5906                } else {
5907                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5908                    inner_depth.increment()?;
5909                }
5910                let val_ref = self.panid.get_or_insert_with(|| fidl::new_empty!(u16, D));
5911                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5912                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5913                {
5914                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5915                }
5916                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5917                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5918                }
5919            }
5920
5921            next_offset += envelope_size;
5922            _next_ordinal_to_read += 1;
5923            if next_offset >= end_offset {
5924                return Ok(());
5925            }
5926
5927            // Decode unknown envelopes for gaps in ordinals.
5928            while _next_ordinal_to_read < 6 {
5929                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5930                _next_ordinal_to_read += 1;
5931                next_offset += envelope_size;
5932            }
5933
5934            let next_out_of_line = decoder.next_out_of_line();
5935            let handles_before = decoder.remaining_handles();
5936            if let Some((inlined, num_bytes, num_handles)) =
5937                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5938            {
5939                let member_inline_size = <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5940                if inlined != (member_inline_size <= 4) {
5941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5942                }
5943                let inner_offset;
5944                let mut inner_depth = depth.clone();
5945                if inlined {
5946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5947                    inner_offset = next_offset;
5948                } else {
5949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5950                    inner_depth.increment()?;
5951                }
5952                let val_ref = self.mesh_local_prefix.get_or_insert_with(|| {
5953                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D)
5954                });
5955                fidl::decode!(
5956                    fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
5957                    D,
5958                    val_ref,
5959                    decoder,
5960                    inner_offset,
5961                    inner_depth
5962                )?;
5963                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5964                {
5965                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5966                }
5967                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5968                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5969                }
5970            }
5971
5972            next_offset += envelope_size;
5973            _next_ordinal_to_read += 1;
5974            if next_offset >= end_offset {
5975                return Ok(());
5976            }
5977
5978            // Decode unknown envelopes for gaps in ordinals.
5979            while _next_ordinal_to_read < 7 {
5980                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5981                _next_ordinal_to_read += 1;
5982                next_offset += envelope_size;
5983            }
5984
5985            let next_out_of_line = decoder.next_out_of_line();
5986            let handles_before = decoder.remaining_handles();
5987            if let Some((inlined, num_bytes, num_handles)) =
5988                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5989            {
5990                let member_inline_size =
5991                    <fidl::encoding::Array<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
5992                        decoder.context,
5993                    );
5994                if inlined != (member_inline_size <= 4) {
5995                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5996                }
5997                let inner_offset;
5998                let mut inner_depth = depth.clone();
5999                if inlined {
6000                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6001                    inner_offset = next_offset;
6002                } else {
6003                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6004                    inner_depth.increment()?;
6005                }
6006                let val_ref = self
6007                    .xpanid
6008                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 8>, D));
6009                fidl::decode!(fidl::encoding::Array<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
6010                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6011                {
6012                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6013                }
6014                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6015                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6016                }
6017            }
6018
6019            next_offset += envelope_size;
6020
6021            // Decode the remaining unknown envelopes.
6022            while next_offset < end_offset {
6023                _next_ordinal_to_read += 1;
6024                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6025                next_offset += envelope_size;
6026            }
6027
6028            Ok(())
6029        }
6030    }
6031
6032    impl IpCounters {
6033        #[inline(always)]
6034        fn max_ordinal_present(&self) -> u64 {
6035            if let Some(_) = self.failure {
6036                return 2;
6037            }
6038            if let Some(_) = self.success {
6039                return 1;
6040            }
6041            0
6042        }
6043    }
6044
6045    impl fidl::encoding::ValueTypeMarker for IpCounters {
6046        type Borrowed<'a> = &'a Self;
6047        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6048            value
6049        }
6050    }
6051
6052    unsafe impl fidl::encoding::TypeMarker for IpCounters {
6053        type Owned = Self;
6054
6055        #[inline(always)]
6056        fn inline_align(_context: fidl::encoding::Context) -> usize {
6057            8
6058        }
6059
6060        #[inline(always)]
6061        fn inline_size(_context: fidl::encoding::Context) -> usize {
6062            16
6063        }
6064    }
6065
6066    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IpCounters, D>
6067        for &IpCounters
6068    {
6069        unsafe fn encode(
6070            self,
6071            encoder: &mut fidl::encoding::Encoder<'_, D>,
6072            offset: usize,
6073            mut depth: fidl::encoding::Depth,
6074        ) -> fidl::Result<()> {
6075            encoder.debug_check_bounds::<IpCounters>(offset);
6076            // Vector header
6077            let max_ordinal: u64 = self.max_ordinal_present();
6078            encoder.write_num(max_ordinal, offset);
6079            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6080            // Calling encoder.out_of_line_offset(0) is not allowed.
6081            if max_ordinal == 0 {
6082                return Ok(());
6083            }
6084            depth.increment()?;
6085            let envelope_size = 8;
6086            let bytes_len = max_ordinal as usize * envelope_size;
6087            #[allow(unused_variables)]
6088            let offset = encoder.out_of_line_offset(bytes_len);
6089            let mut _prev_end_offset: usize = 0;
6090            if 1 > max_ordinal {
6091                return Ok(());
6092            }
6093
6094            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6095            // are envelope_size bytes.
6096            let cur_offset: usize = (1 - 1) * envelope_size;
6097
6098            // Zero reserved fields.
6099            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6100
6101            // Safety:
6102            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6103            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6104            //   envelope_size bytes, there is always sufficient room.
6105            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6106                self.success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6107                encoder,
6108                offset + cur_offset,
6109                depth,
6110            )?;
6111
6112            _prev_end_offset = cur_offset + envelope_size;
6113            if 2 > max_ordinal {
6114                return Ok(());
6115            }
6116
6117            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6118            // are envelope_size bytes.
6119            let cur_offset: usize = (2 - 1) * envelope_size;
6120
6121            // Zero reserved fields.
6122            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6123
6124            // Safety:
6125            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6126            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6127            //   envelope_size bytes, there is always sufficient room.
6128            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6129                self.failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6130                encoder,
6131                offset + cur_offset,
6132                depth,
6133            )?;
6134
6135            _prev_end_offset = cur_offset + envelope_size;
6136
6137            Ok(())
6138        }
6139    }
6140
6141    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IpCounters {
6142        #[inline(always)]
6143        fn new_empty() -> Self {
6144            Self::default()
6145        }
6146
6147        unsafe fn decode(
6148            &mut self,
6149            decoder: &mut fidl::encoding::Decoder<'_, D>,
6150            offset: usize,
6151            mut depth: fidl::encoding::Depth,
6152        ) -> fidl::Result<()> {
6153            decoder.debug_check_bounds::<Self>(offset);
6154            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6155                None => return Err(fidl::Error::NotNullable),
6156                Some(len) => len,
6157            };
6158            // Calling decoder.out_of_line_offset(0) is not allowed.
6159            if len == 0 {
6160                return Ok(());
6161            };
6162            depth.increment()?;
6163            let envelope_size = 8;
6164            let bytes_len = len * envelope_size;
6165            let offset = decoder.out_of_line_offset(bytes_len)?;
6166            // Decode the envelope for each type.
6167            let mut _next_ordinal_to_read = 0;
6168            let mut next_offset = offset;
6169            let end_offset = offset + bytes_len;
6170            _next_ordinal_to_read += 1;
6171            if next_offset >= end_offset {
6172                return Ok(());
6173            }
6174
6175            // Decode unknown envelopes for gaps in ordinals.
6176            while _next_ordinal_to_read < 1 {
6177                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6178                _next_ordinal_to_read += 1;
6179                next_offset += envelope_size;
6180            }
6181
6182            let next_out_of_line = decoder.next_out_of_line();
6183            let handles_before = decoder.remaining_handles();
6184            if let Some((inlined, num_bytes, num_handles)) =
6185                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6186            {
6187                let member_inline_size =
6188                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6189                if inlined != (member_inline_size <= 4) {
6190                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6191                }
6192                let inner_offset;
6193                let mut inner_depth = depth.clone();
6194                if inlined {
6195                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6196                    inner_offset = next_offset;
6197                } else {
6198                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6199                    inner_depth.increment()?;
6200                }
6201                let val_ref = self.success.get_or_insert_with(|| fidl::new_empty!(u32, D));
6202                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6203                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6204                {
6205                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6206                }
6207                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6208                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6209                }
6210            }
6211
6212            next_offset += envelope_size;
6213            _next_ordinal_to_read += 1;
6214            if next_offset >= end_offset {
6215                return Ok(());
6216            }
6217
6218            // Decode unknown envelopes for gaps in ordinals.
6219            while _next_ordinal_to_read < 2 {
6220                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6221                _next_ordinal_to_read += 1;
6222                next_offset += envelope_size;
6223            }
6224
6225            let next_out_of_line = decoder.next_out_of_line();
6226            let handles_before = decoder.remaining_handles();
6227            if let Some((inlined, num_bytes, num_handles)) =
6228                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6229            {
6230                let member_inline_size =
6231                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6232                if inlined != (member_inline_size <= 4) {
6233                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6234                }
6235                let inner_offset;
6236                let mut inner_depth = depth.clone();
6237                if inlined {
6238                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6239                    inner_offset = next_offset;
6240                } else {
6241                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6242                    inner_depth.increment()?;
6243                }
6244                let val_ref = self.failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
6245                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6246                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6247                {
6248                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6249                }
6250                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6251                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6252                }
6253            }
6254
6255            next_offset += envelope_size;
6256
6257            // Decode the remaining unknown envelopes.
6258            while next_offset < end_offset {
6259                _next_ordinal_to_read += 1;
6260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6261                next_offset += envelope_size;
6262            }
6263
6264            Ok(())
6265        }
6266    }
6267
6268    impl MacCounters {
6269        #[inline(always)]
6270        fn max_ordinal_present(&self) -> u64 {
6271            if let Some(_) = self.err_other {
6272                return 26;
6273            }
6274            if let Some(_) = self.err_busy_channel {
6275                return 25;
6276            }
6277            if let Some(_) = self.err_abort {
6278                return 24;
6279            }
6280            if let Some(_) = self.err_cca {
6281                return 23;
6282            }
6283            if let Some(_) = self.err_fcs {
6284                return 22;
6285            }
6286            if let Some(_) = self.err_sec {
6287                return 21;
6288            }
6289            if let Some(_) = self.err_invalid_src_addr {
6290                return 20;
6291            }
6292            if let Some(_) = self.err_unknown_neighbor {
6293                return 19;
6294            }
6295            if let Some(_) = self.err_no_frame {
6296                return 18;
6297            }
6298            if let Some(_) = self.duplicated {
6299                return 17;
6300            }
6301            if let Some(_) = self.dest_addr_filtered {
6302                return 16;
6303            }
6304            if let Some(_) = self.indirect_max_retry_expiry {
6305                return 15;
6306            }
6307            if let Some(_) = self.direct_max_retry_expiry {
6308                return 14;
6309            }
6310            if let Some(_) = self.retries {
6311                return 13;
6312            }
6313            if let Some(_) = self.address_filtered {
6314                return 12;
6315            }
6316            if let Some(_) = self.other {
6317                return 11;
6318            }
6319            if let Some(_) = self.beacon_request {
6320                return 10;
6321            }
6322            if let Some(_) = self.beacon {
6323                return 9;
6324            }
6325            if let Some(_) = self.data_poll {
6326                return 8;
6327            }
6328            if let Some(_) = self.data {
6329                return 7;
6330            }
6331            if let Some(_) = self.no_ack_requested {
6332                return 6;
6333            }
6334            if let Some(_) = self.acked {
6335                return 5;
6336            }
6337            if let Some(_) = self.ack_requested {
6338                return 4;
6339            }
6340            if let Some(_) = self.broadcast {
6341                return 3;
6342            }
6343            if let Some(_) = self.unicast {
6344                return 2;
6345            }
6346            if let Some(_) = self.total {
6347                return 1;
6348            }
6349            0
6350        }
6351    }
6352
6353    impl fidl::encoding::ValueTypeMarker for MacCounters {
6354        type Borrowed<'a> = &'a Self;
6355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6356            value
6357        }
6358    }
6359
6360    unsafe impl fidl::encoding::TypeMarker for MacCounters {
6361        type Owned = Self;
6362
6363        #[inline(always)]
6364        fn inline_align(_context: fidl::encoding::Context) -> usize {
6365            8
6366        }
6367
6368        #[inline(always)]
6369        fn inline_size(_context: fidl::encoding::Context) -> usize {
6370            16
6371        }
6372    }
6373
6374    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacCounters, D>
6375        for &MacCounters
6376    {
6377        unsafe fn encode(
6378            self,
6379            encoder: &mut fidl::encoding::Encoder<'_, D>,
6380            offset: usize,
6381            mut depth: fidl::encoding::Depth,
6382        ) -> fidl::Result<()> {
6383            encoder.debug_check_bounds::<MacCounters>(offset);
6384            // Vector header
6385            let max_ordinal: u64 = self.max_ordinal_present();
6386            encoder.write_num(max_ordinal, offset);
6387            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6388            // Calling encoder.out_of_line_offset(0) is not allowed.
6389            if max_ordinal == 0 {
6390                return Ok(());
6391            }
6392            depth.increment()?;
6393            let envelope_size = 8;
6394            let bytes_len = max_ordinal as usize * envelope_size;
6395            #[allow(unused_variables)]
6396            let offset = encoder.out_of_line_offset(bytes_len);
6397            let mut _prev_end_offset: usize = 0;
6398            if 1 > max_ordinal {
6399                return Ok(());
6400            }
6401
6402            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6403            // are envelope_size bytes.
6404            let cur_offset: usize = (1 - 1) * envelope_size;
6405
6406            // Zero reserved fields.
6407            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6408
6409            // Safety:
6410            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6411            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6412            //   envelope_size bytes, there is always sufficient room.
6413            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6414                self.total.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6415                encoder,
6416                offset + cur_offset,
6417                depth,
6418            )?;
6419
6420            _prev_end_offset = cur_offset + envelope_size;
6421            if 2 > max_ordinal {
6422                return Ok(());
6423            }
6424
6425            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6426            // are envelope_size bytes.
6427            let cur_offset: usize = (2 - 1) * envelope_size;
6428
6429            // Zero reserved fields.
6430            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6431
6432            // Safety:
6433            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6434            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6435            //   envelope_size bytes, there is always sufficient room.
6436            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6437                self.unicast.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6438                encoder,
6439                offset + cur_offset,
6440                depth,
6441            )?;
6442
6443            _prev_end_offset = cur_offset + envelope_size;
6444            if 3 > max_ordinal {
6445                return Ok(());
6446            }
6447
6448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6449            // are envelope_size bytes.
6450            let cur_offset: usize = (3 - 1) * envelope_size;
6451
6452            // Zero reserved fields.
6453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6454
6455            // Safety:
6456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6458            //   envelope_size bytes, there is always sufficient room.
6459            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6460                self.broadcast.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6461                encoder,
6462                offset + cur_offset,
6463                depth,
6464            )?;
6465
6466            _prev_end_offset = cur_offset + envelope_size;
6467            if 4 > max_ordinal {
6468                return Ok(());
6469            }
6470
6471            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6472            // are envelope_size bytes.
6473            let cur_offset: usize = (4 - 1) * envelope_size;
6474
6475            // Zero reserved fields.
6476            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6477
6478            // Safety:
6479            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6480            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6481            //   envelope_size bytes, there is always sufficient room.
6482            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6483                self.ack_requested.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6484                encoder,
6485                offset + cur_offset,
6486                depth,
6487            )?;
6488
6489            _prev_end_offset = cur_offset + envelope_size;
6490            if 5 > max_ordinal {
6491                return Ok(());
6492            }
6493
6494            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6495            // are envelope_size bytes.
6496            let cur_offset: usize = (5 - 1) * envelope_size;
6497
6498            // Zero reserved fields.
6499            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6500
6501            // Safety:
6502            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6503            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6504            //   envelope_size bytes, there is always sufficient room.
6505            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6506                self.acked.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6507                encoder,
6508                offset + cur_offset,
6509                depth,
6510            )?;
6511
6512            _prev_end_offset = cur_offset + envelope_size;
6513            if 6 > max_ordinal {
6514                return Ok(());
6515            }
6516
6517            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6518            // are envelope_size bytes.
6519            let cur_offset: usize = (6 - 1) * envelope_size;
6520
6521            // Zero reserved fields.
6522            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6523
6524            // Safety:
6525            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6526            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6527            //   envelope_size bytes, there is always sufficient room.
6528            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6529                self.no_ack_requested
6530                    .as_ref()
6531                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6532                encoder,
6533                offset + cur_offset,
6534                depth,
6535            )?;
6536
6537            _prev_end_offset = cur_offset + envelope_size;
6538            if 7 > max_ordinal {
6539                return Ok(());
6540            }
6541
6542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6543            // are envelope_size bytes.
6544            let cur_offset: usize = (7 - 1) * envelope_size;
6545
6546            // Zero reserved fields.
6547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6548
6549            // Safety:
6550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6552            //   envelope_size bytes, there is always sufficient room.
6553            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6554                self.data.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6555                encoder,
6556                offset + cur_offset,
6557                depth,
6558            )?;
6559
6560            _prev_end_offset = cur_offset + envelope_size;
6561            if 8 > max_ordinal {
6562                return Ok(());
6563            }
6564
6565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6566            // are envelope_size bytes.
6567            let cur_offset: usize = (8 - 1) * envelope_size;
6568
6569            // Zero reserved fields.
6570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6571
6572            // Safety:
6573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6575            //   envelope_size bytes, there is always sufficient room.
6576            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6577                self.data_poll.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6578                encoder,
6579                offset + cur_offset,
6580                depth,
6581            )?;
6582
6583            _prev_end_offset = cur_offset + envelope_size;
6584            if 9 > max_ordinal {
6585                return Ok(());
6586            }
6587
6588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6589            // are envelope_size bytes.
6590            let cur_offset: usize = (9 - 1) * envelope_size;
6591
6592            // Zero reserved fields.
6593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6594
6595            // Safety:
6596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6598            //   envelope_size bytes, there is always sufficient room.
6599            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6600                self.beacon.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6601                encoder,
6602                offset + cur_offset,
6603                depth,
6604            )?;
6605
6606            _prev_end_offset = cur_offset + envelope_size;
6607            if 10 > max_ordinal {
6608                return Ok(());
6609            }
6610
6611            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6612            // are envelope_size bytes.
6613            let cur_offset: usize = (10 - 1) * envelope_size;
6614
6615            // Zero reserved fields.
6616            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6617
6618            // Safety:
6619            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6620            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6621            //   envelope_size bytes, there is always sufficient room.
6622            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6623                self.beacon_request.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6624                encoder,
6625                offset + cur_offset,
6626                depth,
6627            )?;
6628
6629            _prev_end_offset = cur_offset + envelope_size;
6630            if 11 > max_ordinal {
6631                return Ok(());
6632            }
6633
6634            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6635            // are envelope_size bytes.
6636            let cur_offset: usize = (11 - 1) * envelope_size;
6637
6638            // Zero reserved fields.
6639            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6640
6641            // Safety:
6642            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6643            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6644            //   envelope_size bytes, there is always sufficient room.
6645            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6646                self.other.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6647                encoder,
6648                offset + cur_offset,
6649                depth,
6650            )?;
6651
6652            _prev_end_offset = cur_offset + envelope_size;
6653            if 12 > max_ordinal {
6654                return Ok(());
6655            }
6656
6657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6658            // are envelope_size bytes.
6659            let cur_offset: usize = (12 - 1) * envelope_size;
6660
6661            // Zero reserved fields.
6662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6663
6664            // Safety:
6665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6667            //   envelope_size bytes, there is always sufficient room.
6668            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6669                self.address_filtered
6670                    .as_ref()
6671                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6672                encoder,
6673                offset + cur_offset,
6674                depth,
6675            )?;
6676
6677            _prev_end_offset = cur_offset + envelope_size;
6678            if 13 > max_ordinal {
6679                return Ok(());
6680            }
6681
6682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6683            // are envelope_size bytes.
6684            let cur_offset: usize = (13 - 1) * envelope_size;
6685
6686            // Zero reserved fields.
6687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6688
6689            // Safety:
6690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6692            //   envelope_size bytes, there is always sufficient room.
6693            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6694                self.retries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6695                encoder,
6696                offset + cur_offset,
6697                depth,
6698            )?;
6699
6700            _prev_end_offset = cur_offset + envelope_size;
6701            if 14 > max_ordinal {
6702                return Ok(());
6703            }
6704
6705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6706            // are envelope_size bytes.
6707            let cur_offset: usize = (14 - 1) * envelope_size;
6708
6709            // Zero reserved fields.
6710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6711
6712            // Safety:
6713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6715            //   envelope_size bytes, there is always sufficient room.
6716            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6717                self.direct_max_retry_expiry
6718                    .as_ref()
6719                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6720                encoder,
6721                offset + cur_offset,
6722                depth,
6723            )?;
6724
6725            _prev_end_offset = cur_offset + envelope_size;
6726            if 15 > max_ordinal {
6727                return Ok(());
6728            }
6729
6730            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6731            // are envelope_size bytes.
6732            let cur_offset: usize = (15 - 1) * envelope_size;
6733
6734            // Zero reserved fields.
6735            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6736
6737            // Safety:
6738            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6739            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6740            //   envelope_size bytes, there is always sufficient room.
6741            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6742                self.indirect_max_retry_expiry
6743                    .as_ref()
6744                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6745                encoder,
6746                offset + cur_offset,
6747                depth,
6748            )?;
6749
6750            _prev_end_offset = cur_offset + envelope_size;
6751            if 16 > max_ordinal {
6752                return Ok(());
6753            }
6754
6755            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6756            // are envelope_size bytes.
6757            let cur_offset: usize = (16 - 1) * envelope_size;
6758
6759            // Zero reserved fields.
6760            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6761
6762            // Safety:
6763            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6764            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6765            //   envelope_size bytes, there is always sufficient room.
6766            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6767                self.dest_addr_filtered
6768                    .as_ref()
6769                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6770                encoder,
6771                offset + cur_offset,
6772                depth,
6773            )?;
6774
6775            _prev_end_offset = cur_offset + envelope_size;
6776            if 17 > max_ordinal {
6777                return Ok(());
6778            }
6779
6780            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6781            // are envelope_size bytes.
6782            let cur_offset: usize = (17 - 1) * envelope_size;
6783
6784            // Zero reserved fields.
6785            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6786
6787            // Safety:
6788            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6789            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6790            //   envelope_size bytes, there is always sufficient room.
6791            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6792                self.duplicated.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6793                encoder,
6794                offset + cur_offset,
6795                depth,
6796            )?;
6797
6798            _prev_end_offset = cur_offset + envelope_size;
6799            if 18 > max_ordinal {
6800                return Ok(());
6801            }
6802
6803            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6804            // are envelope_size bytes.
6805            let cur_offset: usize = (18 - 1) * envelope_size;
6806
6807            // Zero reserved fields.
6808            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6809
6810            // Safety:
6811            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6812            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6813            //   envelope_size bytes, there is always sufficient room.
6814            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6815                self.err_no_frame.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6816                encoder,
6817                offset + cur_offset,
6818                depth,
6819            )?;
6820
6821            _prev_end_offset = cur_offset + envelope_size;
6822            if 19 > max_ordinal {
6823                return Ok(());
6824            }
6825
6826            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6827            // are envelope_size bytes.
6828            let cur_offset: usize = (19 - 1) * envelope_size;
6829
6830            // Zero reserved fields.
6831            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6832
6833            // Safety:
6834            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6835            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6836            //   envelope_size bytes, there is always sufficient room.
6837            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6838                self.err_unknown_neighbor
6839                    .as_ref()
6840                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6841                encoder,
6842                offset + cur_offset,
6843                depth,
6844            )?;
6845
6846            _prev_end_offset = cur_offset + envelope_size;
6847            if 20 > max_ordinal {
6848                return Ok(());
6849            }
6850
6851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6852            // are envelope_size bytes.
6853            let cur_offset: usize = (20 - 1) * envelope_size;
6854
6855            // Zero reserved fields.
6856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6857
6858            // Safety:
6859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6861            //   envelope_size bytes, there is always sufficient room.
6862            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6863                self.err_invalid_src_addr
6864                    .as_ref()
6865                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6866                encoder,
6867                offset + cur_offset,
6868                depth,
6869            )?;
6870
6871            _prev_end_offset = cur_offset + envelope_size;
6872            if 21 > max_ordinal {
6873                return Ok(());
6874            }
6875
6876            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6877            // are envelope_size bytes.
6878            let cur_offset: usize = (21 - 1) * envelope_size;
6879
6880            // Zero reserved fields.
6881            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6882
6883            // Safety:
6884            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6885            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6886            //   envelope_size bytes, there is always sufficient room.
6887            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6888                self.err_sec.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6889                encoder,
6890                offset + cur_offset,
6891                depth,
6892            )?;
6893
6894            _prev_end_offset = cur_offset + envelope_size;
6895            if 22 > max_ordinal {
6896                return Ok(());
6897            }
6898
6899            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6900            // are envelope_size bytes.
6901            let cur_offset: usize = (22 - 1) * envelope_size;
6902
6903            // Zero reserved fields.
6904            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6905
6906            // Safety:
6907            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6908            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6909            //   envelope_size bytes, there is always sufficient room.
6910            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6911                self.err_fcs.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6912                encoder,
6913                offset + cur_offset,
6914                depth,
6915            )?;
6916
6917            _prev_end_offset = cur_offset + envelope_size;
6918            if 23 > max_ordinal {
6919                return Ok(());
6920            }
6921
6922            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6923            // are envelope_size bytes.
6924            let cur_offset: usize = (23 - 1) * envelope_size;
6925
6926            // Zero reserved fields.
6927            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6928
6929            // Safety:
6930            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6931            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6932            //   envelope_size bytes, there is always sufficient room.
6933            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6934                self.err_cca.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6935                encoder,
6936                offset + cur_offset,
6937                depth,
6938            )?;
6939
6940            _prev_end_offset = cur_offset + envelope_size;
6941            if 24 > max_ordinal {
6942                return Ok(());
6943            }
6944
6945            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6946            // are envelope_size bytes.
6947            let cur_offset: usize = (24 - 1) * envelope_size;
6948
6949            // Zero reserved fields.
6950            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6951
6952            // Safety:
6953            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6954            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6955            //   envelope_size bytes, there is always sufficient room.
6956            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6957                self.err_abort.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6958                encoder,
6959                offset + cur_offset,
6960                depth,
6961            )?;
6962
6963            _prev_end_offset = cur_offset + envelope_size;
6964            if 25 > max_ordinal {
6965                return Ok(());
6966            }
6967
6968            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6969            // are envelope_size bytes.
6970            let cur_offset: usize = (25 - 1) * envelope_size;
6971
6972            // Zero reserved fields.
6973            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6974
6975            // Safety:
6976            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6977            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6978            //   envelope_size bytes, there is always sufficient room.
6979            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6980                self.err_busy_channel
6981                    .as_ref()
6982                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6983                encoder,
6984                offset + cur_offset,
6985                depth,
6986            )?;
6987
6988            _prev_end_offset = cur_offset + envelope_size;
6989            if 26 > max_ordinal {
6990                return Ok(());
6991            }
6992
6993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6994            // are envelope_size bytes.
6995            let cur_offset: usize = (26 - 1) * envelope_size;
6996
6997            // Zero reserved fields.
6998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6999
7000            // Safety:
7001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7003            //   envelope_size bytes, there is always sufficient room.
7004            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7005                self.err_other.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7006                encoder,
7007                offset + cur_offset,
7008                depth,
7009            )?;
7010
7011            _prev_end_offset = cur_offset + envelope_size;
7012
7013            Ok(())
7014        }
7015    }
7016
7017    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacCounters {
7018        #[inline(always)]
7019        fn new_empty() -> Self {
7020            Self::default()
7021        }
7022
7023        unsafe fn decode(
7024            &mut self,
7025            decoder: &mut fidl::encoding::Decoder<'_, D>,
7026            offset: usize,
7027            mut depth: fidl::encoding::Depth,
7028        ) -> fidl::Result<()> {
7029            decoder.debug_check_bounds::<Self>(offset);
7030            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7031                None => return Err(fidl::Error::NotNullable),
7032                Some(len) => len,
7033            };
7034            // Calling decoder.out_of_line_offset(0) is not allowed.
7035            if len == 0 {
7036                return Ok(());
7037            };
7038            depth.increment()?;
7039            let envelope_size = 8;
7040            let bytes_len = len * envelope_size;
7041            let offset = decoder.out_of_line_offset(bytes_len)?;
7042            // Decode the envelope for each type.
7043            let mut _next_ordinal_to_read = 0;
7044            let mut next_offset = offset;
7045            let end_offset = offset + bytes_len;
7046            _next_ordinal_to_read += 1;
7047            if next_offset >= end_offset {
7048                return Ok(());
7049            }
7050
7051            // Decode unknown envelopes for gaps in ordinals.
7052            while _next_ordinal_to_read < 1 {
7053                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7054                _next_ordinal_to_read += 1;
7055                next_offset += envelope_size;
7056            }
7057
7058            let next_out_of_line = decoder.next_out_of_line();
7059            let handles_before = decoder.remaining_handles();
7060            if let Some((inlined, num_bytes, num_handles)) =
7061                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7062            {
7063                let member_inline_size =
7064                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7065                if inlined != (member_inline_size <= 4) {
7066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7067                }
7068                let inner_offset;
7069                let mut inner_depth = depth.clone();
7070                if inlined {
7071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7072                    inner_offset = next_offset;
7073                } else {
7074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7075                    inner_depth.increment()?;
7076                }
7077                let val_ref = self.total.get_or_insert_with(|| fidl::new_empty!(u32, D));
7078                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7079                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7080                {
7081                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7082                }
7083                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7084                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7085                }
7086            }
7087
7088            next_offset += envelope_size;
7089            _next_ordinal_to_read += 1;
7090            if next_offset >= end_offset {
7091                return Ok(());
7092            }
7093
7094            // Decode unknown envelopes for gaps in ordinals.
7095            while _next_ordinal_to_read < 2 {
7096                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7097                _next_ordinal_to_read += 1;
7098                next_offset += envelope_size;
7099            }
7100
7101            let next_out_of_line = decoder.next_out_of_line();
7102            let handles_before = decoder.remaining_handles();
7103            if let Some((inlined, num_bytes, num_handles)) =
7104                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7105            {
7106                let member_inline_size =
7107                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7108                if inlined != (member_inline_size <= 4) {
7109                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7110                }
7111                let inner_offset;
7112                let mut inner_depth = depth.clone();
7113                if inlined {
7114                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7115                    inner_offset = next_offset;
7116                } else {
7117                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7118                    inner_depth.increment()?;
7119                }
7120                let val_ref = self.unicast.get_or_insert_with(|| fidl::new_empty!(u32, D));
7121                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7122                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7123                {
7124                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7125                }
7126                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7127                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7128                }
7129            }
7130
7131            next_offset += envelope_size;
7132            _next_ordinal_to_read += 1;
7133            if next_offset >= end_offset {
7134                return Ok(());
7135            }
7136
7137            // Decode unknown envelopes for gaps in ordinals.
7138            while _next_ordinal_to_read < 3 {
7139                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7140                _next_ordinal_to_read += 1;
7141                next_offset += envelope_size;
7142            }
7143
7144            let next_out_of_line = decoder.next_out_of_line();
7145            let handles_before = decoder.remaining_handles();
7146            if let Some((inlined, num_bytes, num_handles)) =
7147                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7148            {
7149                let member_inline_size =
7150                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7151                if inlined != (member_inline_size <= 4) {
7152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7153                }
7154                let inner_offset;
7155                let mut inner_depth = depth.clone();
7156                if inlined {
7157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7158                    inner_offset = next_offset;
7159                } else {
7160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7161                    inner_depth.increment()?;
7162                }
7163                let val_ref = self.broadcast.get_or_insert_with(|| fidl::new_empty!(u32, D));
7164                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7166                {
7167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7168                }
7169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7171                }
7172            }
7173
7174            next_offset += envelope_size;
7175            _next_ordinal_to_read += 1;
7176            if next_offset >= end_offset {
7177                return Ok(());
7178            }
7179
7180            // Decode unknown envelopes for gaps in ordinals.
7181            while _next_ordinal_to_read < 4 {
7182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7183                _next_ordinal_to_read += 1;
7184                next_offset += envelope_size;
7185            }
7186
7187            let next_out_of_line = decoder.next_out_of_line();
7188            let handles_before = decoder.remaining_handles();
7189            if let Some((inlined, num_bytes, num_handles)) =
7190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7191            {
7192                let member_inline_size =
7193                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7194                if inlined != (member_inline_size <= 4) {
7195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7196                }
7197                let inner_offset;
7198                let mut inner_depth = depth.clone();
7199                if inlined {
7200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7201                    inner_offset = next_offset;
7202                } else {
7203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7204                    inner_depth.increment()?;
7205                }
7206                let val_ref = self.ack_requested.get_or_insert_with(|| fidl::new_empty!(u32, D));
7207                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7208                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7209                {
7210                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7211                }
7212                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7213                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7214                }
7215            }
7216
7217            next_offset += envelope_size;
7218            _next_ordinal_to_read += 1;
7219            if next_offset >= end_offset {
7220                return Ok(());
7221            }
7222
7223            // Decode unknown envelopes for gaps in ordinals.
7224            while _next_ordinal_to_read < 5 {
7225                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7226                _next_ordinal_to_read += 1;
7227                next_offset += envelope_size;
7228            }
7229
7230            let next_out_of_line = decoder.next_out_of_line();
7231            let handles_before = decoder.remaining_handles();
7232            if let Some((inlined, num_bytes, num_handles)) =
7233                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7234            {
7235                let member_inline_size =
7236                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7237                if inlined != (member_inline_size <= 4) {
7238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7239                }
7240                let inner_offset;
7241                let mut inner_depth = depth.clone();
7242                if inlined {
7243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7244                    inner_offset = next_offset;
7245                } else {
7246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7247                    inner_depth.increment()?;
7248                }
7249                let val_ref = self.acked.get_or_insert_with(|| fidl::new_empty!(u32, D));
7250                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7251                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7252                {
7253                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7254                }
7255                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7256                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7257                }
7258            }
7259
7260            next_offset += envelope_size;
7261            _next_ordinal_to_read += 1;
7262            if next_offset >= end_offset {
7263                return Ok(());
7264            }
7265
7266            // Decode unknown envelopes for gaps in ordinals.
7267            while _next_ordinal_to_read < 6 {
7268                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7269                _next_ordinal_to_read += 1;
7270                next_offset += envelope_size;
7271            }
7272
7273            let next_out_of_line = decoder.next_out_of_line();
7274            let handles_before = decoder.remaining_handles();
7275            if let Some((inlined, num_bytes, num_handles)) =
7276                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7277            {
7278                let member_inline_size =
7279                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7280                if inlined != (member_inline_size <= 4) {
7281                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7282                }
7283                let inner_offset;
7284                let mut inner_depth = depth.clone();
7285                if inlined {
7286                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7287                    inner_offset = next_offset;
7288                } else {
7289                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7290                    inner_depth.increment()?;
7291                }
7292                let val_ref = self.no_ack_requested.get_or_insert_with(|| fidl::new_empty!(u32, D));
7293                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7294                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7295                {
7296                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7297                }
7298                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7299                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7300                }
7301            }
7302
7303            next_offset += envelope_size;
7304            _next_ordinal_to_read += 1;
7305            if next_offset >= end_offset {
7306                return Ok(());
7307            }
7308
7309            // Decode unknown envelopes for gaps in ordinals.
7310            while _next_ordinal_to_read < 7 {
7311                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7312                _next_ordinal_to_read += 1;
7313                next_offset += envelope_size;
7314            }
7315
7316            let next_out_of_line = decoder.next_out_of_line();
7317            let handles_before = decoder.remaining_handles();
7318            if let Some((inlined, num_bytes, num_handles)) =
7319                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7320            {
7321                let member_inline_size =
7322                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7323                if inlined != (member_inline_size <= 4) {
7324                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7325                }
7326                let inner_offset;
7327                let mut inner_depth = depth.clone();
7328                if inlined {
7329                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7330                    inner_offset = next_offset;
7331                } else {
7332                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7333                    inner_depth.increment()?;
7334                }
7335                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(u32, D));
7336                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7337                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7338                {
7339                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7340                }
7341                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7342                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7343                }
7344            }
7345
7346            next_offset += envelope_size;
7347            _next_ordinal_to_read += 1;
7348            if next_offset >= end_offset {
7349                return Ok(());
7350            }
7351
7352            // Decode unknown envelopes for gaps in ordinals.
7353            while _next_ordinal_to_read < 8 {
7354                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7355                _next_ordinal_to_read += 1;
7356                next_offset += envelope_size;
7357            }
7358
7359            let next_out_of_line = decoder.next_out_of_line();
7360            let handles_before = decoder.remaining_handles();
7361            if let Some((inlined, num_bytes, num_handles)) =
7362                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7363            {
7364                let member_inline_size =
7365                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7366                if inlined != (member_inline_size <= 4) {
7367                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7368                }
7369                let inner_offset;
7370                let mut inner_depth = depth.clone();
7371                if inlined {
7372                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7373                    inner_offset = next_offset;
7374                } else {
7375                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7376                    inner_depth.increment()?;
7377                }
7378                let val_ref = self.data_poll.get_or_insert_with(|| fidl::new_empty!(u32, D));
7379                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7380                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7381                {
7382                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7383                }
7384                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7385                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7386                }
7387            }
7388
7389            next_offset += envelope_size;
7390            _next_ordinal_to_read += 1;
7391            if next_offset >= end_offset {
7392                return Ok(());
7393            }
7394
7395            // Decode unknown envelopes for gaps in ordinals.
7396            while _next_ordinal_to_read < 9 {
7397                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7398                _next_ordinal_to_read += 1;
7399                next_offset += envelope_size;
7400            }
7401
7402            let next_out_of_line = decoder.next_out_of_line();
7403            let handles_before = decoder.remaining_handles();
7404            if let Some((inlined, num_bytes, num_handles)) =
7405                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7406            {
7407                let member_inline_size =
7408                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7409                if inlined != (member_inline_size <= 4) {
7410                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7411                }
7412                let inner_offset;
7413                let mut inner_depth = depth.clone();
7414                if inlined {
7415                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7416                    inner_offset = next_offset;
7417                } else {
7418                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7419                    inner_depth.increment()?;
7420                }
7421                let val_ref = self.beacon.get_or_insert_with(|| fidl::new_empty!(u32, D));
7422                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7423                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7424                {
7425                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7426                }
7427                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7428                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7429                }
7430            }
7431
7432            next_offset += envelope_size;
7433            _next_ordinal_to_read += 1;
7434            if next_offset >= end_offset {
7435                return Ok(());
7436            }
7437
7438            // Decode unknown envelopes for gaps in ordinals.
7439            while _next_ordinal_to_read < 10 {
7440                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7441                _next_ordinal_to_read += 1;
7442                next_offset += envelope_size;
7443            }
7444
7445            let next_out_of_line = decoder.next_out_of_line();
7446            let handles_before = decoder.remaining_handles();
7447            if let Some((inlined, num_bytes, num_handles)) =
7448                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7449            {
7450                let member_inline_size =
7451                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7452                if inlined != (member_inline_size <= 4) {
7453                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7454                }
7455                let inner_offset;
7456                let mut inner_depth = depth.clone();
7457                if inlined {
7458                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7459                    inner_offset = next_offset;
7460                } else {
7461                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7462                    inner_depth.increment()?;
7463                }
7464                let val_ref = self.beacon_request.get_or_insert_with(|| fidl::new_empty!(u32, D));
7465                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7466                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7467                {
7468                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7469                }
7470                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7471                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7472                }
7473            }
7474
7475            next_offset += envelope_size;
7476            _next_ordinal_to_read += 1;
7477            if next_offset >= end_offset {
7478                return Ok(());
7479            }
7480
7481            // Decode unknown envelopes for gaps in ordinals.
7482            while _next_ordinal_to_read < 11 {
7483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7484                _next_ordinal_to_read += 1;
7485                next_offset += envelope_size;
7486            }
7487
7488            let next_out_of_line = decoder.next_out_of_line();
7489            let handles_before = decoder.remaining_handles();
7490            if let Some((inlined, num_bytes, num_handles)) =
7491                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7492            {
7493                let member_inline_size =
7494                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7495                if inlined != (member_inline_size <= 4) {
7496                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7497                }
7498                let inner_offset;
7499                let mut inner_depth = depth.clone();
7500                if inlined {
7501                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7502                    inner_offset = next_offset;
7503                } else {
7504                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7505                    inner_depth.increment()?;
7506                }
7507                let val_ref = self.other.get_or_insert_with(|| fidl::new_empty!(u32, D));
7508                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7509                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7510                {
7511                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7512                }
7513                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7514                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7515                }
7516            }
7517
7518            next_offset += envelope_size;
7519            _next_ordinal_to_read += 1;
7520            if next_offset >= end_offset {
7521                return Ok(());
7522            }
7523
7524            // Decode unknown envelopes for gaps in ordinals.
7525            while _next_ordinal_to_read < 12 {
7526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7527                _next_ordinal_to_read += 1;
7528                next_offset += envelope_size;
7529            }
7530
7531            let next_out_of_line = decoder.next_out_of_line();
7532            let handles_before = decoder.remaining_handles();
7533            if let Some((inlined, num_bytes, num_handles)) =
7534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7535            {
7536                let member_inline_size =
7537                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7538                if inlined != (member_inline_size <= 4) {
7539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7540                }
7541                let inner_offset;
7542                let mut inner_depth = depth.clone();
7543                if inlined {
7544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7545                    inner_offset = next_offset;
7546                } else {
7547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7548                    inner_depth.increment()?;
7549                }
7550                let val_ref = self.address_filtered.get_or_insert_with(|| fidl::new_empty!(u32, D));
7551                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7553                {
7554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7555                }
7556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7558                }
7559            }
7560
7561            next_offset += envelope_size;
7562            _next_ordinal_to_read += 1;
7563            if next_offset >= end_offset {
7564                return Ok(());
7565            }
7566
7567            // Decode unknown envelopes for gaps in ordinals.
7568            while _next_ordinal_to_read < 13 {
7569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7570                _next_ordinal_to_read += 1;
7571                next_offset += envelope_size;
7572            }
7573
7574            let next_out_of_line = decoder.next_out_of_line();
7575            let handles_before = decoder.remaining_handles();
7576            if let Some((inlined, num_bytes, num_handles)) =
7577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7578            {
7579                let member_inline_size =
7580                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7581                if inlined != (member_inline_size <= 4) {
7582                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7583                }
7584                let inner_offset;
7585                let mut inner_depth = depth.clone();
7586                if inlined {
7587                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7588                    inner_offset = next_offset;
7589                } else {
7590                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7591                    inner_depth.increment()?;
7592                }
7593                let val_ref = self.retries.get_or_insert_with(|| fidl::new_empty!(u32, D));
7594                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7596                {
7597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7598                }
7599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7601                }
7602            }
7603
7604            next_offset += envelope_size;
7605            _next_ordinal_to_read += 1;
7606            if next_offset >= end_offset {
7607                return Ok(());
7608            }
7609
7610            // Decode unknown envelopes for gaps in ordinals.
7611            while _next_ordinal_to_read < 14 {
7612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7613                _next_ordinal_to_read += 1;
7614                next_offset += envelope_size;
7615            }
7616
7617            let next_out_of_line = decoder.next_out_of_line();
7618            let handles_before = decoder.remaining_handles();
7619            if let Some((inlined, num_bytes, num_handles)) =
7620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7621            {
7622                let member_inline_size =
7623                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7624                if inlined != (member_inline_size <= 4) {
7625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7626                }
7627                let inner_offset;
7628                let mut inner_depth = depth.clone();
7629                if inlined {
7630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7631                    inner_offset = next_offset;
7632                } else {
7633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7634                    inner_depth.increment()?;
7635                }
7636                let val_ref =
7637                    self.direct_max_retry_expiry.get_or_insert_with(|| fidl::new_empty!(u32, D));
7638                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7640                {
7641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7642                }
7643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7645                }
7646            }
7647
7648            next_offset += envelope_size;
7649            _next_ordinal_to_read += 1;
7650            if next_offset >= end_offset {
7651                return Ok(());
7652            }
7653
7654            // Decode unknown envelopes for gaps in ordinals.
7655            while _next_ordinal_to_read < 15 {
7656                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7657                _next_ordinal_to_read += 1;
7658                next_offset += envelope_size;
7659            }
7660
7661            let next_out_of_line = decoder.next_out_of_line();
7662            let handles_before = decoder.remaining_handles();
7663            if let Some((inlined, num_bytes, num_handles)) =
7664                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7665            {
7666                let member_inline_size =
7667                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7668                if inlined != (member_inline_size <= 4) {
7669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7670                }
7671                let inner_offset;
7672                let mut inner_depth = depth.clone();
7673                if inlined {
7674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7675                    inner_offset = next_offset;
7676                } else {
7677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7678                    inner_depth.increment()?;
7679                }
7680                let val_ref =
7681                    self.indirect_max_retry_expiry.get_or_insert_with(|| fidl::new_empty!(u32, D));
7682                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7683                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7684                {
7685                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7686                }
7687                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7688                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7689                }
7690            }
7691
7692            next_offset += envelope_size;
7693            _next_ordinal_to_read += 1;
7694            if next_offset >= end_offset {
7695                return Ok(());
7696            }
7697
7698            // Decode unknown envelopes for gaps in ordinals.
7699            while _next_ordinal_to_read < 16 {
7700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7701                _next_ordinal_to_read += 1;
7702                next_offset += envelope_size;
7703            }
7704
7705            let next_out_of_line = decoder.next_out_of_line();
7706            let handles_before = decoder.remaining_handles();
7707            if let Some((inlined, num_bytes, num_handles)) =
7708                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7709            {
7710                let member_inline_size =
7711                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7712                if inlined != (member_inline_size <= 4) {
7713                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7714                }
7715                let inner_offset;
7716                let mut inner_depth = depth.clone();
7717                if inlined {
7718                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7719                    inner_offset = next_offset;
7720                } else {
7721                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7722                    inner_depth.increment()?;
7723                }
7724                let val_ref =
7725                    self.dest_addr_filtered.get_or_insert_with(|| fidl::new_empty!(u32, D));
7726                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7727                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7728                {
7729                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7730                }
7731                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7732                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7733                }
7734            }
7735
7736            next_offset += envelope_size;
7737            _next_ordinal_to_read += 1;
7738            if next_offset >= end_offset {
7739                return Ok(());
7740            }
7741
7742            // Decode unknown envelopes for gaps in ordinals.
7743            while _next_ordinal_to_read < 17 {
7744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7745                _next_ordinal_to_read += 1;
7746                next_offset += envelope_size;
7747            }
7748
7749            let next_out_of_line = decoder.next_out_of_line();
7750            let handles_before = decoder.remaining_handles();
7751            if let Some((inlined, num_bytes, num_handles)) =
7752                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7753            {
7754                let member_inline_size =
7755                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7756                if inlined != (member_inline_size <= 4) {
7757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7758                }
7759                let inner_offset;
7760                let mut inner_depth = depth.clone();
7761                if inlined {
7762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7763                    inner_offset = next_offset;
7764                } else {
7765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7766                    inner_depth.increment()?;
7767                }
7768                let val_ref = self.duplicated.get_or_insert_with(|| fidl::new_empty!(u32, D));
7769                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7771                {
7772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7773                }
7774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7776                }
7777            }
7778
7779            next_offset += envelope_size;
7780            _next_ordinal_to_read += 1;
7781            if next_offset >= end_offset {
7782                return Ok(());
7783            }
7784
7785            // Decode unknown envelopes for gaps in ordinals.
7786            while _next_ordinal_to_read < 18 {
7787                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7788                _next_ordinal_to_read += 1;
7789                next_offset += envelope_size;
7790            }
7791
7792            let next_out_of_line = decoder.next_out_of_line();
7793            let handles_before = decoder.remaining_handles();
7794            if let Some((inlined, num_bytes, num_handles)) =
7795                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7796            {
7797                let member_inline_size =
7798                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7799                if inlined != (member_inline_size <= 4) {
7800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7801                }
7802                let inner_offset;
7803                let mut inner_depth = depth.clone();
7804                if inlined {
7805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7806                    inner_offset = next_offset;
7807                } else {
7808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7809                    inner_depth.increment()?;
7810                }
7811                let val_ref = self.err_no_frame.get_or_insert_with(|| fidl::new_empty!(u32, D));
7812                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7813                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7814                {
7815                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7816                }
7817                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7818                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7819                }
7820            }
7821
7822            next_offset += envelope_size;
7823            _next_ordinal_to_read += 1;
7824            if next_offset >= end_offset {
7825                return Ok(());
7826            }
7827
7828            // Decode unknown envelopes for gaps in ordinals.
7829            while _next_ordinal_to_read < 19 {
7830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7831                _next_ordinal_to_read += 1;
7832                next_offset += envelope_size;
7833            }
7834
7835            let next_out_of_line = decoder.next_out_of_line();
7836            let handles_before = decoder.remaining_handles();
7837            if let Some((inlined, num_bytes, num_handles)) =
7838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7839            {
7840                let member_inline_size =
7841                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7842                if inlined != (member_inline_size <= 4) {
7843                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7844                }
7845                let inner_offset;
7846                let mut inner_depth = depth.clone();
7847                if inlined {
7848                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7849                    inner_offset = next_offset;
7850                } else {
7851                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7852                    inner_depth.increment()?;
7853                }
7854                let val_ref =
7855                    self.err_unknown_neighbor.get_or_insert_with(|| fidl::new_empty!(u32, D));
7856                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7857                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7858                {
7859                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7860                }
7861                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7862                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7863                }
7864            }
7865
7866            next_offset += envelope_size;
7867            _next_ordinal_to_read += 1;
7868            if next_offset >= end_offset {
7869                return Ok(());
7870            }
7871
7872            // Decode unknown envelopes for gaps in ordinals.
7873            while _next_ordinal_to_read < 20 {
7874                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7875                _next_ordinal_to_read += 1;
7876                next_offset += envelope_size;
7877            }
7878
7879            let next_out_of_line = decoder.next_out_of_line();
7880            let handles_before = decoder.remaining_handles();
7881            if let Some((inlined, num_bytes, num_handles)) =
7882                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7883            {
7884                let member_inline_size =
7885                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7886                if inlined != (member_inline_size <= 4) {
7887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7888                }
7889                let inner_offset;
7890                let mut inner_depth = depth.clone();
7891                if inlined {
7892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7893                    inner_offset = next_offset;
7894                } else {
7895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7896                    inner_depth.increment()?;
7897                }
7898                let val_ref =
7899                    self.err_invalid_src_addr.get_or_insert_with(|| fidl::new_empty!(u32, D));
7900                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7901                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7902                {
7903                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7904                }
7905                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7906                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7907                }
7908            }
7909
7910            next_offset += envelope_size;
7911            _next_ordinal_to_read += 1;
7912            if next_offset >= end_offset {
7913                return Ok(());
7914            }
7915
7916            // Decode unknown envelopes for gaps in ordinals.
7917            while _next_ordinal_to_read < 21 {
7918                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7919                _next_ordinal_to_read += 1;
7920                next_offset += envelope_size;
7921            }
7922
7923            let next_out_of_line = decoder.next_out_of_line();
7924            let handles_before = decoder.remaining_handles();
7925            if let Some((inlined, num_bytes, num_handles)) =
7926                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7927            {
7928                let member_inline_size =
7929                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7930                if inlined != (member_inline_size <= 4) {
7931                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7932                }
7933                let inner_offset;
7934                let mut inner_depth = depth.clone();
7935                if inlined {
7936                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7937                    inner_offset = next_offset;
7938                } else {
7939                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7940                    inner_depth.increment()?;
7941                }
7942                let val_ref = self.err_sec.get_or_insert_with(|| fidl::new_empty!(u32, D));
7943                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7945                {
7946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7947                }
7948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7950                }
7951            }
7952
7953            next_offset += envelope_size;
7954            _next_ordinal_to_read += 1;
7955            if next_offset >= end_offset {
7956                return Ok(());
7957            }
7958
7959            // Decode unknown envelopes for gaps in ordinals.
7960            while _next_ordinal_to_read < 22 {
7961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7962                _next_ordinal_to_read += 1;
7963                next_offset += envelope_size;
7964            }
7965
7966            let next_out_of_line = decoder.next_out_of_line();
7967            let handles_before = decoder.remaining_handles();
7968            if let Some((inlined, num_bytes, num_handles)) =
7969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7970            {
7971                let member_inline_size =
7972                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7973                if inlined != (member_inline_size <= 4) {
7974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7975                }
7976                let inner_offset;
7977                let mut inner_depth = depth.clone();
7978                if inlined {
7979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7980                    inner_offset = next_offset;
7981                } else {
7982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7983                    inner_depth.increment()?;
7984                }
7985                let val_ref = self.err_fcs.get_or_insert_with(|| fidl::new_empty!(u32, D));
7986                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7988                {
7989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7990                }
7991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7993                }
7994            }
7995
7996            next_offset += envelope_size;
7997            _next_ordinal_to_read += 1;
7998            if next_offset >= end_offset {
7999                return Ok(());
8000            }
8001
8002            // Decode unknown envelopes for gaps in ordinals.
8003            while _next_ordinal_to_read < 23 {
8004                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8005                _next_ordinal_to_read += 1;
8006                next_offset += envelope_size;
8007            }
8008
8009            let next_out_of_line = decoder.next_out_of_line();
8010            let handles_before = decoder.remaining_handles();
8011            if let Some((inlined, num_bytes, num_handles)) =
8012                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8013            {
8014                let member_inline_size =
8015                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8016                if inlined != (member_inline_size <= 4) {
8017                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8018                }
8019                let inner_offset;
8020                let mut inner_depth = depth.clone();
8021                if inlined {
8022                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8023                    inner_offset = next_offset;
8024                } else {
8025                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8026                    inner_depth.increment()?;
8027                }
8028                let val_ref = self.err_cca.get_or_insert_with(|| fidl::new_empty!(u32, D));
8029                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8030                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8031                {
8032                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8033                }
8034                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8035                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8036                }
8037            }
8038
8039            next_offset += envelope_size;
8040            _next_ordinal_to_read += 1;
8041            if next_offset >= end_offset {
8042                return Ok(());
8043            }
8044
8045            // Decode unknown envelopes for gaps in ordinals.
8046            while _next_ordinal_to_read < 24 {
8047                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8048                _next_ordinal_to_read += 1;
8049                next_offset += envelope_size;
8050            }
8051
8052            let next_out_of_line = decoder.next_out_of_line();
8053            let handles_before = decoder.remaining_handles();
8054            if let Some((inlined, num_bytes, num_handles)) =
8055                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8056            {
8057                let member_inline_size =
8058                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8059                if inlined != (member_inline_size <= 4) {
8060                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8061                }
8062                let inner_offset;
8063                let mut inner_depth = depth.clone();
8064                if inlined {
8065                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8066                    inner_offset = next_offset;
8067                } else {
8068                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8069                    inner_depth.increment()?;
8070                }
8071                let val_ref = self.err_abort.get_or_insert_with(|| fidl::new_empty!(u32, D));
8072                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8073                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8074                {
8075                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8076                }
8077                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8078                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8079                }
8080            }
8081
8082            next_offset += envelope_size;
8083            _next_ordinal_to_read += 1;
8084            if next_offset >= end_offset {
8085                return Ok(());
8086            }
8087
8088            // Decode unknown envelopes for gaps in ordinals.
8089            while _next_ordinal_to_read < 25 {
8090                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8091                _next_ordinal_to_read += 1;
8092                next_offset += envelope_size;
8093            }
8094
8095            let next_out_of_line = decoder.next_out_of_line();
8096            let handles_before = decoder.remaining_handles();
8097            if let Some((inlined, num_bytes, num_handles)) =
8098                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8099            {
8100                let member_inline_size =
8101                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8102                if inlined != (member_inline_size <= 4) {
8103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8104                }
8105                let inner_offset;
8106                let mut inner_depth = depth.clone();
8107                if inlined {
8108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8109                    inner_offset = next_offset;
8110                } else {
8111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8112                    inner_depth.increment()?;
8113                }
8114                let val_ref = self.err_busy_channel.get_or_insert_with(|| fidl::new_empty!(u32, D));
8115                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8116                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8117                {
8118                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8119                }
8120                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8121                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8122                }
8123            }
8124
8125            next_offset += envelope_size;
8126            _next_ordinal_to_read += 1;
8127            if next_offset >= end_offset {
8128                return Ok(());
8129            }
8130
8131            // Decode unknown envelopes for gaps in ordinals.
8132            while _next_ordinal_to_read < 26 {
8133                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8134                _next_ordinal_to_read += 1;
8135                next_offset += envelope_size;
8136            }
8137
8138            let next_out_of_line = decoder.next_out_of_line();
8139            let handles_before = decoder.remaining_handles();
8140            if let Some((inlined, num_bytes, num_handles)) =
8141                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8142            {
8143                let member_inline_size =
8144                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8145                if inlined != (member_inline_size <= 4) {
8146                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8147                }
8148                let inner_offset;
8149                let mut inner_depth = depth.clone();
8150                if inlined {
8151                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8152                    inner_offset = next_offset;
8153                } else {
8154                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8155                    inner_depth.increment()?;
8156                }
8157                let val_ref = self.err_other.get_or_insert_with(|| fidl::new_empty!(u32, D));
8158                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8159                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8160                {
8161                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8162                }
8163                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8164                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8165                }
8166            }
8167
8168            next_offset += envelope_size;
8169
8170            // Decode the remaining unknown envelopes.
8171            while next_offset < end_offset {
8172                _next_ordinal_to_read += 1;
8173                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8174                next_offset += envelope_size;
8175            }
8176
8177            Ok(())
8178        }
8179    }
8180
8181    impl MleCounters {
8182        #[inline(always)]
8183        fn max_ordinal_present(&self) -> u64 {
8184            if let Some(_) = self.parent_changes {
8185                return 16;
8186            }
8187            if let Some(_) = self.tracked_time {
8188                return 15;
8189            }
8190            if let Some(_) = self.leader_time {
8191                return 14;
8192            }
8193            if let Some(_) = self.router_time {
8194                return 13;
8195            }
8196            if let Some(_) = self.child_time {
8197                return 12;
8198            }
8199            if let Some(_) = self.detached_time {
8200                return 11;
8201            }
8202            if let Some(_) = self.disabled_time {
8203                return 10;
8204            }
8205            if let Some(_) = self.better_parent_attach_attempts {
8206                return 9;
8207            }
8208            if let Some(_) = self.better_partition_attach_attempts {
8209                return 8;
8210            }
8211            if let Some(_) = self.partition_id_changes {
8212                return 7;
8213            }
8214            if let Some(_) = self.attach_attempts {
8215                return 6;
8216            }
8217            if let Some(_) = self.leader_role {
8218                return 5;
8219            }
8220            if let Some(_) = self.router_role {
8221                return 4;
8222            }
8223            if let Some(_) = self.child_role {
8224                return 3;
8225            }
8226            if let Some(_) = self.detached_role {
8227                return 2;
8228            }
8229            if let Some(_) = self.disabled_role {
8230                return 1;
8231            }
8232            0
8233        }
8234    }
8235
8236    impl fidl::encoding::ValueTypeMarker for MleCounters {
8237        type Borrowed<'a> = &'a Self;
8238        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8239            value
8240        }
8241    }
8242
8243    unsafe impl fidl::encoding::TypeMarker for MleCounters {
8244        type Owned = Self;
8245
8246        #[inline(always)]
8247        fn inline_align(_context: fidl::encoding::Context) -> usize {
8248            8
8249        }
8250
8251        #[inline(always)]
8252        fn inline_size(_context: fidl::encoding::Context) -> usize {
8253            16
8254        }
8255    }
8256
8257    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MleCounters, D>
8258        for &MleCounters
8259    {
8260        unsafe fn encode(
8261            self,
8262            encoder: &mut fidl::encoding::Encoder<'_, D>,
8263            offset: usize,
8264            mut depth: fidl::encoding::Depth,
8265        ) -> fidl::Result<()> {
8266            encoder.debug_check_bounds::<MleCounters>(offset);
8267            // Vector header
8268            let max_ordinal: u64 = self.max_ordinal_present();
8269            encoder.write_num(max_ordinal, offset);
8270            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8271            // Calling encoder.out_of_line_offset(0) is not allowed.
8272            if max_ordinal == 0 {
8273                return Ok(());
8274            }
8275            depth.increment()?;
8276            let envelope_size = 8;
8277            let bytes_len = max_ordinal as usize * envelope_size;
8278            #[allow(unused_variables)]
8279            let offset = encoder.out_of_line_offset(bytes_len);
8280            let mut _prev_end_offset: usize = 0;
8281            if 1 > max_ordinal {
8282                return Ok(());
8283            }
8284
8285            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8286            // are envelope_size bytes.
8287            let cur_offset: usize = (1 - 1) * envelope_size;
8288
8289            // Zero reserved fields.
8290            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8291
8292            // Safety:
8293            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8294            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8295            //   envelope_size bytes, there is always sufficient room.
8296            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8297                self.disabled_role.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8298                encoder,
8299                offset + cur_offset,
8300                depth,
8301            )?;
8302
8303            _prev_end_offset = cur_offset + envelope_size;
8304            if 2 > max_ordinal {
8305                return Ok(());
8306            }
8307
8308            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8309            // are envelope_size bytes.
8310            let cur_offset: usize = (2 - 1) * envelope_size;
8311
8312            // Zero reserved fields.
8313            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8314
8315            // Safety:
8316            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8317            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8318            //   envelope_size bytes, there is always sufficient room.
8319            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8320                self.detached_role.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8321                encoder,
8322                offset + cur_offset,
8323                depth,
8324            )?;
8325
8326            _prev_end_offset = cur_offset + envelope_size;
8327            if 3 > max_ordinal {
8328                return Ok(());
8329            }
8330
8331            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8332            // are envelope_size bytes.
8333            let cur_offset: usize = (3 - 1) * envelope_size;
8334
8335            // Zero reserved fields.
8336            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8337
8338            // Safety:
8339            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8340            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8341            //   envelope_size bytes, there is always sufficient room.
8342            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8343                self.child_role.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8344                encoder,
8345                offset + cur_offset,
8346                depth,
8347            )?;
8348
8349            _prev_end_offset = cur_offset + envelope_size;
8350            if 4 > max_ordinal {
8351                return Ok(());
8352            }
8353
8354            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8355            // are envelope_size bytes.
8356            let cur_offset: usize = (4 - 1) * envelope_size;
8357
8358            // Zero reserved fields.
8359            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8360
8361            // Safety:
8362            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8363            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8364            //   envelope_size bytes, there is always sufficient room.
8365            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8366                self.router_role.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8367                encoder,
8368                offset + cur_offset,
8369                depth,
8370            )?;
8371
8372            _prev_end_offset = cur_offset + envelope_size;
8373            if 5 > max_ordinal {
8374                return Ok(());
8375            }
8376
8377            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8378            // are envelope_size bytes.
8379            let cur_offset: usize = (5 - 1) * envelope_size;
8380
8381            // Zero reserved fields.
8382            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8383
8384            // Safety:
8385            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8386            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8387            //   envelope_size bytes, there is always sufficient room.
8388            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8389                self.leader_role.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8390                encoder,
8391                offset + cur_offset,
8392                depth,
8393            )?;
8394
8395            _prev_end_offset = cur_offset + envelope_size;
8396            if 6 > max_ordinal {
8397                return Ok(());
8398            }
8399
8400            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8401            // are envelope_size bytes.
8402            let cur_offset: usize = (6 - 1) * envelope_size;
8403
8404            // Zero reserved fields.
8405            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8406
8407            // Safety:
8408            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8409            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8410            //   envelope_size bytes, there is always sufficient room.
8411            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8412                self.attach_attempts.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8413                encoder,
8414                offset + cur_offset,
8415                depth,
8416            )?;
8417
8418            _prev_end_offset = cur_offset + envelope_size;
8419            if 7 > max_ordinal {
8420                return Ok(());
8421            }
8422
8423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8424            // are envelope_size bytes.
8425            let cur_offset: usize = (7 - 1) * envelope_size;
8426
8427            // Zero reserved fields.
8428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8429
8430            // Safety:
8431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8433            //   envelope_size bytes, there is always sufficient room.
8434            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8435                self.partition_id_changes
8436                    .as_ref()
8437                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8438                encoder,
8439                offset + cur_offset,
8440                depth,
8441            )?;
8442
8443            _prev_end_offset = cur_offset + envelope_size;
8444            if 8 > max_ordinal {
8445                return Ok(());
8446            }
8447
8448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8449            // are envelope_size bytes.
8450            let cur_offset: usize = (8 - 1) * envelope_size;
8451
8452            // Zero reserved fields.
8453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8454
8455            // Safety:
8456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8458            //   envelope_size bytes, there is always sufficient room.
8459            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8460                self.better_partition_attach_attempts
8461                    .as_ref()
8462                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8463                encoder,
8464                offset + cur_offset,
8465                depth,
8466            )?;
8467
8468            _prev_end_offset = cur_offset + envelope_size;
8469            if 9 > max_ordinal {
8470                return Ok(());
8471            }
8472
8473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8474            // are envelope_size bytes.
8475            let cur_offset: usize = (9 - 1) * envelope_size;
8476
8477            // Zero reserved fields.
8478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8479
8480            // Safety:
8481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8483            //   envelope_size bytes, there is always sufficient room.
8484            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8485                self.better_parent_attach_attempts
8486                    .as_ref()
8487                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8488                encoder,
8489                offset + cur_offset,
8490                depth,
8491            )?;
8492
8493            _prev_end_offset = cur_offset + envelope_size;
8494            if 10 > max_ordinal {
8495                return Ok(());
8496            }
8497
8498            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8499            // are envelope_size bytes.
8500            let cur_offset: usize = (10 - 1) * envelope_size;
8501
8502            // Zero reserved fields.
8503            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8504
8505            // Safety:
8506            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8507            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8508            //   envelope_size bytes, there is always sufficient room.
8509            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8510                self.disabled_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8511                encoder,
8512                offset + cur_offset,
8513                depth,
8514            )?;
8515
8516            _prev_end_offset = cur_offset + envelope_size;
8517            if 11 > max_ordinal {
8518                return Ok(());
8519            }
8520
8521            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8522            // are envelope_size bytes.
8523            let cur_offset: usize = (11 - 1) * envelope_size;
8524
8525            // Zero reserved fields.
8526            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8527
8528            // Safety:
8529            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8530            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8531            //   envelope_size bytes, there is always sufficient room.
8532            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8533                self.detached_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8534                encoder,
8535                offset + cur_offset,
8536                depth,
8537            )?;
8538
8539            _prev_end_offset = cur_offset + envelope_size;
8540            if 12 > max_ordinal {
8541                return Ok(());
8542            }
8543
8544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8545            // are envelope_size bytes.
8546            let cur_offset: usize = (12 - 1) * envelope_size;
8547
8548            // Zero reserved fields.
8549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8550
8551            // Safety:
8552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8554            //   envelope_size bytes, there is always sufficient room.
8555            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8556                self.child_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8557                encoder,
8558                offset + cur_offset,
8559                depth,
8560            )?;
8561
8562            _prev_end_offset = cur_offset + envelope_size;
8563            if 13 > max_ordinal {
8564                return Ok(());
8565            }
8566
8567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8568            // are envelope_size bytes.
8569            let cur_offset: usize = (13 - 1) * envelope_size;
8570
8571            // Zero reserved fields.
8572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8573
8574            // Safety:
8575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8577            //   envelope_size bytes, there is always sufficient room.
8578            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8579                self.router_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8580                encoder,
8581                offset + cur_offset,
8582                depth,
8583            )?;
8584
8585            _prev_end_offset = cur_offset + envelope_size;
8586            if 14 > max_ordinal {
8587                return Ok(());
8588            }
8589
8590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8591            // are envelope_size bytes.
8592            let cur_offset: usize = (14 - 1) * envelope_size;
8593
8594            // Zero reserved fields.
8595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8596
8597            // Safety:
8598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8600            //   envelope_size bytes, there is always sufficient room.
8601            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8602                self.leader_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8603                encoder,
8604                offset + cur_offset,
8605                depth,
8606            )?;
8607
8608            _prev_end_offset = cur_offset + envelope_size;
8609            if 15 > max_ordinal {
8610                return Ok(());
8611            }
8612
8613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8614            // are envelope_size bytes.
8615            let cur_offset: usize = (15 - 1) * envelope_size;
8616
8617            // Zero reserved fields.
8618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8619
8620            // Safety:
8621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8623            //   envelope_size bytes, there is always sufficient room.
8624            fidl::encoding::encode_in_envelope_optional::<u64, D>(
8625                self.tracked_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8626                encoder,
8627                offset + cur_offset,
8628                depth,
8629            )?;
8630
8631            _prev_end_offset = cur_offset + envelope_size;
8632            if 16 > max_ordinal {
8633                return Ok(());
8634            }
8635
8636            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8637            // are envelope_size bytes.
8638            let cur_offset: usize = (16 - 1) * envelope_size;
8639
8640            // Zero reserved fields.
8641            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8642
8643            // Safety:
8644            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8645            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8646            //   envelope_size bytes, there is always sufficient room.
8647            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8648                self.parent_changes.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8649                encoder,
8650                offset + cur_offset,
8651                depth,
8652            )?;
8653
8654            _prev_end_offset = cur_offset + envelope_size;
8655
8656            Ok(())
8657        }
8658    }
8659
8660    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MleCounters {
8661        #[inline(always)]
8662        fn new_empty() -> Self {
8663            Self::default()
8664        }
8665
8666        unsafe fn decode(
8667            &mut self,
8668            decoder: &mut fidl::encoding::Decoder<'_, D>,
8669            offset: usize,
8670            mut depth: fidl::encoding::Depth,
8671        ) -> fidl::Result<()> {
8672            decoder.debug_check_bounds::<Self>(offset);
8673            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8674                None => return Err(fidl::Error::NotNullable),
8675                Some(len) => len,
8676            };
8677            // Calling decoder.out_of_line_offset(0) is not allowed.
8678            if len == 0 {
8679                return Ok(());
8680            };
8681            depth.increment()?;
8682            let envelope_size = 8;
8683            let bytes_len = len * envelope_size;
8684            let offset = decoder.out_of_line_offset(bytes_len)?;
8685            // Decode the envelope for each type.
8686            let mut _next_ordinal_to_read = 0;
8687            let mut next_offset = offset;
8688            let end_offset = offset + bytes_len;
8689            _next_ordinal_to_read += 1;
8690            if next_offset >= end_offset {
8691                return Ok(());
8692            }
8693
8694            // Decode unknown envelopes for gaps in ordinals.
8695            while _next_ordinal_to_read < 1 {
8696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8697                _next_ordinal_to_read += 1;
8698                next_offset += envelope_size;
8699            }
8700
8701            let next_out_of_line = decoder.next_out_of_line();
8702            let handles_before = decoder.remaining_handles();
8703            if let Some((inlined, num_bytes, num_handles)) =
8704                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8705            {
8706                let member_inline_size =
8707                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8708                if inlined != (member_inline_size <= 4) {
8709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8710                }
8711                let inner_offset;
8712                let mut inner_depth = depth.clone();
8713                if inlined {
8714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8715                    inner_offset = next_offset;
8716                } else {
8717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8718                    inner_depth.increment()?;
8719                }
8720                let val_ref = self.disabled_role.get_or_insert_with(|| fidl::new_empty!(u16, D));
8721                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8722                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8723                {
8724                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8725                }
8726                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8727                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8728                }
8729            }
8730
8731            next_offset += envelope_size;
8732            _next_ordinal_to_read += 1;
8733            if next_offset >= end_offset {
8734                return Ok(());
8735            }
8736
8737            // Decode unknown envelopes for gaps in ordinals.
8738            while _next_ordinal_to_read < 2 {
8739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8740                _next_ordinal_to_read += 1;
8741                next_offset += envelope_size;
8742            }
8743
8744            let next_out_of_line = decoder.next_out_of_line();
8745            let handles_before = decoder.remaining_handles();
8746            if let Some((inlined, num_bytes, num_handles)) =
8747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8748            {
8749                let member_inline_size =
8750                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8751                if inlined != (member_inline_size <= 4) {
8752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8753                }
8754                let inner_offset;
8755                let mut inner_depth = depth.clone();
8756                if inlined {
8757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8758                    inner_offset = next_offset;
8759                } else {
8760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8761                    inner_depth.increment()?;
8762                }
8763                let val_ref = self.detached_role.get_or_insert_with(|| fidl::new_empty!(u16, D));
8764                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8765                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8766                {
8767                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8768                }
8769                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8770                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8771                }
8772            }
8773
8774            next_offset += envelope_size;
8775            _next_ordinal_to_read += 1;
8776            if next_offset >= end_offset {
8777                return Ok(());
8778            }
8779
8780            // Decode unknown envelopes for gaps in ordinals.
8781            while _next_ordinal_to_read < 3 {
8782                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8783                _next_ordinal_to_read += 1;
8784                next_offset += envelope_size;
8785            }
8786
8787            let next_out_of_line = decoder.next_out_of_line();
8788            let handles_before = decoder.remaining_handles();
8789            if let Some((inlined, num_bytes, num_handles)) =
8790                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8791            {
8792                let member_inline_size =
8793                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8794                if inlined != (member_inline_size <= 4) {
8795                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8796                }
8797                let inner_offset;
8798                let mut inner_depth = depth.clone();
8799                if inlined {
8800                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8801                    inner_offset = next_offset;
8802                } else {
8803                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8804                    inner_depth.increment()?;
8805                }
8806                let val_ref = self.child_role.get_or_insert_with(|| fidl::new_empty!(u16, D));
8807                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8808                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8809                {
8810                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8811                }
8812                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8813                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8814                }
8815            }
8816
8817            next_offset += envelope_size;
8818            _next_ordinal_to_read += 1;
8819            if next_offset >= end_offset {
8820                return Ok(());
8821            }
8822
8823            // Decode unknown envelopes for gaps in ordinals.
8824            while _next_ordinal_to_read < 4 {
8825                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8826                _next_ordinal_to_read += 1;
8827                next_offset += envelope_size;
8828            }
8829
8830            let next_out_of_line = decoder.next_out_of_line();
8831            let handles_before = decoder.remaining_handles();
8832            if let Some((inlined, num_bytes, num_handles)) =
8833                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8834            {
8835                let member_inline_size =
8836                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8837                if inlined != (member_inline_size <= 4) {
8838                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8839                }
8840                let inner_offset;
8841                let mut inner_depth = depth.clone();
8842                if inlined {
8843                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8844                    inner_offset = next_offset;
8845                } else {
8846                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8847                    inner_depth.increment()?;
8848                }
8849                let val_ref = self.router_role.get_or_insert_with(|| fidl::new_empty!(u16, D));
8850                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8851                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8852                {
8853                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8854                }
8855                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8856                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8857                }
8858            }
8859
8860            next_offset += envelope_size;
8861            _next_ordinal_to_read += 1;
8862            if next_offset >= end_offset {
8863                return Ok(());
8864            }
8865
8866            // Decode unknown envelopes for gaps in ordinals.
8867            while _next_ordinal_to_read < 5 {
8868                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8869                _next_ordinal_to_read += 1;
8870                next_offset += envelope_size;
8871            }
8872
8873            let next_out_of_line = decoder.next_out_of_line();
8874            let handles_before = decoder.remaining_handles();
8875            if let Some((inlined, num_bytes, num_handles)) =
8876                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8877            {
8878                let member_inline_size =
8879                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8880                if inlined != (member_inline_size <= 4) {
8881                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8882                }
8883                let inner_offset;
8884                let mut inner_depth = depth.clone();
8885                if inlined {
8886                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8887                    inner_offset = next_offset;
8888                } else {
8889                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8890                    inner_depth.increment()?;
8891                }
8892                let val_ref = self.leader_role.get_or_insert_with(|| fidl::new_empty!(u16, D));
8893                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8894                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8895                {
8896                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8897                }
8898                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8899                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8900                }
8901            }
8902
8903            next_offset += envelope_size;
8904            _next_ordinal_to_read += 1;
8905            if next_offset >= end_offset {
8906                return Ok(());
8907            }
8908
8909            // Decode unknown envelopes for gaps in ordinals.
8910            while _next_ordinal_to_read < 6 {
8911                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8912                _next_ordinal_to_read += 1;
8913                next_offset += envelope_size;
8914            }
8915
8916            let next_out_of_line = decoder.next_out_of_line();
8917            let handles_before = decoder.remaining_handles();
8918            if let Some((inlined, num_bytes, num_handles)) =
8919                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8920            {
8921                let member_inline_size =
8922                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8923                if inlined != (member_inline_size <= 4) {
8924                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8925                }
8926                let inner_offset;
8927                let mut inner_depth = depth.clone();
8928                if inlined {
8929                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8930                    inner_offset = next_offset;
8931                } else {
8932                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8933                    inner_depth.increment()?;
8934                }
8935                let val_ref = self.attach_attempts.get_or_insert_with(|| fidl::new_empty!(u16, D));
8936                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8937                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8938                {
8939                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8940                }
8941                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8942                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8943                }
8944            }
8945
8946            next_offset += envelope_size;
8947            _next_ordinal_to_read += 1;
8948            if next_offset >= end_offset {
8949                return Ok(());
8950            }
8951
8952            // Decode unknown envelopes for gaps in ordinals.
8953            while _next_ordinal_to_read < 7 {
8954                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8955                _next_ordinal_to_read += 1;
8956                next_offset += envelope_size;
8957            }
8958
8959            let next_out_of_line = decoder.next_out_of_line();
8960            let handles_before = decoder.remaining_handles();
8961            if let Some((inlined, num_bytes, num_handles)) =
8962                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8963            {
8964                let member_inline_size =
8965                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8966                if inlined != (member_inline_size <= 4) {
8967                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8968                }
8969                let inner_offset;
8970                let mut inner_depth = depth.clone();
8971                if inlined {
8972                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8973                    inner_offset = next_offset;
8974                } else {
8975                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8976                    inner_depth.increment()?;
8977                }
8978                let val_ref =
8979                    self.partition_id_changes.get_or_insert_with(|| fidl::new_empty!(u16, D));
8980                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8981                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8982                {
8983                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8984                }
8985                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8986                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8987                }
8988            }
8989
8990            next_offset += envelope_size;
8991            _next_ordinal_to_read += 1;
8992            if next_offset >= end_offset {
8993                return Ok(());
8994            }
8995
8996            // Decode unknown envelopes for gaps in ordinals.
8997            while _next_ordinal_to_read < 8 {
8998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8999                _next_ordinal_to_read += 1;
9000                next_offset += envelope_size;
9001            }
9002
9003            let next_out_of_line = decoder.next_out_of_line();
9004            let handles_before = decoder.remaining_handles();
9005            if let Some((inlined, num_bytes, num_handles)) =
9006                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9007            {
9008                let member_inline_size =
9009                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9010                if inlined != (member_inline_size <= 4) {
9011                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9012                }
9013                let inner_offset;
9014                let mut inner_depth = depth.clone();
9015                if inlined {
9016                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9017                    inner_offset = next_offset;
9018                } else {
9019                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9020                    inner_depth.increment()?;
9021                }
9022                let val_ref = self
9023                    .better_partition_attach_attempts
9024                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
9025                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9026                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9027                {
9028                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9029                }
9030                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9031                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9032                }
9033            }
9034
9035            next_offset += envelope_size;
9036            _next_ordinal_to_read += 1;
9037            if next_offset >= end_offset {
9038                return Ok(());
9039            }
9040
9041            // Decode unknown envelopes for gaps in ordinals.
9042            while _next_ordinal_to_read < 9 {
9043                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9044                _next_ordinal_to_read += 1;
9045                next_offset += envelope_size;
9046            }
9047
9048            let next_out_of_line = decoder.next_out_of_line();
9049            let handles_before = decoder.remaining_handles();
9050            if let Some((inlined, num_bytes, num_handles)) =
9051                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9052            {
9053                let member_inline_size =
9054                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9055                if inlined != (member_inline_size <= 4) {
9056                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9057                }
9058                let inner_offset;
9059                let mut inner_depth = depth.clone();
9060                if inlined {
9061                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9062                    inner_offset = next_offset;
9063                } else {
9064                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9065                    inner_depth.increment()?;
9066                }
9067                let val_ref = self
9068                    .better_parent_attach_attempts
9069                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
9070                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9071                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9072                {
9073                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9074                }
9075                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9076                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9077                }
9078            }
9079
9080            next_offset += envelope_size;
9081            _next_ordinal_to_read += 1;
9082            if next_offset >= end_offset {
9083                return Ok(());
9084            }
9085
9086            // Decode unknown envelopes for gaps in ordinals.
9087            while _next_ordinal_to_read < 10 {
9088                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9089                _next_ordinal_to_read += 1;
9090                next_offset += envelope_size;
9091            }
9092
9093            let next_out_of_line = decoder.next_out_of_line();
9094            let handles_before = decoder.remaining_handles();
9095            if let Some((inlined, num_bytes, num_handles)) =
9096                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9097            {
9098                let member_inline_size =
9099                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9100                if inlined != (member_inline_size <= 4) {
9101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9102                }
9103                let inner_offset;
9104                let mut inner_depth = depth.clone();
9105                if inlined {
9106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9107                    inner_offset = next_offset;
9108                } else {
9109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9110                    inner_depth.increment()?;
9111                }
9112                let val_ref = self.disabled_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9113                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9114                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9115                {
9116                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9117                }
9118                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9119                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9120                }
9121            }
9122
9123            next_offset += envelope_size;
9124            _next_ordinal_to_read += 1;
9125            if next_offset >= end_offset {
9126                return Ok(());
9127            }
9128
9129            // Decode unknown envelopes for gaps in ordinals.
9130            while _next_ordinal_to_read < 11 {
9131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9132                _next_ordinal_to_read += 1;
9133                next_offset += envelope_size;
9134            }
9135
9136            let next_out_of_line = decoder.next_out_of_line();
9137            let handles_before = decoder.remaining_handles();
9138            if let Some((inlined, num_bytes, num_handles)) =
9139                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9140            {
9141                let member_inline_size =
9142                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9143                if inlined != (member_inline_size <= 4) {
9144                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9145                }
9146                let inner_offset;
9147                let mut inner_depth = depth.clone();
9148                if inlined {
9149                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9150                    inner_offset = next_offset;
9151                } else {
9152                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9153                    inner_depth.increment()?;
9154                }
9155                let val_ref = self.detached_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9156                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9158                {
9159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9160                }
9161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9163                }
9164            }
9165
9166            next_offset += envelope_size;
9167            _next_ordinal_to_read += 1;
9168            if next_offset >= end_offset {
9169                return Ok(());
9170            }
9171
9172            // Decode unknown envelopes for gaps in ordinals.
9173            while _next_ordinal_to_read < 12 {
9174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9175                _next_ordinal_to_read += 1;
9176                next_offset += envelope_size;
9177            }
9178
9179            let next_out_of_line = decoder.next_out_of_line();
9180            let handles_before = decoder.remaining_handles();
9181            if let Some((inlined, num_bytes, num_handles)) =
9182                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9183            {
9184                let member_inline_size =
9185                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9186                if inlined != (member_inline_size <= 4) {
9187                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9188                }
9189                let inner_offset;
9190                let mut inner_depth = depth.clone();
9191                if inlined {
9192                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9193                    inner_offset = next_offset;
9194                } else {
9195                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9196                    inner_depth.increment()?;
9197                }
9198                let val_ref = self.child_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9199                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9201                {
9202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9203                }
9204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9206                }
9207            }
9208
9209            next_offset += envelope_size;
9210            _next_ordinal_to_read += 1;
9211            if next_offset >= end_offset {
9212                return Ok(());
9213            }
9214
9215            // Decode unknown envelopes for gaps in ordinals.
9216            while _next_ordinal_to_read < 13 {
9217                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9218                _next_ordinal_to_read += 1;
9219                next_offset += envelope_size;
9220            }
9221
9222            let next_out_of_line = decoder.next_out_of_line();
9223            let handles_before = decoder.remaining_handles();
9224            if let Some((inlined, num_bytes, num_handles)) =
9225                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9226            {
9227                let member_inline_size =
9228                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9229                if inlined != (member_inline_size <= 4) {
9230                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9231                }
9232                let inner_offset;
9233                let mut inner_depth = depth.clone();
9234                if inlined {
9235                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9236                    inner_offset = next_offset;
9237                } else {
9238                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9239                    inner_depth.increment()?;
9240                }
9241                let val_ref = self.router_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9242                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9243                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9244                {
9245                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9246                }
9247                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9248                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9249                }
9250            }
9251
9252            next_offset += envelope_size;
9253            _next_ordinal_to_read += 1;
9254            if next_offset >= end_offset {
9255                return Ok(());
9256            }
9257
9258            // Decode unknown envelopes for gaps in ordinals.
9259            while _next_ordinal_to_read < 14 {
9260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9261                _next_ordinal_to_read += 1;
9262                next_offset += envelope_size;
9263            }
9264
9265            let next_out_of_line = decoder.next_out_of_line();
9266            let handles_before = decoder.remaining_handles();
9267            if let Some((inlined, num_bytes, num_handles)) =
9268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9269            {
9270                let member_inline_size =
9271                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9272                if inlined != (member_inline_size <= 4) {
9273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9274                }
9275                let inner_offset;
9276                let mut inner_depth = depth.clone();
9277                if inlined {
9278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9279                    inner_offset = next_offset;
9280                } else {
9281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9282                    inner_depth.increment()?;
9283                }
9284                let val_ref = self.leader_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9285                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9286                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9287                {
9288                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9289                }
9290                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9291                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9292                }
9293            }
9294
9295            next_offset += envelope_size;
9296            _next_ordinal_to_read += 1;
9297            if next_offset >= end_offset {
9298                return Ok(());
9299            }
9300
9301            // Decode unknown envelopes for gaps in ordinals.
9302            while _next_ordinal_to_read < 15 {
9303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9304                _next_ordinal_to_read += 1;
9305                next_offset += envelope_size;
9306            }
9307
9308            let next_out_of_line = decoder.next_out_of_line();
9309            let handles_before = decoder.remaining_handles();
9310            if let Some((inlined, num_bytes, num_handles)) =
9311                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9312            {
9313                let member_inline_size =
9314                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9315                if inlined != (member_inline_size <= 4) {
9316                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9317                }
9318                let inner_offset;
9319                let mut inner_depth = depth.clone();
9320                if inlined {
9321                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9322                    inner_offset = next_offset;
9323                } else {
9324                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9325                    inner_depth.increment()?;
9326                }
9327                let val_ref = self.tracked_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
9328                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9329                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9330                {
9331                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9332                }
9333                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9334                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9335                }
9336            }
9337
9338            next_offset += envelope_size;
9339            _next_ordinal_to_read += 1;
9340            if next_offset >= end_offset {
9341                return Ok(());
9342            }
9343
9344            // Decode unknown envelopes for gaps in ordinals.
9345            while _next_ordinal_to_read < 16 {
9346                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9347                _next_ordinal_to_read += 1;
9348                next_offset += envelope_size;
9349            }
9350
9351            let next_out_of_line = decoder.next_out_of_line();
9352            let handles_before = decoder.remaining_handles();
9353            if let Some((inlined, num_bytes, num_handles)) =
9354                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9355            {
9356                let member_inline_size =
9357                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9358                if inlined != (member_inline_size <= 4) {
9359                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9360                }
9361                let inner_offset;
9362                let mut inner_depth = depth.clone();
9363                if inlined {
9364                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9365                    inner_offset = next_offset;
9366                } else {
9367                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9368                    inner_depth.increment()?;
9369                }
9370                let val_ref = self.parent_changes.get_or_insert_with(|| fidl::new_empty!(u16, D));
9371                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9373                {
9374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9375                }
9376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9378                }
9379            }
9380
9381            next_offset += envelope_size;
9382
9383            // Decode the remaining unknown envelopes.
9384            while next_offset < end_offset {
9385                _next_ordinal_to_read += 1;
9386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9387                next_offset += envelope_size;
9388            }
9389
9390            Ok(())
9391        }
9392    }
9393
9394    impl fidl::encoding::ValueTypeMarker for Credential {
9395        type Borrowed<'a> = &'a Self;
9396        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9397            value
9398        }
9399    }
9400
9401    unsafe impl fidl::encoding::TypeMarker for Credential {
9402        type Owned = Self;
9403
9404        #[inline(always)]
9405        fn inline_align(_context: fidl::encoding::Context) -> usize {
9406            8
9407        }
9408
9409        #[inline(always)]
9410        fn inline_size(_context: fidl::encoding::Context) -> usize {
9411            16
9412        }
9413    }
9414
9415    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Credential, D>
9416        for &Credential
9417    {
9418        #[inline]
9419        unsafe fn encode(
9420            self,
9421            encoder: &mut fidl::encoding::Encoder<'_, D>,
9422            offset: usize,
9423            _depth: fidl::encoding::Depth,
9424        ) -> fidl::Result<()> {
9425            encoder.debug_check_bounds::<Credential>(offset);
9426            encoder.write_num::<u64>(self.ordinal(), offset);
9427            match self {
9428                Credential::NetworkKey(ref val) => {
9429                    fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 32>, D>(
9430                        <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
9431                            val,
9432                        ),
9433                        encoder,
9434                        offset + 8,
9435                        _depth,
9436                    )
9437                }
9438                Credential::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
9439            }
9440        }
9441    }
9442
9443    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Credential {
9444        #[inline(always)]
9445        fn new_empty() -> Self {
9446            Self::__SourceBreaking { unknown_ordinal: 0 }
9447        }
9448
9449        #[inline]
9450        unsafe fn decode(
9451            &mut self,
9452            decoder: &mut fidl::encoding::Decoder<'_, D>,
9453            offset: usize,
9454            mut depth: fidl::encoding::Depth,
9455        ) -> fidl::Result<()> {
9456            decoder.debug_check_bounds::<Self>(offset);
9457            #[allow(unused_variables)]
9458            let next_out_of_line = decoder.next_out_of_line();
9459            let handles_before = decoder.remaining_handles();
9460            let (ordinal, inlined, num_bytes, num_handles) =
9461                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
9462
9463            let member_inline_size = match ordinal {
9464                1 => <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
9465                    decoder.context,
9466                ),
9467                0 => return Err(fidl::Error::UnknownUnionTag),
9468                _ => num_bytes as usize,
9469            };
9470
9471            if inlined != (member_inline_size <= 4) {
9472                return Err(fidl::Error::InvalidInlineBitInEnvelope);
9473            }
9474            let _inner_offset;
9475            if inlined {
9476                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
9477                _inner_offset = offset + 8;
9478            } else {
9479                depth.increment()?;
9480                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9481            }
9482            match ordinal {
9483                1 => {
9484                    #[allow(irrefutable_let_patterns)]
9485                    if let Credential::NetworkKey(_) = self {
9486                        // Do nothing, read the value into the object
9487                    } else {
9488                        // Initialize `self` to the right variant
9489                        *self = Credential::NetworkKey(
9490                            fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
9491                        );
9492                    }
9493                    #[allow(irrefutable_let_patterns)]
9494                    if let Credential::NetworkKey(ref mut val) = self {
9495                        fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val, decoder, _inner_offset, depth)?;
9496                    } else {
9497                        unreachable!()
9498                    }
9499                }
9500                #[allow(deprecated)]
9501                ordinal => {
9502                    for _ in 0..num_handles {
9503                        decoder.drop_next_handle()?;
9504                    }
9505                    *self = Credential::__SourceBreaking { unknown_ordinal: ordinal };
9506                }
9507            }
9508            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
9509                return Err(fidl::Error::InvalidNumBytesInEnvelope);
9510            }
9511            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9512                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9513            }
9514            Ok(())
9515        }
9516    }
9517}