Skip to main content

plexus_serde/
plexus_generated.rs

1// automatically generated by the FlatBuffers compiler, do not modify
2// @generated
3extern crate alloc;
4
5#[allow(unused_imports, dead_code)]
6pub mod plexus {
7
8    #[deprecated(
9        since = "2.0.0",
10        note = "Use associated constants instead. This will no longer be generated in 2021."
11    )]
12    pub const ENUM_MIN_CAPABILITY_ORDERING_CONTRACT: u8 = 0;
13    #[deprecated(
14        since = "2.0.0",
15        note = "Use associated constants instead. This will no longer be generated in 2021."
16    )]
17    pub const ENUM_MAX_CAPABILITY_ORDERING_CONTRACT: u8 = 6;
18    #[deprecated(
19        since = "2.0.0",
20        note = "Use associated constants instead. This will no longer be generated in 2021."
21    )]
22    #[allow(non_camel_case_types)]
23    pub const ENUM_VALUES_CAPABILITY_ORDERING_CONTRACT: [CapabilityOrderingContract; 7] = [
24        CapabilityOrderingContract::engine_defined_stable,
25        CapabilityOrderingContract::stable_pass_through,
26        CapabilityOrderingContract::fan_out_deterministic_per_input,
27        CapabilityOrderingContract::deterministic_sort_stable_ties,
28        CapabilityOrderingContract::unspecified_without_sort,
29        CapabilityOrderingContract::stable_concat_or_unspecified_distinct,
30        CapabilityOrderingContract::score_desc_stable_ties,
31    ];
32
33    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
34    #[repr(transparent)]
35    pub struct CapabilityOrderingContract(pub u8);
36    #[allow(non_upper_case_globals)]
37    impl CapabilityOrderingContract {
38        pub const engine_defined_stable: Self = Self(0);
39        pub const stable_pass_through: Self = Self(1);
40        pub const fan_out_deterministic_per_input: Self = Self(2);
41        pub const deterministic_sort_stable_ties: Self = Self(3);
42        pub const unspecified_without_sort: Self = Self(4);
43        pub const stable_concat_or_unspecified_distinct: Self = Self(5);
44        pub const score_desc_stable_ties: Self = Self(6);
45
46        pub const ENUM_MIN: u8 = 0;
47        pub const ENUM_MAX: u8 = 6;
48        pub const ENUM_VALUES: &'static [Self] = &[
49            Self::engine_defined_stable,
50            Self::stable_pass_through,
51            Self::fan_out_deterministic_per_input,
52            Self::deterministic_sort_stable_ties,
53            Self::unspecified_without_sort,
54            Self::stable_concat_or_unspecified_distinct,
55            Self::score_desc_stable_ties,
56        ];
57        /// Returns the variant's name or "" if unknown.
58        pub fn variant_name(self) -> Option<&'static str> {
59            match self {
60                Self::engine_defined_stable => Some("engine_defined_stable"),
61                Self::stable_pass_through => Some("stable_pass_through"),
62                Self::fan_out_deterministic_per_input => Some("fan_out_deterministic_per_input"),
63                Self::deterministic_sort_stable_ties => Some("deterministic_sort_stable_ties"),
64                Self::unspecified_without_sort => Some("unspecified_without_sort"),
65                Self::stable_concat_or_unspecified_distinct => {
66                    Some("stable_concat_or_unspecified_distinct")
67                }
68                Self::score_desc_stable_ties => Some("score_desc_stable_ties"),
69                _ => None,
70            }
71        }
72    }
73    impl ::core::fmt::Debug for CapabilityOrderingContract {
74        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
75            if let Some(name) = self.variant_name() {
76                f.write_str(name)
77            } else {
78                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
79            }
80        }
81    }
82    impl<'a> ::flatbuffers::Follow<'a> for CapabilityOrderingContract {
83        type Inner = Self;
84        #[inline]
85        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
86            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
87            Self(b)
88        }
89    }
90
91    impl ::flatbuffers::Push for CapabilityOrderingContract {
92        type Output = CapabilityOrderingContract;
93        #[inline]
94        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
95            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
96        }
97    }
98
99    impl ::flatbuffers::EndianScalar for CapabilityOrderingContract {
100        type Scalar = u8;
101        #[inline]
102        fn to_little_endian(self) -> u8 {
103            self.0.to_le()
104        }
105        #[inline]
106        #[allow(clippy::wrong_self_convention)]
107        fn from_little_endian(v: u8) -> Self {
108            let b = u8::from_le(v);
109            Self(b)
110        }
111    }
112
113    impl<'a> ::flatbuffers::Verifiable for CapabilityOrderingContract {
114        #[inline]
115        fn run_verifier(
116            v: &mut ::flatbuffers::Verifier,
117            pos: usize,
118        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
119            u8::run_verifier(v, pos)
120        }
121    }
122
123    impl ::flatbuffers::SimpleToVerifyInSlice for CapabilityOrderingContract {}
124    #[deprecated(
125        since = "2.0.0",
126        note = "Use associated constants instead. This will no longer be generated in 2021."
127    )]
128    pub const ENUM_MIN_COL_KIND: u8 = 0;
129    #[deprecated(
130        since = "2.0.0",
131        note = "Use associated constants instead. This will no longer be generated in 2021."
132    )]
133    pub const ENUM_MAX_COL_KIND: u8 = 12;
134    #[deprecated(
135        since = "2.0.0",
136        note = "Use associated constants instead. This will no longer be generated in 2021."
137    )]
138    #[allow(non_camel_case_types)]
139    pub const ENUM_VALUES_COL_KIND: [ColKind; 13] = [
140        ColKind::node,
141        ColKind::rel,
142        ColKind::value,
143        ColKind::bool,
144        ColKind::int64,
145        ColKind::float64,
146        ColKind::string,
147        ColKind::null,
148        ColKind::list,
149        ColKind::map,
150        ColKind::path,
151        ColKind::graph,
152        ColKind::vector,
153    ];
154
155    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
156    #[repr(transparent)]
157    pub struct ColKind(pub u8);
158    #[allow(non_upper_case_globals)]
159    impl ColKind {
160        pub const node: Self = Self(0);
161        pub const rel: Self = Self(1);
162        pub const value: Self = Self(2);
163        pub const bool: Self = Self(3);
164        pub const int64: Self = Self(4);
165        pub const float64: Self = Self(5);
166        pub const string: Self = Self(6);
167        pub const null: Self = Self(7);
168        pub const list: Self = Self(8);
169        pub const map: Self = Self(9);
170        pub const path: Self = Self(10);
171        pub const graph: Self = Self(11);
172        pub const vector: Self = Self(12);
173
174        pub const ENUM_MIN: u8 = 0;
175        pub const ENUM_MAX: u8 = 12;
176        pub const ENUM_VALUES: &'static [Self] = &[
177            Self::node,
178            Self::rel,
179            Self::value,
180            Self::bool,
181            Self::int64,
182            Self::float64,
183            Self::string,
184            Self::null,
185            Self::list,
186            Self::map,
187            Self::path,
188            Self::graph,
189            Self::vector,
190        ];
191        /// Returns the variant's name or "" if unknown.
192        pub fn variant_name(self) -> Option<&'static str> {
193            match self {
194                Self::node => Some("node"),
195                Self::rel => Some("rel"),
196                Self::value => Some("value"),
197                Self::bool => Some("bool"),
198                Self::int64 => Some("int64"),
199                Self::float64 => Some("float64"),
200                Self::string => Some("string"),
201                Self::null => Some("null"),
202                Self::list => Some("list"),
203                Self::map => Some("map"),
204                Self::path => Some("path"),
205                Self::graph => Some("graph"),
206                Self::vector => Some("vector"),
207                _ => None,
208            }
209        }
210    }
211    impl ::core::fmt::Debug for ColKind {
212        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
213            if let Some(name) = self.variant_name() {
214                f.write_str(name)
215            } else {
216                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
217            }
218        }
219    }
220    impl<'a> ::flatbuffers::Follow<'a> for ColKind {
221        type Inner = Self;
222        #[inline]
223        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
224            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
225            Self(b)
226        }
227    }
228
229    impl ::flatbuffers::Push for ColKind {
230        type Output = ColKind;
231        #[inline]
232        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
233            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
234        }
235    }
236
237    impl ::flatbuffers::EndianScalar for ColKind {
238        type Scalar = u8;
239        #[inline]
240        fn to_little_endian(self) -> u8 {
241            self.0.to_le()
242        }
243        #[inline]
244        #[allow(clippy::wrong_self_convention)]
245        fn from_little_endian(v: u8) -> Self {
246            let b = u8::from_le(v);
247            Self(b)
248        }
249    }
250
251    impl<'a> ::flatbuffers::Verifiable for ColKind {
252        #[inline]
253        fn run_verifier(
254            v: &mut ::flatbuffers::Verifier,
255            pos: usize,
256        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
257            u8::run_verifier(v, pos)
258        }
259    }
260
261    impl ::flatbuffers::SimpleToVerifyInSlice for ColKind {}
262    #[deprecated(
263        since = "2.0.0",
264        note = "Use associated constants instead. This will no longer be generated in 2021."
265    )]
266    pub const ENUM_MIN_LOGICAL_TYPE: u8 = 0;
267    #[deprecated(
268        since = "2.0.0",
269        note = "Use associated constants instead. This will no longer be generated in 2021."
270    )]
271    pub const ENUM_MAX_LOGICAL_TYPE: u8 = 11;
272    #[deprecated(
273        since = "2.0.0",
274        note = "Use associated constants instead. This will no longer be generated in 2021."
275    )]
276    #[allow(non_camel_case_types)]
277    pub const ENUM_VALUES_LOGICAL_TYPE: [LogicalType; 12] = [
278        LogicalType::unknown,
279        LogicalType::bool,
280        LogicalType::int64,
281        LogicalType::float64,
282        LogicalType::string,
283        LogicalType::null,
284        LogicalType::list,
285        LogicalType::map,
286        LogicalType::node_ref,
287        LogicalType::rel_ref,
288        LogicalType::path,
289        LogicalType::vector,
290    ];
291
292    /// Structured logical type for a column.
293    /// Added in plan format 0.3.0 alongside the deprecated string field.
294    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
295    #[repr(transparent)]
296    pub struct LogicalType(pub u8);
297    #[allow(non_upper_case_globals)]
298    impl LogicalType {
299        pub const unknown: Self = Self(0);
300        pub const bool: Self = Self(1);
301        pub const int64: Self = Self(2);
302        pub const float64: Self = Self(3);
303        pub const string: Self = Self(4);
304        pub const null: Self = Self(5);
305        pub const list: Self = Self(6);
306        pub const map: Self = Self(7);
307        pub const node_ref: Self = Self(8);
308        pub const rel_ref: Self = Self(9);
309        pub const path: Self = Self(10);
310        pub const vector: Self = Self(11);
311
312        pub const ENUM_MIN: u8 = 0;
313        pub const ENUM_MAX: u8 = 11;
314        pub const ENUM_VALUES: &'static [Self] = &[
315            Self::unknown,
316            Self::bool,
317            Self::int64,
318            Self::float64,
319            Self::string,
320            Self::null,
321            Self::list,
322            Self::map,
323            Self::node_ref,
324            Self::rel_ref,
325            Self::path,
326            Self::vector,
327        ];
328        /// Returns the variant's name or "" if unknown.
329        pub fn variant_name(self) -> Option<&'static str> {
330            match self {
331                Self::unknown => Some("unknown"),
332                Self::bool => Some("bool"),
333                Self::int64 => Some("int64"),
334                Self::float64 => Some("float64"),
335                Self::string => Some("string"),
336                Self::null => Some("null"),
337                Self::list => Some("list"),
338                Self::map => Some("map"),
339                Self::node_ref => Some("node_ref"),
340                Self::rel_ref => Some("rel_ref"),
341                Self::path => Some("path"),
342                Self::vector => Some("vector"),
343                _ => None,
344            }
345        }
346    }
347    impl ::core::fmt::Debug for LogicalType {
348        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
349            if let Some(name) = self.variant_name() {
350                f.write_str(name)
351            } else {
352                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
353            }
354        }
355    }
356    impl<'a> ::flatbuffers::Follow<'a> for LogicalType {
357        type Inner = Self;
358        #[inline]
359        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
360            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
361            Self(b)
362        }
363    }
364
365    impl ::flatbuffers::Push for LogicalType {
366        type Output = LogicalType;
367        #[inline]
368        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
369            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
370        }
371    }
372
373    impl ::flatbuffers::EndianScalar for LogicalType {
374        type Scalar = u8;
375        #[inline]
376        fn to_little_endian(self) -> u8 {
377            self.0.to_le()
378        }
379        #[inline]
380        #[allow(clippy::wrong_self_convention)]
381        fn from_little_endian(v: u8) -> Self {
382            let b = u8::from_le(v);
383            Self(b)
384        }
385    }
386
387    impl<'a> ::flatbuffers::Verifiable for LogicalType {
388        #[inline]
389        fn run_verifier(
390            v: &mut ::flatbuffers::Verifier,
391            pos: usize,
392        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
393            u8::run_verifier(v, pos)
394        }
395    }
396
397    impl ::flatbuffers::SimpleToVerifyInSlice for LogicalType {}
398    #[deprecated(
399        since = "2.0.0",
400        note = "Use associated constants instead. This will no longer be generated in 2021."
401    )]
402    pub const ENUM_MIN_CMP_OP: u8 = 0;
403    #[deprecated(
404        since = "2.0.0",
405        note = "Use associated constants instead. This will no longer be generated in 2021."
406    )]
407    pub const ENUM_MAX_CMP_OP: u8 = 5;
408    #[deprecated(
409        since = "2.0.0",
410        note = "Use associated constants instead. This will no longer be generated in 2021."
411    )]
412    #[allow(non_camel_case_types)]
413    pub const ENUM_VALUES_CMP_OP: [CmpOp; 6] = [
414        CmpOp::eq,
415        CmpOp::ne,
416        CmpOp::lt,
417        CmpOp::gt,
418        CmpOp::le,
419        CmpOp::ge,
420    ];
421
422    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
423    #[repr(transparent)]
424    pub struct CmpOp(pub u8);
425    #[allow(non_upper_case_globals)]
426    impl CmpOp {
427        pub const eq: Self = Self(0);
428        pub const ne: Self = Self(1);
429        pub const lt: Self = Self(2);
430        pub const gt: Self = Self(3);
431        pub const le: Self = Self(4);
432        pub const ge: Self = Self(5);
433
434        pub const ENUM_MIN: u8 = 0;
435        pub const ENUM_MAX: u8 = 5;
436        pub const ENUM_VALUES: &'static [Self] =
437            &[Self::eq, Self::ne, Self::lt, Self::gt, Self::le, Self::ge];
438        /// Returns the variant's name or "" if unknown.
439        pub fn variant_name(self) -> Option<&'static str> {
440            match self {
441                Self::eq => Some("eq"),
442                Self::ne => Some("ne"),
443                Self::lt => Some("lt"),
444                Self::gt => Some("gt"),
445                Self::le => Some("le"),
446                Self::ge => Some("ge"),
447                _ => None,
448            }
449        }
450    }
451    impl ::core::fmt::Debug for CmpOp {
452        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
453            if let Some(name) = self.variant_name() {
454                f.write_str(name)
455            } else {
456                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
457            }
458        }
459    }
460    impl<'a> ::flatbuffers::Follow<'a> for CmpOp {
461        type Inner = Self;
462        #[inline]
463        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
464            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
465            Self(b)
466        }
467    }
468
469    impl ::flatbuffers::Push for CmpOp {
470        type Output = CmpOp;
471        #[inline]
472        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
473            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
474        }
475    }
476
477    impl ::flatbuffers::EndianScalar for CmpOp {
478        type Scalar = u8;
479        #[inline]
480        fn to_little_endian(self) -> u8 {
481            self.0.to_le()
482        }
483        #[inline]
484        #[allow(clippy::wrong_self_convention)]
485        fn from_little_endian(v: u8) -> Self {
486            let b = u8::from_le(v);
487            Self(b)
488        }
489    }
490
491    impl<'a> ::flatbuffers::Verifiable for CmpOp {
492        #[inline]
493        fn run_verifier(
494            v: &mut ::flatbuffers::Verifier,
495            pos: usize,
496        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
497            u8::run_verifier(v, pos)
498        }
499    }
500
501    impl ::flatbuffers::SimpleToVerifyInSlice for CmpOp {}
502    #[deprecated(
503        since = "2.0.0",
504        note = "Use associated constants instead. This will no longer be generated in 2021."
505    )]
506    pub const ENUM_MIN_AGG_FN: u8 = 0;
507    #[deprecated(
508        since = "2.0.0",
509        note = "Use associated constants instead. This will no longer be generated in 2021."
510    )]
511    pub const ENUM_MAX_AGG_FN: u8 = 6;
512    #[deprecated(
513        since = "2.0.0",
514        note = "Use associated constants instead. This will no longer be generated in 2021."
515    )]
516    #[allow(non_camel_case_types)]
517    pub const ENUM_VALUES_AGG_FN: [AggFn; 7] = [
518        AggFn::count_star,
519        AggFn::count,
520        AggFn::sum,
521        AggFn::avg,
522        AggFn::min,
523        AggFn::max,
524        AggFn::collect,
525    ];
526
527    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
528    #[repr(transparent)]
529    pub struct AggFn(pub u8);
530    #[allow(non_upper_case_globals)]
531    impl AggFn {
532        pub const count_star: Self = Self(0);
533        pub const count: Self = Self(1);
534        pub const sum: Self = Self(2);
535        pub const avg: Self = Self(3);
536        pub const min: Self = Self(4);
537        pub const max: Self = Self(5);
538        pub const collect: Self = Self(6);
539
540        pub const ENUM_MIN: u8 = 0;
541        pub const ENUM_MAX: u8 = 6;
542        pub const ENUM_VALUES: &'static [Self] = &[
543            Self::count_star,
544            Self::count,
545            Self::sum,
546            Self::avg,
547            Self::min,
548            Self::max,
549            Self::collect,
550        ];
551        /// Returns the variant's name or "" if unknown.
552        pub fn variant_name(self) -> Option<&'static str> {
553            match self {
554                Self::count_star => Some("count_star"),
555                Self::count => Some("count"),
556                Self::sum => Some("sum"),
557                Self::avg => Some("avg"),
558                Self::min => Some("min"),
559                Self::max => Some("max"),
560                Self::collect => Some("collect"),
561                _ => None,
562            }
563        }
564    }
565    impl ::core::fmt::Debug for AggFn {
566        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
567            if let Some(name) = self.variant_name() {
568                f.write_str(name)
569            } else {
570                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
571            }
572        }
573    }
574    impl<'a> ::flatbuffers::Follow<'a> for AggFn {
575        type Inner = Self;
576        #[inline]
577        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
578            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
579            Self(b)
580        }
581    }
582
583    impl ::flatbuffers::Push for AggFn {
584        type Output = AggFn;
585        #[inline]
586        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
587            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
588        }
589    }
590
591    impl ::flatbuffers::EndianScalar for AggFn {
592        type Scalar = u8;
593        #[inline]
594        fn to_little_endian(self) -> u8 {
595            self.0.to_le()
596        }
597        #[inline]
598        #[allow(clippy::wrong_self_convention)]
599        fn from_little_endian(v: u8) -> Self {
600            let b = u8::from_le(v);
601            Self(b)
602        }
603    }
604
605    impl<'a> ::flatbuffers::Verifiable for AggFn {
606        #[inline]
607        fn run_verifier(
608            v: &mut ::flatbuffers::Verifier,
609            pos: usize,
610        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
611            u8::run_verifier(v, pos)
612        }
613    }
614
615    impl ::flatbuffers::SimpleToVerifyInSlice for AggFn {}
616    #[deprecated(
617        since = "2.0.0",
618        note = "Use associated constants instead. This will no longer be generated in 2021."
619    )]
620    pub const ENUM_MIN_ARITH_OP: u8 = 0;
621    #[deprecated(
622        since = "2.0.0",
623        note = "Use associated constants instead. This will no longer be generated in 2021."
624    )]
625    pub const ENUM_MAX_ARITH_OP: u8 = 3;
626    #[deprecated(
627        since = "2.0.0",
628        note = "Use associated constants instead. This will no longer be generated in 2021."
629    )]
630    #[allow(non_camel_case_types)]
631    pub const ENUM_VALUES_ARITH_OP: [ArithOp; 4] =
632        [ArithOp::add, ArithOp::sub, ArithOp::mul, ArithOp::div];
633
634    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
635    #[repr(transparent)]
636    pub struct ArithOp(pub u8);
637    #[allow(non_upper_case_globals)]
638    impl ArithOp {
639        pub const add: Self = Self(0);
640        pub const sub: Self = Self(1);
641        pub const mul: Self = Self(2);
642        pub const div: Self = Self(3);
643
644        pub const ENUM_MIN: u8 = 0;
645        pub const ENUM_MAX: u8 = 3;
646        pub const ENUM_VALUES: &'static [Self] = &[Self::add, Self::sub, Self::mul, Self::div];
647        /// Returns the variant's name or "" if unknown.
648        pub fn variant_name(self) -> Option<&'static str> {
649            match self {
650                Self::add => Some("add"),
651                Self::sub => Some("sub"),
652                Self::mul => Some("mul"),
653                Self::div => Some("div"),
654                _ => None,
655            }
656        }
657    }
658    impl ::core::fmt::Debug for ArithOp {
659        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
660            if let Some(name) = self.variant_name() {
661                f.write_str(name)
662            } else {
663                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
664            }
665        }
666    }
667    impl<'a> ::flatbuffers::Follow<'a> for ArithOp {
668        type Inner = Self;
669        #[inline]
670        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
671            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
672            Self(b)
673        }
674    }
675
676    impl ::flatbuffers::Push for ArithOp {
677        type Output = ArithOp;
678        #[inline]
679        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
680            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
681        }
682    }
683
684    impl ::flatbuffers::EndianScalar for ArithOp {
685        type Scalar = u8;
686        #[inline]
687        fn to_little_endian(self) -> u8 {
688            self.0.to_le()
689        }
690        #[inline]
691        #[allow(clippy::wrong_self_convention)]
692        fn from_little_endian(v: u8) -> Self {
693            let b = u8::from_le(v);
694            Self(b)
695        }
696    }
697
698    impl<'a> ::flatbuffers::Verifiable for ArithOp {
699        #[inline]
700        fn run_verifier(
701            v: &mut ::flatbuffers::Verifier,
702            pos: usize,
703        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
704            u8::run_verifier(v, pos)
705        }
706    }
707
708    impl ::flatbuffers::SimpleToVerifyInSlice for ArithOp {}
709    #[deprecated(
710        since = "2.0.0",
711        note = "Use associated constants instead. This will no longer be generated in 2021."
712    )]
713    pub const ENUM_MIN_VECTOR_METRIC: u8 = 0;
714    #[deprecated(
715        since = "2.0.0",
716        note = "Use associated constants instead. This will no longer be generated in 2021."
717    )]
718    pub const ENUM_MAX_VECTOR_METRIC: u8 = 2;
719    #[deprecated(
720        since = "2.0.0",
721        note = "Use associated constants instead. This will no longer be generated in 2021."
722    )]
723    #[allow(non_camel_case_types)]
724    pub const ENUM_VALUES_VECTOR_METRIC: [VectorMetric; 3] = [
725        VectorMetric::cosine,
726        VectorMetric::l2,
727        VectorMetric::dot_product,
728    ];
729
730    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
731    #[repr(transparent)]
732    pub struct VectorMetric(pub u8);
733    #[allow(non_upper_case_globals)]
734    impl VectorMetric {
735        pub const cosine: Self = Self(0);
736        pub const l2: Self = Self(1);
737        pub const dot_product: Self = Self(2);
738
739        pub const ENUM_MIN: u8 = 0;
740        pub const ENUM_MAX: u8 = 2;
741        pub const ENUM_VALUES: &'static [Self] = &[Self::cosine, Self::l2, Self::dot_product];
742        /// Returns the variant's name or "" if unknown.
743        pub fn variant_name(self) -> Option<&'static str> {
744            match self {
745                Self::cosine => Some("cosine"),
746                Self::l2 => Some("l2"),
747                Self::dot_product => Some("dot_product"),
748                _ => None,
749            }
750        }
751    }
752    impl ::core::fmt::Debug for VectorMetric {
753        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
754            if let Some(name) = self.variant_name() {
755                f.write_str(name)
756            } else {
757                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
758            }
759        }
760    }
761    impl<'a> ::flatbuffers::Follow<'a> for VectorMetric {
762        type Inner = Self;
763        #[inline]
764        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
765            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
766            Self(b)
767        }
768    }
769
770    impl ::flatbuffers::Push for VectorMetric {
771        type Output = VectorMetric;
772        #[inline]
773        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
774            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
775        }
776    }
777
778    impl ::flatbuffers::EndianScalar for VectorMetric {
779        type Scalar = u8;
780        #[inline]
781        fn to_little_endian(self) -> u8 {
782            self.0.to_le()
783        }
784        #[inline]
785        #[allow(clippy::wrong_self_convention)]
786        fn from_little_endian(v: u8) -> Self {
787            let b = u8::from_le(v);
788            Self(b)
789        }
790    }
791
792    impl<'a> ::flatbuffers::Verifiable for VectorMetric {
793        #[inline]
794        fn run_verifier(
795            v: &mut ::flatbuffers::Verifier,
796            pos: usize,
797        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
798            u8::run_verifier(v, pos)
799        }
800    }
801
802    impl ::flatbuffers::SimpleToVerifyInSlice for VectorMetric {}
803    #[deprecated(
804        since = "2.0.0",
805        note = "Use associated constants instead. This will no longer be generated in 2021."
806    )]
807    pub const ENUM_MIN_EXPR_NODE: u8 = 0;
808    #[deprecated(
809        since = "2.0.0",
810        note = "Use associated constants instead. This will no longer be generated in 2021."
811    )]
812    pub const ENUM_MAX_EXPR_NODE: u8 = 26;
813    #[deprecated(
814        since = "2.0.0",
815        note = "Use associated constants instead. This will no longer be generated in 2021."
816    )]
817    #[allow(non_camel_case_types)]
818    pub const ENUM_VALUES_EXPR_NODE: [ExprNode; 27] = [
819        ExprNode::NONE,
820        ExprNode::ColRefExpr,
821        ExprNode::PropAccessExpr,
822        ExprNode::IntLiteralExpr,
823        ExprNode::FloatLiteralExpr,
824        ExprNode::BoolLiteralExpr,
825        ExprNode::StringLiteralExpr,
826        ExprNode::NullLiteralExpr,
827        ExprNode::CmpExpr,
828        ExprNode::AndExpr,
829        ExprNode::OrExpr,
830        ExprNode::NotExpr,
831        ExprNode::IsNullExpr,
832        ExprNode::IsNotNullExpr,
833        ExprNode::StartsWithExpr,
834        ExprNode::EndsWithExpr,
835        ExprNode::ContainsExpr,
836        ExprNode::InExpr,
837        ExprNode::ListLiteralExpr,
838        ExprNode::MapLiteralExpr,
839        ExprNode::ExistsExpr,
840        ExprNode::ListComprehensionExpr,
841        ExprNode::AggExpr,
842        ExprNode::ArithExpr,
843        ExprNode::ParamExpr,
844        ExprNode::CaseExpr,
845        ExprNode::VectorSimilarityExpr,
846    ];
847
848    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
849    #[repr(transparent)]
850    pub struct ExprNode(pub u8);
851    #[allow(non_upper_case_globals)]
852    impl ExprNode {
853        pub const NONE: Self = Self(0);
854        pub const ColRefExpr: Self = Self(1);
855        pub const PropAccessExpr: Self = Self(2);
856        pub const IntLiteralExpr: Self = Self(3);
857        pub const FloatLiteralExpr: Self = Self(4);
858        pub const BoolLiteralExpr: Self = Self(5);
859        pub const StringLiteralExpr: Self = Self(6);
860        pub const NullLiteralExpr: Self = Self(7);
861        pub const CmpExpr: Self = Self(8);
862        pub const AndExpr: Self = Self(9);
863        pub const OrExpr: Self = Self(10);
864        pub const NotExpr: Self = Self(11);
865        pub const IsNullExpr: Self = Self(12);
866        pub const IsNotNullExpr: Self = Self(13);
867        pub const StartsWithExpr: Self = Self(14);
868        pub const EndsWithExpr: Self = Self(15);
869        pub const ContainsExpr: Self = Self(16);
870        pub const InExpr: Self = Self(17);
871        pub const ListLiteralExpr: Self = Self(18);
872        pub const MapLiteralExpr: Self = Self(19);
873        pub const ExistsExpr: Self = Self(20);
874        pub const ListComprehensionExpr: Self = Self(21);
875        pub const AggExpr: Self = Self(22);
876        pub const ArithExpr: Self = Self(23);
877        pub const ParamExpr: Self = Self(24);
878        pub const CaseExpr: Self = Self(25);
879        pub const VectorSimilarityExpr: Self = Self(26);
880
881        pub const ENUM_MIN: u8 = 0;
882        pub const ENUM_MAX: u8 = 26;
883        pub const ENUM_VALUES: &'static [Self] = &[
884            Self::NONE,
885            Self::ColRefExpr,
886            Self::PropAccessExpr,
887            Self::IntLiteralExpr,
888            Self::FloatLiteralExpr,
889            Self::BoolLiteralExpr,
890            Self::StringLiteralExpr,
891            Self::NullLiteralExpr,
892            Self::CmpExpr,
893            Self::AndExpr,
894            Self::OrExpr,
895            Self::NotExpr,
896            Self::IsNullExpr,
897            Self::IsNotNullExpr,
898            Self::StartsWithExpr,
899            Self::EndsWithExpr,
900            Self::ContainsExpr,
901            Self::InExpr,
902            Self::ListLiteralExpr,
903            Self::MapLiteralExpr,
904            Self::ExistsExpr,
905            Self::ListComprehensionExpr,
906            Self::AggExpr,
907            Self::ArithExpr,
908            Self::ParamExpr,
909            Self::CaseExpr,
910            Self::VectorSimilarityExpr,
911        ];
912        /// Returns the variant's name or "" if unknown.
913        pub fn variant_name(self) -> Option<&'static str> {
914            match self {
915                Self::NONE => Some("NONE"),
916                Self::ColRefExpr => Some("ColRefExpr"),
917                Self::PropAccessExpr => Some("PropAccessExpr"),
918                Self::IntLiteralExpr => Some("IntLiteralExpr"),
919                Self::FloatLiteralExpr => Some("FloatLiteralExpr"),
920                Self::BoolLiteralExpr => Some("BoolLiteralExpr"),
921                Self::StringLiteralExpr => Some("StringLiteralExpr"),
922                Self::NullLiteralExpr => Some("NullLiteralExpr"),
923                Self::CmpExpr => Some("CmpExpr"),
924                Self::AndExpr => Some("AndExpr"),
925                Self::OrExpr => Some("OrExpr"),
926                Self::NotExpr => Some("NotExpr"),
927                Self::IsNullExpr => Some("IsNullExpr"),
928                Self::IsNotNullExpr => Some("IsNotNullExpr"),
929                Self::StartsWithExpr => Some("StartsWithExpr"),
930                Self::EndsWithExpr => Some("EndsWithExpr"),
931                Self::ContainsExpr => Some("ContainsExpr"),
932                Self::InExpr => Some("InExpr"),
933                Self::ListLiteralExpr => Some("ListLiteralExpr"),
934                Self::MapLiteralExpr => Some("MapLiteralExpr"),
935                Self::ExistsExpr => Some("ExistsExpr"),
936                Self::ListComprehensionExpr => Some("ListComprehensionExpr"),
937                Self::AggExpr => Some("AggExpr"),
938                Self::ArithExpr => Some("ArithExpr"),
939                Self::ParamExpr => Some("ParamExpr"),
940                Self::CaseExpr => Some("CaseExpr"),
941                Self::VectorSimilarityExpr => Some("VectorSimilarityExpr"),
942                _ => None,
943            }
944        }
945    }
946    impl ::core::fmt::Debug for ExprNode {
947        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
948            if let Some(name) = self.variant_name() {
949                f.write_str(name)
950            } else {
951                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
952            }
953        }
954    }
955    impl<'a> ::flatbuffers::Follow<'a> for ExprNode {
956        type Inner = Self;
957        #[inline]
958        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
959            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
960            Self(b)
961        }
962    }
963
964    impl ::flatbuffers::Push for ExprNode {
965        type Output = ExprNode;
966        #[inline]
967        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
968            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
969        }
970    }
971
972    impl ::flatbuffers::EndianScalar for ExprNode {
973        type Scalar = u8;
974        #[inline]
975        fn to_little_endian(self) -> u8 {
976            self.0.to_le()
977        }
978        #[inline]
979        #[allow(clippy::wrong_self_convention)]
980        fn from_little_endian(v: u8) -> Self {
981            let b = u8::from_le(v);
982            Self(b)
983        }
984    }
985
986    impl<'a> ::flatbuffers::Verifiable for ExprNode {
987        #[inline]
988        fn run_verifier(
989            v: &mut ::flatbuffers::Verifier,
990            pos: usize,
991        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
992            u8::run_verifier(v, pos)
993        }
994    }
995
996    impl ::flatbuffers::SimpleToVerifyInSlice for ExprNode {}
997    pub struct ExprNodeUnionTableOffset {}
998
999    #[deprecated(
1000        since = "2.0.0",
1001        note = "Use associated constants instead. This will no longer be generated in 2021."
1002    )]
1003    pub const ENUM_MIN_EXPAND_DIR: u8 = 0;
1004    #[deprecated(
1005        since = "2.0.0",
1006        note = "Use associated constants instead. This will no longer be generated in 2021."
1007    )]
1008    pub const ENUM_MAX_EXPAND_DIR: u8 = 2;
1009    #[deprecated(
1010        since = "2.0.0",
1011        note = "Use associated constants instead. This will no longer be generated in 2021."
1012    )]
1013    #[allow(non_camel_case_types)]
1014    pub const ENUM_VALUES_EXPAND_DIR: [ExpandDir; 3] =
1015        [ExpandDir::out, ExpandDir::in_, ExpandDir::both];
1016
1017    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1018    #[repr(transparent)]
1019    pub struct ExpandDir(pub u8);
1020    #[allow(non_upper_case_globals)]
1021    impl ExpandDir {
1022        pub const out: Self = Self(0);
1023        pub const in_: Self = Self(1);
1024        pub const both: Self = Self(2);
1025
1026        pub const ENUM_MIN: u8 = 0;
1027        pub const ENUM_MAX: u8 = 2;
1028        pub const ENUM_VALUES: &'static [Self] = &[Self::out, Self::in_, Self::both];
1029        /// Returns the variant's name or "" if unknown.
1030        pub fn variant_name(self) -> Option<&'static str> {
1031            match self {
1032                Self::out => Some("out"),
1033                Self::in_ => Some("in_"),
1034                Self::both => Some("both"),
1035                _ => None,
1036            }
1037        }
1038    }
1039    impl ::core::fmt::Debug for ExpandDir {
1040        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
1041            if let Some(name) = self.variant_name() {
1042                f.write_str(name)
1043            } else {
1044                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1045            }
1046        }
1047    }
1048    impl<'a> ::flatbuffers::Follow<'a> for ExpandDir {
1049        type Inner = Self;
1050        #[inline]
1051        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1052            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
1053            Self(b)
1054        }
1055    }
1056
1057    impl ::flatbuffers::Push for ExpandDir {
1058        type Output = ExpandDir;
1059        #[inline]
1060        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1061            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
1062        }
1063    }
1064
1065    impl ::flatbuffers::EndianScalar for ExpandDir {
1066        type Scalar = u8;
1067        #[inline]
1068        fn to_little_endian(self) -> u8 {
1069            self.0.to_le()
1070        }
1071        #[inline]
1072        #[allow(clippy::wrong_self_convention)]
1073        fn from_little_endian(v: u8) -> Self {
1074            let b = u8::from_le(v);
1075            Self(b)
1076        }
1077    }
1078
1079    impl<'a> ::flatbuffers::Verifiable for ExpandDir {
1080        #[inline]
1081        fn run_verifier(
1082            v: &mut ::flatbuffers::Verifier,
1083            pos: usize,
1084        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1085            u8::run_verifier(v, pos)
1086        }
1087    }
1088
1089    impl ::flatbuffers::SimpleToVerifyInSlice for ExpandDir {}
1090    #[deprecated(
1091        since = "2.0.0",
1092        note = "Use associated constants instead. This will no longer be generated in 2021."
1093    )]
1094    pub const ENUM_MIN_SORT_DIR: u8 = 0;
1095    #[deprecated(
1096        since = "2.0.0",
1097        note = "Use associated constants instead. This will no longer be generated in 2021."
1098    )]
1099    pub const ENUM_MAX_SORT_DIR: u8 = 1;
1100    #[deprecated(
1101        since = "2.0.0",
1102        note = "Use associated constants instead. This will no longer be generated in 2021."
1103    )]
1104    #[allow(non_camel_case_types)]
1105    pub const ENUM_VALUES_SORT_DIR: [SortDir; 2] = [SortDir::asc, SortDir::desc];
1106
1107    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1108    #[repr(transparent)]
1109    pub struct SortDir(pub u8);
1110    #[allow(non_upper_case_globals)]
1111    impl SortDir {
1112        pub const asc: Self = Self(0);
1113        pub const desc: Self = Self(1);
1114
1115        pub const ENUM_MIN: u8 = 0;
1116        pub const ENUM_MAX: u8 = 1;
1117        pub const ENUM_VALUES: &'static [Self] = &[Self::asc, Self::desc];
1118        /// Returns the variant's name or "" if unknown.
1119        pub fn variant_name(self) -> Option<&'static str> {
1120            match self {
1121                Self::asc => Some("asc"),
1122                Self::desc => Some("desc"),
1123                _ => None,
1124            }
1125        }
1126    }
1127    impl ::core::fmt::Debug for SortDir {
1128        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
1129            if let Some(name) = self.variant_name() {
1130                f.write_str(name)
1131            } else {
1132                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1133            }
1134        }
1135    }
1136    impl<'a> ::flatbuffers::Follow<'a> for SortDir {
1137        type Inner = Self;
1138        #[inline]
1139        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1140            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
1141            Self(b)
1142        }
1143    }
1144
1145    impl ::flatbuffers::Push for SortDir {
1146        type Output = SortDir;
1147        #[inline]
1148        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1149            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
1150        }
1151    }
1152
1153    impl ::flatbuffers::EndianScalar for SortDir {
1154        type Scalar = u8;
1155        #[inline]
1156        fn to_little_endian(self) -> u8 {
1157            self.0.to_le()
1158        }
1159        #[inline]
1160        #[allow(clippy::wrong_self_convention)]
1161        fn from_little_endian(v: u8) -> Self {
1162            let b = u8::from_le(v);
1163            Self(b)
1164        }
1165    }
1166
1167    impl<'a> ::flatbuffers::Verifiable for SortDir {
1168        #[inline]
1169        fn run_verifier(
1170            v: &mut ::flatbuffers::Verifier,
1171            pos: usize,
1172        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1173            u8::run_verifier(v, pos)
1174        }
1175    }
1176
1177    impl ::flatbuffers::SimpleToVerifyInSlice for SortDir {}
1178    #[deprecated(
1179        since = "2.0.0",
1180        note = "Use associated constants instead. This will no longer be generated in 2021."
1181    )]
1182    pub const ENUM_MIN_OP_NODE: u8 = 0;
1183    #[deprecated(
1184        since = "2.0.0",
1185        note = "Use associated constants instead. This will no longer be generated in 2021."
1186    )]
1187    pub const ENUM_MAX_OP_NODE: u8 = 25;
1188    #[deprecated(
1189        since = "2.0.0",
1190        note = "Use associated constants instead. This will no longer be generated in 2021."
1191    )]
1192    #[allow(non_camel_case_types)]
1193    pub const ENUM_VALUES_OP_NODE: [OpNode; 26] = [
1194        OpNode::NONE,
1195        OpNode::ScanNodesOp,
1196        OpNode::ScanRelsOp,
1197        OpNode::ExpandOp,
1198        OpNode::OptionalExpandOp,
1199        OpNode::SemiExpandOp,
1200        OpNode::ExpandVarLenOp,
1201        OpNode::FilterOp,
1202        OpNode::BlockMarkerOp,
1203        OpNode::ProjectOp,
1204        OpNode::AggregateOp,
1205        OpNode::SortOp,
1206        OpNode::LimitOp,
1207        OpNode::UnwindOp,
1208        OpNode::PathConstructOp,
1209        OpNode::UnionOp,
1210        OpNode::CreateNodeOp,
1211        OpNode::CreateRelOp,
1212        OpNode::MergeOp,
1213        OpNode::DeleteOp,
1214        OpNode::SetPropertyOp,
1215        OpNode::RemovePropertyOp,
1216        OpNode::VectorScanOp,
1217        OpNode::RerankOp,
1218        OpNode::ReturnOp,
1219        OpNode::ConstRowOp,
1220    ];
1221
1222    #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1223    #[repr(transparent)]
1224    pub struct OpNode(pub u8);
1225    #[allow(non_upper_case_globals)]
1226    impl OpNode {
1227        pub const NONE: Self = Self(0);
1228        pub const ScanNodesOp: Self = Self(1);
1229        pub const ScanRelsOp: Self = Self(2);
1230        pub const ExpandOp: Self = Self(3);
1231        pub const OptionalExpandOp: Self = Self(4);
1232        pub const SemiExpandOp: Self = Self(5);
1233        pub const ExpandVarLenOp: Self = Self(6);
1234        pub const FilterOp: Self = Self(7);
1235        pub const BlockMarkerOp: Self = Self(8);
1236        pub const ProjectOp: Self = Self(9);
1237        pub const AggregateOp: Self = Self(10);
1238        pub const SortOp: Self = Self(11);
1239        pub const LimitOp: Self = Self(12);
1240        pub const UnwindOp: Self = Self(13);
1241        pub const PathConstructOp: Self = Self(14);
1242        pub const UnionOp: Self = Self(15);
1243        pub const CreateNodeOp: Self = Self(16);
1244        pub const CreateRelOp: Self = Self(17);
1245        pub const MergeOp: Self = Self(18);
1246        pub const DeleteOp: Self = Self(19);
1247        pub const SetPropertyOp: Self = Self(20);
1248        pub const RemovePropertyOp: Self = Self(21);
1249        pub const VectorScanOp: Self = Self(22);
1250        pub const RerankOp: Self = Self(23);
1251        pub const ReturnOp: Self = Self(24);
1252        pub const ConstRowOp: Self = Self(25);
1253
1254        pub const ENUM_MIN: u8 = 0;
1255        pub const ENUM_MAX: u8 = 25;
1256        pub const ENUM_VALUES: &'static [Self] = &[
1257            Self::NONE,
1258            Self::ScanNodesOp,
1259            Self::ScanRelsOp,
1260            Self::ExpandOp,
1261            Self::OptionalExpandOp,
1262            Self::SemiExpandOp,
1263            Self::ExpandVarLenOp,
1264            Self::FilterOp,
1265            Self::BlockMarkerOp,
1266            Self::ProjectOp,
1267            Self::AggregateOp,
1268            Self::SortOp,
1269            Self::LimitOp,
1270            Self::UnwindOp,
1271            Self::PathConstructOp,
1272            Self::UnionOp,
1273            Self::CreateNodeOp,
1274            Self::CreateRelOp,
1275            Self::MergeOp,
1276            Self::DeleteOp,
1277            Self::SetPropertyOp,
1278            Self::RemovePropertyOp,
1279            Self::VectorScanOp,
1280            Self::RerankOp,
1281            Self::ReturnOp,
1282            Self::ConstRowOp,
1283        ];
1284        /// Returns the variant's name or "" if unknown.
1285        pub fn variant_name(self) -> Option<&'static str> {
1286            match self {
1287                Self::NONE => Some("NONE"),
1288                Self::ScanNodesOp => Some("ScanNodesOp"),
1289                Self::ScanRelsOp => Some("ScanRelsOp"),
1290                Self::ExpandOp => Some("ExpandOp"),
1291                Self::OptionalExpandOp => Some("OptionalExpandOp"),
1292                Self::SemiExpandOp => Some("SemiExpandOp"),
1293                Self::ExpandVarLenOp => Some("ExpandVarLenOp"),
1294                Self::FilterOp => Some("FilterOp"),
1295                Self::BlockMarkerOp => Some("BlockMarkerOp"),
1296                Self::ProjectOp => Some("ProjectOp"),
1297                Self::AggregateOp => Some("AggregateOp"),
1298                Self::SortOp => Some("SortOp"),
1299                Self::LimitOp => Some("LimitOp"),
1300                Self::UnwindOp => Some("UnwindOp"),
1301                Self::PathConstructOp => Some("PathConstructOp"),
1302                Self::UnionOp => Some("UnionOp"),
1303                Self::CreateNodeOp => Some("CreateNodeOp"),
1304                Self::CreateRelOp => Some("CreateRelOp"),
1305                Self::MergeOp => Some("MergeOp"),
1306                Self::DeleteOp => Some("DeleteOp"),
1307                Self::SetPropertyOp => Some("SetPropertyOp"),
1308                Self::RemovePropertyOp => Some("RemovePropertyOp"),
1309                Self::VectorScanOp => Some("VectorScanOp"),
1310                Self::RerankOp => Some("RerankOp"),
1311                Self::ReturnOp => Some("ReturnOp"),
1312                Self::ConstRowOp => Some("ConstRowOp"),
1313                _ => None,
1314            }
1315        }
1316    }
1317    impl ::core::fmt::Debug for OpNode {
1318        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
1319            if let Some(name) = self.variant_name() {
1320                f.write_str(name)
1321            } else {
1322                f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1323            }
1324        }
1325    }
1326    impl<'a> ::flatbuffers::Follow<'a> for OpNode {
1327        type Inner = Self;
1328        #[inline]
1329        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1330            let b = unsafe { ::flatbuffers::read_scalar_at::<u8>(buf, loc) };
1331            Self(b)
1332        }
1333    }
1334
1335    impl ::flatbuffers::Push for OpNode {
1336        type Output = OpNode;
1337        #[inline]
1338        unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1339            unsafe { ::flatbuffers::emplace_scalar::<u8>(dst, self.0) };
1340        }
1341    }
1342
1343    impl ::flatbuffers::EndianScalar for OpNode {
1344        type Scalar = u8;
1345        #[inline]
1346        fn to_little_endian(self) -> u8 {
1347            self.0.to_le()
1348        }
1349        #[inline]
1350        #[allow(clippy::wrong_self_convention)]
1351        fn from_little_endian(v: u8) -> Self {
1352            let b = u8::from_le(v);
1353            Self(b)
1354        }
1355    }
1356
1357    impl<'a> ::flatbuffers::Verifiable for OpNode {
1358        #[inline]
1359        fn run_verifier(
1360            v: &mut ::flatbuffers::Verifier,
1361            pos: usize,
1362        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1363            u8::run_verifier(v, pos)
1364        }
1365    }
1366
1367    impl ::flatbuffers::SimpleToVerifyInSlice for OpNode {}
1368    pub struct OpNodeUnionTableOffset {}
1369
1370    pub enum VersionOffset {}
1371    #[derive(Copy, Clone, PartialEq)]
1372
1373    /// Semantic version of the Plexus plan format.
1374    /// Embedded in every serialized PlexusPlan.
1375    pub struct Version<'a> {
1376        pub _tab: ::flatbuffers::Table<'a>,
1377    }
1378
1379    impl<'a> ::flatbuffers::Follow<'a> for Version<'a> {
1380        type Inner = Version<'a>;
1381        #[inline]
1382        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1383            Self {
1384                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
1385            }
1386        }
1387    }
1388
1389    impl<'a> Version<'a> {
1390        pub const VT_MAJOR: ::flatbuffers::VOffsetT = 4;
1391        pub const VT_MINOR: ::flatbuffers::VOffsetT = 6;
1392        pub const VT_PATCH: ::flatbuffers::VOffsetT = 8;
1393        pub const VT_PRODUCER: ::flatbuffers::VOffsetT = 10;
1394
1395        #[inline]
1396        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
1397            Version { _tab: table }
1398        }
1399        #[allow(unused_mut)]
1400        pub fn create<
1401            'bldr: 'args,
1402            'args: 'mut_bldr,
1403            'mut_bldr,
1404            A: ::flatbuffers::Allocator + 'bldr,
1405        >(
1406            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
1407            args: &'args VersionArgs<'args>,
1408        ) -> ::flatbuffers::WIPOffset<Version<'bldr>> {
1409            let mut builder = VersionBuilder::new(_fbb);
1410            if let Some(x) = args.producer {
1411                builder.add_producer(x);
1412            }
1413            builder.add_patch(args.patch);
1414            builder.add_minor(args.minor);
1415            builder.add_major(args.major);
1416            builder.finish()
1417        }
1418
1419        #[inline]
1420        pub fn major(&self) -> u32 {
1421            // Safety:
1422            // Created from valid Table for this object
1423            // which contains a valid value in this slot
1424            unsafe { self._tab.get::<u32>(Version::VT_MAJOR, Some(0)).unwrap() }
1425        }
1426        #[inline]
1427        pub fn minor(&self) -> u32 {
1428            // Safety:
1429            // Created from valid Table for this object
1430            // which contains a valid value in this slot
1431            unsafe { self._tab.get::<u32>(Version::VT_MINOR, Some(0)).unwrap() }
1432        }
1433        #[inline]
1434        pub fn patch(&self) -> u32 {
1435            // Safety:
1436            // Created from valid Table for this object
1437            // which contains a valid value in this slot
1438            unsafe { self._tab.get::<u32>(Version::VT_PATCH, Some(0)).unwrap() }
1439        }
1440        /// Human-readable producer identification, e.g. "plexus-rs 0.1.0".
1441        #[inline]
1442        pub fn producer(&self) -> Option<&'a str> {
1443            // Safety:
1444            // Created from valid Table for this object
1445            // which contains a valid value in this slot
1446            unsafe {
1447                self._tab
1448                    .get::<::flatbuffers::ForwardsUOffset<&str>>(Version::VT_PRODUCER, None)
1449            }
1450        }
1451    }
1452
1453    impl ::flatbuffers::Verifiable for Version<'_> {
1454        #[inline]
1455        fn run_verifier(
1456            v: &mut ::flatbuffers::Verifier,
1457            pos: usize,
1458        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1459            v.visit_table(pos)?
1460                .visit_field::<u32>("major", Self::VT_MAJOR, false)?
1461                .visit_field::<u32>("minor", Self::VT_MINOR, false)?
1462                .visit_field::<u32>("patch", Self::VT_PATCH, false)?
1463                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
1464                    "producer",
1465                    Self::VT_PRODUCER,
1466                    false,
1467                )?
1468                .finish();
1469            Ok(())
1470        }
1471    }
1472    pub struct VersionArgs<'a> {
1473        pub major: u32,
1474        pub minor: u32,
1475        pub patch: u32,
1476        pub producer: Option<::flatbuffers::WIPOffset<&'a str>>,
1477    }
1478    impl<'a> Default for VersionArgs<'a> {
1479        #[inline]
1480        fn default() -> Self {
1481            VersionArgs {
1482                major: 0,
1483                minor: 0,
1484                patch: 0,
1485                producer: None,
1486            }
1487        }
1488    }
1489
1490    pub struct VersionBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
1491        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1492        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
1493    }
1494    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> VersionBuilder<'a, 'b, A> {
1495        #[inline]
1496        pub fn add_major(&mut self, major: u32) {
1497            self.fbb_.push_slot::<u32>(Version::VT_MAJOR, major, 0);
1498        }
1499        #[inline]
1500        pub fn add_minor(&mut self, minor: u32) {
1501            self.fbb_.push_slot::<u32>(Version::VT_MINOR, minor, 0);
1502        }
1503        #[inline]
1504        pub fn add_patch(&mut self, patch: u32) {
1505            self.fbb_.push_slot::<u32>(Version::VT_PATCH, patch, 0);
1506        }
1507        #[inline]
1508        pub fn add_producer(&mut self, producer: ::flatbuffers::WIPOffset<&'b str>) {
1509            self.fbb_
1510                .push_slot_always::<::flatbuffers::WIPOffset<_>>(Version::VT_PRODUCER, producer);
1511        }
1512        #[inline]
1513        pub fn new(
1514            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1515        ) -> VersionBuilder<'a, 'b, A> {
1516            let start = _fbb.start_table();
1517            VersionBuilder {
1518                fbb_: _fbb,
1519                start_: start,
1520            }
1521        }
1522        #[inline]
1523        pub fn finish(self) -> ::flatbuffers::WIPOffset<Version<'a>> {
1524            let o = self.fbb_.end_table(self.start_);
1525            ::flatbuffers::WIPOffset::new(o.value())
1526        }
1527    }
1528
1529    impl ::core::fmt::Debug for Version<'_> {
1530        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1531            let mut ds = f.debug_struct("Version");
1532            ds.field("major", &self.major());
1533            ds.field("minor", &self.minor());
1534            ds.field("patch", &self.patch());
1535            ds.field("producer", &self.producer());
1536            ds.finish()
1537        }
1538    }
1539    pub enum CapabilityVersionRangeOffset {}
1540    #[derive(Copy, Clone, PartialEq)]
1541
1542    /// Capability semver range declaration for engine compatibility.
1543    pub struct CapabilityVersionRange<'a> {
1544        pub _tab: ::flatbuffers::Table<'a>,
1545    }
1546
1547    impl<'a> ::flatbuffers::Follow<'a> for CapabilityVersionRange<'a> {
1548        type Inner = CapabilityVersionRange<'a>;
1549        #[inline]
1550        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1551            Self {
1552                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
1553            }
1554        }
1555    }
1556
1557    impl<'a> CapabilityVersionRange<'a> {
1558        pub const VT_MIN_MAJOR: ::flatbuffers::VOffsetT = 4;
1559        pub const VT_MIN_MINOR: ::flatbuffers::VOffsetT = 6;
1560        pub const VT_MIN_PATCH: ::flatbuffers::VOffsetT = 8;
1561        pub const VT_MAX_MAJOR: ::flatbuffers::VOffsetT = 10;
1562        pub const VT_MAX_MINOR: ::flatbuffers::VOffsetT = 12;
1563        pub const VT_MAX_PATCH: ::flatbuffers::VOffsetT = 14;
1564
1565        #[inline]
1566        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
1567            CapabilityVersionRange { _tab: table }
1568        }
1569        #[allow(unused_mut)]
1570        pub fn create<
1571            'bldr: 'args,
1572            'args: 'mut_bldr,
1573            'mut_bldr,
1574            A: ::flatbuffers::Allocator + 'bldr,
1575        >(
1576            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
1577            args: &'args CapabilityVersionRangeArgs,
1578        ) -> ::flatbuffers::WIPOffset<CapabilityVersionRange<'bldr>> {
1579            let mut builder = CapabilityVersionRangeBuilder::new(_fbb);
1580            builder.add_max_patch(args.max_patch);
1581            builder.add_max_minor(args.max_minor);
1582            builder.add_max_major(args.max_major);
1583            builder.add_min_patch(args.min_patch);
1584            builder.add_min_minor(args.min_minor);
1585            builder.add_min_major(args.min_major);
1586            builder.finish()
1587        }
1588
1589        #[inline]
1590        pub fn min_major(&self) -> u32 {
1591            // Safety:
1592            // Created from valid Table for this object
1593            // which contains a valid value in this slot
1594            unsafe {
1595                self._tab
1596                    .get::<u32>(CapabilityVersionRange::VT_MIN_MAJOR, Some(0))
1597                    .unwrap()
1598            }
1599        }
1600        #[inline]
1601        pub fn min_minor(&self) -> u32 {
1602            // Safety:
1603            // Created from valid Table for this object
1604            // which contains a valid value in this slot
1605            unsafe {
1606                self._tab
1607                    .get::<u32>(CapabilityVersionRange::VT_MIN_MINOR, Some(0))
1608                    .unwrap()
1609            }
1610        }
1611        #[inline]
1612        pub fn min_patch(&self) -> u32 {
1613            // Safety:
1614            // Created from valid Table for this object
1615            // which contains a valid value in this slot
1616            unsafe {
1617                self._tab
1618                    .get::<u32>(CapabilityVersionRange::VT_MIN_PATCH, Some(0))
1619                    .unwrap()
1620            }
1621        }
1622        #[inline]
1623        pub fn max_major(&self) -> u32 {
1624            // Safety:
1625            // Created from valid Table for this object
1626            // which contains a valid value in this slot
1627            unsafe {
1628                self._tab
1629                    .get::<u32>(CapabilityVersionRange::VT_MAX_MAJOR, Some(0))
1630                    .unwrap()
1631            }
1632        }
1633        #[inline]
1634        pub fn max_minor(&self) -> u32 {
1635            // Safety:
1636            // Created from valid Table for this object
1637            // which contains a valid value in this slot
1638            unsafe {
1639                self._tab
1640                    .get::<u32>(CapabilityVersionRange::VT_MAX_MINOR, Some(0))
1641                    .unwrap()
1642            }
1643        }
1644        #[inline]
1645        pub fn max_patch(&self) -> u32 {
1646            // Safety:
1647            // Created from valid Table for this object
1648            // which contains a valid value in this slot
1649            unsafe {
1650                self._tab
1651                    .get::<u32>(CapabilityVersionRange::VT_MAX_PATCH, Some(0))
1652                    .unwrap()
1653            }
1654        }
1655    }
1656
1657    impl ::flatbuffers::Verifiable for CapabilityVersionRange<'_> {
1658        #[inline]
1659        fn run_verifier(
1660            v: &mut ::flatbuffers::Verifier,
1661            pos: usize,
1662        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1663            v.visit_table(pos)?
1664                .visit_field::<u32>("min_major", Self::VT_MIN_MAJOR, false)?
1665                .visit_field::<u32>("min_minor", Self::VT_MIN_MINOR, false)?
1666                .visit_field::<u32>("min_patch", Self::VT_MIN_PATCH, false)?
1667                .visit_field::<u32>("max_major", Self::VT_MAX_MAJOR, false)?
1668                .visit_field::<u32>("max_minor", Self::VT_MAX_MINOR, false)?
1669                .visit_field::<u32>("max_patch", Self::VT_MAX_PATCH, false)?
1670                .finish();
1671            Ok(())
1672        }
1673    }
1674    pub struct CapabilityVersionRangeArgs {
1675        pub min_major: u32,
1676        pub min_minor: u32,
1677        pub min_patch: u32,
1678        pub max_major: u32,
1679        pub max_minor: u32,
1680        pub max_patch: u32,
1681    }
1682    impl<'a> Default for CapabilityVersionRangeArgs {
1683        #[inline]
1684        fn default() -> Self {
1685            CapabilityVersionRangeArgs {
1686                min_major: 0,
1687                min_minor: 0,
1688                min_patch: 0,
1689                max_major: 0,
1690                max_minor: 0,
1691                max_patch: 0,
1692            }
1693        }
1694    }
1695
1696    pub struct CapabilityVersionRangeBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
1697        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1698        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
1699    }
1700    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CapabilityVersionRangeBuilder<'a, 'b, A> {
1701        #[inline]
1702        pub fn add_min_major(&mut self, min_major: u32) {
1703            self.fbb_
1704                .push_slot::<u32>(CapabilityVersionRange::VT_MIN_MAJOR, min_major, 0);
1705        }
1706        #[inline]
1707        pub fn add_min_minor(&mut self, min_minor: u32) {
1708            self.fbb_
1709                .push_slot::<u32>(CapabilityVersionRange::VT_MIN_MINOR, min_minor, 0);
1710        }
1711        #[inline]
1712        pub fn add_min_patch(&mut self, min_patch: u32) {
1713            self.fbb_
1714                .push_slot::<u32>(CapabilityVersionRange::VT_MIN_PATCH, min_patch, 0);
1715        }
1716        #[inline]
1717        pub fn add_max_major(&mut self, max_major: u32) {
1718            self.fbb_
1719                .push_slot::<u32>(CapabilityVersionRange::VT_MAX_MAJOR, max_major, 0);
1720        }
1721        #[inline]
1722        pub fn add_max_minor(&mut self, max_minor: u32) {
1723            self.fbb_
1724                .push_slot::<u32>(CapabilityVersionRange::VT_MAX_MINOR, max_minor, 0);
1725        }
1726        #[inline]
1727        pub fn add_max_patch(&mut self, max_patch: u32) {
1728            self.fbb_
1729                .push_slot::<u32>(CapabilityVersionRange::VT_MAX_PATCH, max_patch, 0);
1730        }
1731        #[inline]
1732        pub fn new(
1733            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1734        ) -> CapabilityVersionRangeBuilder<'a, 'b, A> {
1735            let start = _fbb.start_table();
1736            CapabilityVersionRangeBuilder {
1737                fbb_: _fbb,
1738                start_: start,
1739            }
1740        }
1741        #[inline]
1742        pub fn finish(self) -> ::flatbuffers::WIPOffset<CapabilityVersionRange<'a>> {
1743            let o = self.fbb_.end_table(self.start_);
1744            ::flatbuffers::WIPOffset::new(o.value())
1745        }
1746    }
1747
1748    impl ::core::fmt::Debug for CapabilityVersionRange<'_> {
1749        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1750            let mut ds = f.debug_struct("CapabilityVersionRange");
1751            ds.field("min_major", &self.min_major());
1752            ds.field("min_minor", &self.min_minor());
1753            ds.field("min_patch", &self.min_patch());
1754            ds.field("max_major", &self.max_major());
1755            ds.field("max_minor", &self.max_minor());
1756            ds.field("max_patch", &self.max_patch());
1757            ds.finish()
1758        }
1759    }
1760    pub enum OpOrderingDeclOffset {}
1761    #[derive(Copy, Clone, PartialEq)]
1762
1763    pub struct OpOrderingDecl<'a> {
1764        pub _tab: ::flatbuffers::Table<'a>,
1765    }
1766
1767    impl<'a> ::flatbuffers::Follow<'a> for OpOrderingDecl<'a> {
1768        type Inner = OpOrderingDecl<'a>;
1769        #[inline]
1770        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1771            Self {
1772                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
1773            }
1774        }
1775    }
1776
1777    impl<'a> OpOrderingDecl<'a> {
1778        pub const VT_OP: ::flatbuffers::VOffsetT = 4;
1779        pub const VT_CONTRACT: ::flatbuffers::VOffsetT = 6;
1780
1781        #[inline]
1782        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
1783            OpOrderingDecl { _tab: table }
1784        }
1785        #[allow(unused_mut)]
1786        pub fn create<
1787            'bldr: 'args,
1788            'args: 'mut_bldr,
1789            'mut_bldr,
1790            A: ::flatbuffers::Allocator + 'bldr,
1791        >(
1792            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
1793            args: &'args OpOrderingDeclArgs<'args>,
1794        ) -> ::flatbuffers::WIPOffset<OpOrderingDecl<'bldr>> {
1795            let mut builder = OpOrderingDeclBuilder::new(_fbb);
1796            if let Some(x) = args.op {
1797                builder.add_op(x);
1798            }
1799            builder.add_contract(args.contract);
1800            builder.finish()
1801        }
1802
1803        #[inline]
1804        pub fn op(&self) -> Option<&'a str> {
1805            // Safety:
1806            // Created from valid Table for this object
1807            // which contains a valid value in this slot
1808            unsafe {
1809                self._tab
1810                    .get::<::flatbuffers::ForwardsUOffset<&str>>(OpOrderingDecl::VT_OP, None)
1811            }
1812        }
1813        #[inline]
1814        pub fn contract(&self) -> CapabilityOrderingContract {
1815            // Safety:
1816            // Created from valid Table for this object
1817            // which contains a valid value in this slot
1818            unsafe {
1819                self._tab
1820                    .get::<CapabilityOrderingContract>(
1821                        OpOrderingDecl::VT_CONTRACT,
1822                        Some(CapabilityOrderingContract::engine_defined_stable),
1823                    )
1824                    .unwrap()
1825            }
1826        }
1827    }
1828
1829    impl ::flatbuffers::Verifiable for OpOrderingDecl<'_> {
1830        #[inline]
1831        fn run_verifier(
1832            v: &mut ::flatbuffers::Verifier,
1833            pos: usize,
1834        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
1835            v.visit_table(pos)?
1836                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("op", Self::VT_OP, false)?
1837                .visit_field::<CapabilityOrderingContract>("contract", Self::VT_CONTRACT, false)?
1838                .finish();
1839            Ok(())
1840        }
1841    }
1842    pub struct OpOrderingDeclArgs<'a> {
1843        pub op: Option<::flatbuffers::WIPOffset<&'a str>>,
1844        pub contract: CapabilityOrderingContract,
1845    }
1846    impl<'a> Default for OpOrderingDeclArgs<'a> {
1847        #[inline]
1848        fn default() -> Self {
1849            OpOrderingDeclArgs {
1850                op: None,
1851                contract: CapabilityOrderingContract::engine_defined_stable,
1852            }
1853        }
1854    }
1855
1856    pub struct OpOrderingDeclBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
1857        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1858        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
1859    }
1860    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> OpOrderingDeclBuilder<'a, 'b, A> {
1861        #[inline]
1862        pub fn add_op(&mut self, op: ::flatbuffers::WIPOffset<&'b str>) {
1863            self.fbb_
1864                .push_slot_always::<::flatbuffers::WIPOffset<_>>(OpOrderingDecl::VT_OP, op);
1865        }
1866        #[inline]
1867        pub fn add_contract(&mut self, contract: CapabilityOrderingContract) {
1868            self.fbb_.push_slot::<CapabilityOrderingContract>(
1869                OpOrderingDecl::VT_CONTRACT,
1870                contract,
1871                CapabilityOrderingContract::engine_defined_stable,
1872            );
1873        }
1874        #[inline]
1875        pub fn new(
1876            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
1877        ) -> OpOrderingDeclBuilder<'a, 'b, A> {
1878            let start = _fbb.start_table();
1879            OpOrderingDeclBuilder {
1880                fbb_: _fbb,
1881                start_: start,
1882            }
1883        }
1884        #[inline]
1885        pub fn finish(self) -> ::flatbuffers::WIPOffset<OpOrderingDecl<'a>> {
1886            let o = self.fbb_.end_table(self.start_);
1887            ::flatbuffers::WIPOffset::new(o.value())
1888        }
1889    }
1890
1891    impl ::core::fmt::Debug for OpOrderingDecl<'_> {
1892        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1893            let mut ds = f.debug_struct("OpOrderingDecl");
1894            ds.field("op", &self.op());
1895            ds.field("contract", &self.contract());
1896            ds.finish()
1897        }
1898    }
1899    pub enum EngineCapabilityDeclOffset {}
1900    #[derive(Copy, Clone, PartialEq)]
1901
1902    /// FlatBuffer block for machine-readable engine capability declaration.
1903    pub struct EngineCapabilityDecl<'a> {
1904        pub _tab: ::flatbuffers::Table<'a>,
1905    }
1906
1907    impl<'a> ::flatbuffers::Follow<'a> for EngineCapabilityDecl<'a> {
1908        type Inner = EngineCapabilityDecl<'a>;
1909        #[inline]
1910        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1911            Self {
1912                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
1913            }
1914        }
1915    }
1916
1917    impl<'a> EngineCapabilityDecl<'a> {
1918        pub const VT_VERSION_RANGE: ::flatbuffers::VOffsetT = 4;
1919        pub const VT_SUPPORTED_OPS: ::flatbuffers::VOffsetT = 6;
1920        pub const VT_SUPPORTED_EXPRS: ::flatbuffers::VOffsetT = 8;
1921        pub const VT_OP_ORDERING: ::flatbuffers::VOffsetT = 10;
1922        pub const VT_SUPPORTS_GRAPH_REF: ::flatbuffers::VOffsetT = 12;
1923        pub const VT_SUPPORTS_MULTI_GRAPH: ::flatbuffers::VOffsetT = 14;
1924        pub const VT_SUPPORTS_GRAPH_PARAMS: ::flatbuffers::VOffsetT = 16;
1925
1926        #[inline]
1927        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
1928            EngineCapabilityDecl { _tab: table }
1929        }
1930        #[allow(unused_mut)]
1931        pub fn create<
1932            'bldr: 'args,
1933            'args: 'mut_bldr,
1934            'mut_bldr,
1935            A: ::flatbuffers::Allocator + 'bldr,
1936        >(
1937            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
1938            args: &'args EngineCapabilityDeclArgs<'args>,
1939        ) -> ::flatbuffers::WIPOffset<EngineCapabilityDecl<'bldr>> {
1940            let mut builder = EngineCapabilityDeclBuilder::new(_fbb);
1941            if let Some(x) = args.op_ordering {
1942                builder.add_op_ordering(x);
1943            }
1944            if let Some(x) = args.supported_exprs {
1945                builder.add_supported_exprs(x);
1946            }
1947            if let Some(x) = args.supported_ops {
1948                builder.add_supported_ops(x);
1949            }
1950            if let Some(x) = args.version_range {
1951                builder.add_version_range(x);
1952            }
1953            builder.add_supports_graph_params(args.supports_graph_params);
1954            builder.add_supports_multi_graph(args.supports_multi_graph);
1955            builder.add_supports_graph_ref(args.supports_graph_ref);
1956            builder.finish()
1957        }
1958
1959        #[inline]
1960        pub fn version_range(&self) -> CapabilityVersionRange<'a> {
1961            // Safety:
1962            // Created from valid Table for this object
1963            // which contains a valid value in this slot
1964            unsafe {
1965                self._tab
1966                    .get::<::flatbuffers::ForwardsUOffset<CapabilityVersionRange>>(
1967                        EngineCapabilityDecl::VT_VERSION_RANGE,
1968                        None,
1969                    )
1970                    .unwrap()
1971            }
1972        }
1973        #[inline]
1974        pub fn supported_ops(
1975            &self,
1976        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
1977            // Safety:
1978            // Created from valid Table for this object
1979            // which contains a valid value in this slot
1980            unsafe {
1981                self._tab.get::<::flatbuffers::ForwardsUOffset<
1982                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
1983                >>(EngineCapabilityDecl::VT_SUPPORTED_OPS, None)
1984            }
1985        }
1986        #[inline]
1987        pub fn supported_exprs(
1988            &self,
1989        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
1990            // Safety:
1991            // Created from valid Table for this object
1992            // which contains a valid value in this slot
1993            unsafe {
1994                self._tab.get::<::flatbuffers::ForwardsUOffset<
1995                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
1996                >>(EngineCapabilityDecl::VT_SUPPORTED_EXPRS, None)
1997            }
1998        }
1999        #[inline]
2000        pub fn op_ordering(
2001            &self,
2002        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<OpOrderingDecl<'a>>>>
2003        {
2004            // Safety:
2005            // Created from valid Table for this object
2006            // which contains a valid value in this slot
2007            unsafe {
2008                self._tab.get::<::flatbuffers::ForwardsUOffset<
2009                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<OpOrderingDecl>>,
2010                >>(EngineCapabilityDecl::VT_OP_ORDERING, None)
2011            }
2012        }
2013        #[inline]
2014        pub fn supports_graph_ref(&self) -> bool {
2015            // Safety:
2016            // Created from valid Table for this object
2017            // which contains a valid value in this slot
2018            unsafe {
2019                self._tab
2020                    .get::<bool>(EngineCapabilityDecl::VT_SUPPORTS_GRAPH_REF, Some(false))
2021                    .unwrap()
2022            }
2023        }
2024        #[inline]
2025        pub fn supports_multi_graph(&self) -> bool {
2026            // Safety:
2027            // Created from valid Table for this object
2028            // which contains a valid value in this slot
2029            unsafe {
2030                self._tab
2031                    .get::<bool>(EngineCapabilityDecl::VT_SUPPORTS_MULTI_GRAPH, Some(false))
2032                    .unwrap()
2033            }
2034        }
2035        #[inline]
2036        pub fn supports_graph_params(&self) -> bool {
2037            // Safety:
2038            // Created from valid Table for this object
2039            // which contains a valid value in this slot
2040            unsafe {
2041                self._tab
2042                    .get::<bool>(EngineCapabilityDecl::VT_SUPPORTS_GRAPH_PARAMS, Some(false))
2043                    .unwrap()
2044            }
2045        }
2046    }
2047
2048    impl ::flatbuffers::Verifiable for EngineCapabilityDecl<'_> {
2049        #[inline]
2050        fn run_verifier(
2051            v: &mut ::flatbuffers::Verifier,
2052            pos: usize,
2053        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2054            v.visit_table(pos)?
2055                .visit_field::<::flatbuffers::ForwardsUOffset<CapabilityVersionRange>>(
2056                    "version_range",
2057                    Self::VT_VERSION_RANGE,
2058                    true,
2059                )?
2060                .visit_field::<::flatbuffers::ForwardsUOffset<
2061                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
2062                >>("supported_ops", Self::VT_SUPPORTED_OPS, false)?
2063                .visit_field::<::flatbuffers::ForwardsUOffset<
2064                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
2065                >>("supported_exprs", Self::VT_SUPPORTED_EXPRS, false)?
2066                .visit_field::<::flatbuffers::ForwardsUOffset<
2067                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<OpOrderingDecl>>,
2068                >>("op_ordering", Self::VT_OP_ORDERING, false)?
2069                .visit_field::<bool>("supports_graph_ref", Self::VT_SUPPORTS_GRAPH_REF, false)?
2070                .visit_field::<bool>("supports_multi_graph", Self::VT_SUPPORTS_MULTI_GRAPH, false)?
2071                .visit_field::<bool>(
2072                    "supports_graph_params",
2073                    Self::VT_SUPPORTS_GRAPH_PARAMS,
2074                    false,
2075                )?
2076                .finish();
2077            Ok(())
2078        }
2079    }
2080    pub struct EngineCapabilityDeclArgs<'a> {
2081        pub version_range: Option<::flatbuffers::WIPOffset<CapabilityVersionRange<'a>>>,
2082        pub supported_ops: Option<
2083            ::flatbuffers::WIPOffset<
2084                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
2085            >,
2086        >,
2087        pub supported_exprs: Option<
2088            ::flatbuffers::WIPOffset<
2089                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
2090            >,
2091        >,
2092        pub op_ordering: Option<
2093            ::flatbuffers::WIPOffset<
2094                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<OpOrderingDecl<'a>>>,
2095            >,
2096        >,
2097        pub supports_graph_ref: bool,
2098        pub supports_multi_graph: bool,
2099        pub supports_graph_params: bool,
2100    }
2101    impl<'a> Default for EngineCapabilityDeclArgs<'a> {
2102        #[inline]
2103        fn default() -> Self {
2104            EngineCapabilityDeclArgs {
2105                version_range: None, // required field
2106                supported_ops: None,
2107                supported_exprs: None,
2108                op_ordering: None,
2109                supports_graph_ref: false,
2110                supports_multi_graph: false,
2111                supports_graph_params: false,
2112            }
2113        }
2114    }
2115
2116    pub struct EngineCapabilityDeclBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2117        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2118        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2119    }
2120    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> EngineCapabilityDeclBuilder<'a, 'b, A> {
2121        #[inline]
2122        pub fn add_version_range(
2123            &mut self,
2124            version_range: ::flatbuffers::WIPOffset<CapabilityVersionRange<'b>>,
2125        ) {
2126            self.fbb_
2127                .push_slot_always::<::flatbuffers::WIPOffset<CapabilityVersionRange>>(
2128                    EngineCapabilityDecl::VT_VERSION_RANGE,
2129                    version_range,
2130                );
2131        }
2132        #[inline]
2133        pub fn add_supported_ops(
2134            &mut self,
2135            supported_ops: ::flatbuffers::WIPOffset<
2136                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
2137            >,
2138        ) {
2139            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
2140                EngineCapabilityDecl::VT_SUPPORTED_OPS,
2141                supported_ops,
2142            );
2143        }
2144        #[inline]
2145        pub fn add_supported_exprs(
2146            &mut self,
2147            supported_exprs: ::flatbuffers::WIPOffset<
2148                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
2149            >,
2150        ) {
2151            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
2152                EngineCapabilityDecl::VT_SUPPORTED_EXPRS,
2153                supported_exprs,
2154            );
2155        }
2156        #[inline]
2157        pub fn add_op_ordering(
2158            &mut self,
2159            op_ordering: ::flatbuffers::WIPOffset<
2160                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<OpOrderingDecl<'b>>>,
2161            >,
2162        ) {
2163            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
2164                EngineCapabilityDecl::VT_OP_ORDERING,
2165                op_ordering,
2166            );
2167        }
2168        #[inline]
2169        pub fn add_supports_graph_ref(&mut self, supports_graph_ref: bool) {
2170            self.fbb_.push_slot::<bool>(
2171                EngineCapabilityDecl::VT_SUPPORTS_GRAPH_REF,
2172                supports_graph_ref,
2173                false,
2174            );
2175        }
2176        #[inline]
2177        pub fn add_supports_multi_graph(&mut self, supports_multi_graph: bool) {
2178            self.fbb_.push_slot::<bool>(
2179                EngineCapabilityDecl::VT_SUPPORTS_MULTI_GRAPH,
2180                supports_multi_graph,
2181                false,
2182            );
2183        }
2184        #[inline]
2185        pub fn add_supports_graph_params(&mut self, supports_graph_params: bool) {
2186            self.fbb_.push_slot::<bool>(
2187                EngineCapabilityDecl::VT_SUPPORTS_GRAPH_PARAMS,
2188                supports_graph_params,
2189                false,
2190            );
2191        }
2192        #[inline]
2193        pub fn new(
2194            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2195        ) -> EngineCapabilityDeclBuilder<'a, 'b, A> {
2196            let start = _fbb.start_table();
2197            EngineCapabilityDeclBuilder {
2198                fbb_: _fbb,
2199                start_: start,
2200            }
2201        }
2202        #[inline]
2203        pub fn finish(self) -> ::flatbuffers::WIPOffset<EngineCapabilityDecl<'a>> {
2204            let o = self.fbb_.end_table(self.start_);
2205            self.fbb_
2206                .required(o, EngineCapabilityDecl::VT_VERSION_RANGE, "version_range");
2207            ::flatbuffers::WIPOffset::new(o.value())
2208        }
2209    }
2210
2211    impl ::core::fmt::Debug for EngineCapabilityDecl<'_> {
2212        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2213            let mut ds = f.debug_struct("EngineCapabilityDecl");
2214            ds.field("version_range", &self.version_range());
2215            ds.field("supported_ops", &self.supported_ops());
2216            ds.field("supported_exprs", &self.supported_exprs());
2217            ds.field("op_ordering", &self.op_ordering());
2218            ds.field("supports_graph_ref", &self.supports_graph_ref());
2219            ds.field("supports_multi_graph", &self.supports_multi_graph());
2220            ds.field("supports_graph_params", &self.supports_graph_params());
2221            ds.finish()
2222        }
2223    }
2224    pub enum ColDefOffset {}
2225    #[derive(Copy, Clone, PartialEq)]
2226
2227    pub struct ColDef<'a> {
2228        pub _tab: ::flatbuffers::Table<'a>,
2229    }
2230
2231    impl<'a> ::flatbuffers::Follow<'a> for ColDef<'a> {
2232        type Inner = ColDef<'a>;
2233        #[inline]
2234        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2235            Self {
2236                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2237            }
2238        }
2239    }
2240
2241    impl<'a> ColDef<'a> {
2242        pub const VT_NAME: ::flatbuffers::VOffsetT = 4;
2243        pub const VT_KIND: ::flatbuffers::VOffsetT = 6;
2244        pub const VT_LOGICAL_TYPE: ::flatbuffers::VOffsetT = 8;
2245        pub const VT_LOGICAL_TYPE_KIND: ::flatbuffers::VOffsetT = 10;
2246        pub const VT_VECTOR_ELEMENT_TYPE: ::flatbuffers::VOffsetT = 12;
2247        pub const VT_VECTOR_DIMENSION: ::flatbuffers::VOffsetT = 14;
2248
2249        #[inline]
2250        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2251            ColDef { _tab: table }
2252        }
2253        #[allow(unused_mut)]
2254        pub fn create<
2255            'bldr: 'args,
2256            'args: 'mut_bldr,
2257            'mut_bldr,
2258            A: ::flatbuffers::Allocator + 'bldr,
2259        >(
2260            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2261            args: &'args ColDefArgs<'args>,
2262        ) -> ::flatbuffers::WIPOffset<ColDef<'bldr>> {
2263            let mut builder = ColDefBuilder::new(_fbb);
2264            builder.add_vector_dimension(args.vector_dimension);
2265            if let Some(x) = args.vector_element_type {
2266                builder.add_vector_element_type(x);
2267            }
2268            if let Some(x) = args.logical_type {
2269                builder.add_logical_type(x);
2270            }
2271            if let Some(x) = args.name {
2272                builder.add_name(x);
2273            }
2274            builder.add_logical_type_kind(args.logical_type_kind);
2275            builder.add_kind(args.kind);
2276            builder.finish()
2277        }
2278
2279        #[inline]
2280        pub fn name(&self) -> Option<&'a str> {
2281            // Safety:
2282            // Created from valid Table for this object
2283            // which contains a valid value in this slot
2284            unsafe {
2285                self._tab
2286                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ColDef::VT_NAME, None)
2287            }
2288        }
2289        #[inline]
2290        pub fn kind(&self) -> ColKind {
2291            // Safety:
2292            // Created from valid Table for this object
2293            // which contains a valid value in this slot
2294            unsafe {
2295                self._tab
2296                    .get::<ColKind>(ColDef::VT_KIND, Some(ColKind::value))
2297                    .unwrap()
2298            }
2299        }
2300        #[inline]
2301        pub fn logical_type(&self) -> Option<&'a str> {
2302            // Safety:
2303            // Created from valid Table for this object
2304            // which contains a valid value in this slot
2305            unsafe {
2306                self._tab
2307                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ColDef::VT_LOGICAL_TYPE, None)
2308            }
2309        }
2310        #[inline]
2311        pub fn logical_type_kind(&self) -> LogicalType {
2312            // Safety:
2313            // Created from valid Table for this object
2314            // which contains a valid value in this slot
2315            unsafe {
2316                self._tab
2317                    .get::<LogicalType>(ColDef::VT_LOGICAL_TYPE_KIND, Some(LogicalType::unknown))
2318                    .unwrap()
2319            }
2320        }
2321        #[inline]
2322        pub fn vector_element_type(&self) -> Option<&'a str> {
2323            // Safety:
2324            // Created from valid Table for this object
2325            // which contains a valid value in this slot
2326            unsafe {
2327                self._tab.get::<::flatbuffers::ForwardsUOffset<&str>>(
2328                    ColDef::VT_VECTOR_ELEMENT_TYPE,
2329                    None,
2330                )
2331            }
2332        }
2333        #[inline]
2334        pub fn vector_dimension(&self) -> u32 {
2335            // Safety:
2336            // Created from valid Table for this object
2337            // which contains a valid value in this slot
2338            unsafe {
2339                self._tab
2340                    .get::<u32>(ColDef::VT_VECTOR_DIMENSION, Some(0))
2341                    .unwrap()
2342            }
2343        }
2344    }
2345
2346    impl ::flatbuffers::Verifiable for ColDef<'_> {
2347        #[inline]
2348        fn run_verifier(
2349            v: &mut ::flatbuffers::Verifier,
2350            pos: usize,
2351        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2352            v.visit_table(pos)?
2353                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
2354                .visit_field::<ColKind>("kind", Self::VT_KIND, false)?
2355                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
2356                    "logical_type",
2357                    Self::VT_LOGICAL_TYPE,
2358                    false,
2359                )?
2360                .visit_field::<LogicalType>("logical_type_kind", Self::VT_LOGICAL_TYPE_KIND, false)?
2361                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
2362                    "vector_element_type",
2363                    Self::VT_VECTOR_ELEMENT_TYPE,
2364                    false,
2365                )?
2366                .visit_field::<u32>("vector_dimension", Self::VT_VECTOR_DIMENSION, false)?
2367                .finish();
2368            Ok(())
2369        }
2370    }
2371    pub struct ColDefArgs<'a> {
2372        pub name: Option<::flatbuffers::WIPOffset<&'a str>>,
2373        pub kind: ColKind,
2374        pub logical_type: Option<::flatbuffers::WIPOffset<&'a str>>,
2375        pub logical_type_kind: LogicalType,
2376        pub vector_element_type: Option<::flatbuffers::WIPOffset<&'a str>>,
2377        pub vector_dimension: u32,
2378    }
2379    impl<'a> Default for ColDefArgs<'a> {
2380        #[inline]
2381        fn default() -> Self {
2382            ColDefArgs {
2383                name: None,
2384                kind: ColKind::value,
2385                logical_type: None,
2386                logical_type_kind: LogicalType::unknown,
2387                vector_element_type: None,
2388                vector_dimension: 0,
2389            }
2390        }
2391    }
2392
2393    pub struct ColDefBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2394        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2395        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2396    }
2397    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ColDefBuilder<'a, 'b, A> {
2398        #[inline]
2399        pub fn add_name(&mut self, name: ::flatbuffers::WIPOffset<&'b str>) {
2400            self.fbb_
2401                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ColDef::VT_NAME, name);
2402        }
2403        #[inline]
2404        pub fn add_kind(&mut self, kind: ColKind) {
2405            self.fbb_
2406                .push_slot::<ColKind>(ColDef::VT_KIND, kind, ColKind::value);
2407        }
2408        #[inline]
2409        pub fn add_logical_type(&mut self, logical_type: ::flatbuffers::WIPOffset<&'b str>) {
2410            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
2411                ColDef::VT_LOGICAL_TYPE,
2412                logical_type,
2413            );
2414        }
2415        #[inline]
2416        pub fn add_logical_type_kind(&mut self, logical_type_kind: LogicalType) {
2417            self.fbb_.push_slot::<LogicalType>(
2418                ColDef::VT_LOGICAL_TYPE_KIND,
2419                logical_type_kind,
2420                LogicalType::unknown,
2421            );
2422        }
2423        #[inline]
2424        pub fn add_vector_element_type(
2425            &mut self,
2426            vector_element_type: ::flatbuffers::WIPOffset<&'b str>,
2427        ) {
2428            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
2429                ColDef::VT_VECTOR_ELEMENT_TYPE,
2430                vector_element_type,
2431            );
2432        }
2433        #[inline]
2434        pub fn add_vector_dimension(&mut self, vector_dimension: u32) {
2435            self.fbb_
2436                .push_slot::<u32>(ColDef::VT_VECTOR_DIMENSION, vector_dimension, 0);
2437        }
2438        #[inline]
2439        pub fn new(
2440            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2441        ) -> ColDefBuilder<'a, 'b, A> {
2442            let start = _fbb.start_table();
2443            ColDefBuilder {
2444                fbb_: _fbb,
2445                start_: start,
2446            }
2447        }
2448        #[inline]
2449        pub fn finish(self) -> ::flatbuffers::WIPOffset<ColDef<'a>> {
2450            let o = self.fbb_.end_table(self.start_);
2451            ::flatbuffers::WIPOffset::new(o.value())
2452        }
2453    }
2454
2455    impl ::core::fmt::Debug for ColDef<'_> {
2456        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2457            let mut ds = f.debug_struct("ColDef");
2458            ds.field("name", &self.name());
2459            ds.field("kind", &self.kind());
2460            ds.field("logical_type", &self.logical_type());
2461            ds.field("logical_type_kind", &self.logical_type_kind());
2462            ds.field("vector_element_type", &self.vector_element_type());
2463            ds.field("vector_dimension", &self.vector_dimension());
2464            ds.finish()
2465        }
2466    }
2467    pub enum ColRefExprOffset {}
2468    #[derive(Copy, Clone, PartialEq)]
2469
2470    pub struct ColRefExpr<'a> {
2471        pub _tab: ::flatbuffers::Table<'a>,
2472    }
2473
2474    impl<'a> ::flatbuffers::Follow<'a> for ColRefExpr<'a> {
2475        type Inner = ColRefExpr<'a>;
2476        #[inline]
2477        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2478            Self {
2479                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2480            }
2481        }
2482    }
2483
2484    impl<'a> ColRefExpr<'a> {
2485        pub const VT_IDX: ::flatbuffers::VOffsetT = 4;
2486
2487        #[inline]
2488        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2489            ColRefExpr { _tab: table }
2490        }
2491        #[allow(unused_mut)]
2492        pub fn create<
2493            'bldr: 'args,
2494            'args: 'mut_bldr,
2495            'mut_bldr,
2496            A: ::flatbuffers::Allocator + 'bldr,
2497        >(
2498            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2499            args: &'args ColRefExprArgs,
2500        ) -> ::flatbuffers::WIPOffset<ColRefExpr<'bldr>> {
2501            let mut builder = ColRefExprBuilder::new(_fbb);
2502            builder.add_idx(args.idx);
2503            builder.finish()
2504        }
2505
2506        #[inline]
2507        pub fn idx(&self) -> u32 {
2508            // Safety:
2509            // Created from valid Table for this object
2510            // which contains a valid value in this slot
2511            unsafe { self._tab.get::<u32>(ColRefExpr::VT_IDX, Some(0)).unwrap() }
2512        }
2513    }
2514
2515    impl ::flatbuffers::Verifiable for ColRefExpr<'_> {
2516        #[inline]
2517        fn run_verifier(
2518            v: &mut ::flatbuffers::Verifier,
2519            pos: usize,
2520        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2521            v.visit_table(pos)?
2522                .visit_field::<u32>("idx", Self::VT_IDX, false)?
2523                .finish();
2524            Ok(())
2525        }
2526    }
2527    pub struct ColRefExprArgs {
2528        pub idx: u32,
2529    }
2530    impl<'a> Default for ColRefExprArgs {
2531        #[inline]
2532        fn default() -> Self {
2533            ColRefExprArgs { idx: 0 }
2534        }
2535    }
2536
2537    pub struct ColRefExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2538        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2539        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2540    }
2541    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ColRefExprBuilder<'a, 'b, A> {
2542        #[inline]
2543        pub fn add_idx(&mut self, idx: u32) {
2544            self.fbb_.push_slot::<u32>(ColRefExpr::VT_IDX, idx, 0);
2545        }
2546        #[inline]
2547        pub fn new(
2548            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2549        ) -> ColRefExprBuilder<'a, 'b, A> {
2550            let start = _fbb.start_table();
2551            ColRefExprBuilder {
2552                fbb_: _fbb,
2553                start_: start,
2554            }
2555        }
2556        #[inline]
2557        pub fn finish(self) -> ::flatbuffers::WIPOffset<ColRefExpr<'a>> {
2558            let o = self.fbb_.end_table(self.start_);
2559            ::flatbuffers::WIPOffset::new(o.value())
2560        }
2561    }
2562
2563    impl ::core::fmt::Debug for ColRefExpr<'_> {
2564        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2565            let mut ds = f.debug_struct("ColRefExpr");
2566            ds.field("idx", &self.idx());
2567            ds.finish()
2568        }
2569    }
2570    pub enum PropAccessExprOffset {}
2571    #[derive(Copy, Clone, PartialEq)]
2572
2573    pub struct PropAccessExpr<'a> {
2574        pub _tab: ::flatbuffers::Table<'a>,
2575    }
2576
2577    impl<'a> ::flatbuffers::Follow<'a> for PropAccessExpr<'a> {
2578        type Inner = PropAccessExpr<'a>;
2579        #[inline]
2580        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2581            Self {
2582                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2583            }
2584        }
2585    }
2586
2587    impl<'a> PropAccessExpr<'a> {
2588        pub const VT_COL: ::flatbuffers::VOffsetT = 4;
2589        pub const VT_PROP: ::flatbuffers::VOffsetT = 6;
2590
2591        #[inline]
2592        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2593            PropAccessExpr { _tab: table }
2594        }
2595        #[allow(unused_mut)]
2596        pub fn create<
2597            'bldr: 'args,
2598            'args: 'mut_bldr,
2599            'mut_bldr,
2600            A: ::flatbuffers::Allocator + 'bldr,
2601        >(
2602            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2603            args: &'args PropAccessExprArgs<'args>,
2604        ) -> ::flatbuffers::WIPOffset<PropAccessExpr<'bldr>> {
2605            let mut builder = PropAccessExprBuilder::new(_fbb);
2606            if let Some(x) = args.prop {
2607                builder.add_prop(x);
2608            }
2609            builder.add_col(args.col);
2610            builder.finish()
2611        }
2612
2613        #[inline]
2614        pub fn col(&self) -> u32 {
2615            // Safety:
2616            // Created from valid Table for this object
2617            // which contains a valid value in this slot
2618            unsafe {
2619                self._tab
2620                    .get::<u32>(PropAccessExpr::VT_COL, Some(0))
2621                    .unwrap()
2622            }
2623        }
2624        #[inline]
2625        pub fn prop(&self) -> Option<&'a str> {
2626            // Safety:
2627            // Created from valid Table for this object
2628            // which contains a valid value in this slot
2629            unsafe {
2630                self._tab
2631                    .get::<::flatbuffers::ForwardsUOffset<&str>>(PropAccessExpr::VT_PROP, None)
2632            }
2633        }
2634    }
2635
2636    impl ::flatbuffers::Verifiable for PropAccessExpr<'_> {
2637        #[inline]
2638        fn run_verifier(
2639            v: &mut ::flatbuffers::Verifier,
2640            pos: usize,
2641        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2642            v.visit_table(pos)?
2643                .visit_field::<u32>("col", Self::VT_COL, false)?
2644                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("prop", Self::VT_PROP, false)?
2645                .finish();
2646            Ok(())
2647        }
2648    }
2649    pub struct PropAccessExprArgs<'a> {
2650        pub col: u32,
2651        pub prop: Option<::flatbuffers::WIPOffset<&'a str>>,
2652    }
2653    impl<'a> Default for PropAccessExprArgs<'a> {
2654        #[inline]
2655        fn default() -> Self {
2656            PropAccessExprArgs { col: 0, prop: None }
2657        }
2658    }
2659
2660    pub struct PropAccessExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2661        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2662        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2663    }
2664    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PropAccessExprBuilder<'a, 'b, A> {
2665        #[inline]
2666        pub fn add_col(&mut self, col: u32) {
2667            self.fbb_.push_slot::<u32>(PropAccessExpr::VT_COL, col, 0);
2668        }
2669        #[inline]
2670        pub fn add_prop(&mut self, prop: ::flatbuffers::WIPOffset<&'b str>) {
2671            self.fbb_
2672                .push_slot_always::<::flatbuffers::WIPOffset<_>>(PropAccessExpr::VT_PROP, prop);
2673        }
2674        #[inline]
2675        pub fn new(
2676            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2677        ) -> PropAccessExprBuilder<'a, 'b, A> {
2678            let start = _fbb.start_table();
2679            PropAccessExprBuilder {
2680                fbb_: _fbb,
2681                start_: start,
2682            }
2683        }
2684        #[inline]
2685        pub fn finish(self) -> ::flatbuffers::WIPOffset<PropAccessExpr<'a>> {
2686            let o = self.fbb_.end_table(self.start_);
2687            ::flatbuffers::WIPOffset::new(o.value())
2688        }
2689    }
2690
2691    impl ::core::fmt::Debug for PropAccessExpr<'_> {
2692        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2693            let mut ds = f.debug_struct("PropAccessExpr");
2694            ds.field("col", &self.col());
2695            ds.field("prop", &self.prop());
2696            ds.finish()
2697        }
2698    }
2699    pub enum IntLiteralExprOffset {}
2700    #[derive(Copy, Clone, PartialEq)]
2701
2702    pub struct IntLiteralExpr<'a> {
2703        pub _tab: ::flatbuffers::Table<'a>,
2704    }
2705
2706    impl<'a> ::flatbuffers::Follow<'a> for IntLiteralExpr<'a> {
2707        type Inner = IntLiteralExpr<'a>;
2708        #[inline]
2709        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2710            Self {
2711                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2712            }
2713        }
2714    }
2715
2716    impl<'a> IntLiteralExpr<'a> {
2717        pub const VT_VALUE: ::flatbuffers::VOffsetT = 4;
2718
2719        #[inline]
2720        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2721            IntLiteralExpr { _tab: table }
2722        }
2723        #[allow(unused_mut)]
2724        pub fn create<
2725            'bldr: 'args,
2726            'args: 'mut_bldr,
2727            'mut_bldr,
2728            A: ::flatbuffers::Allocator + 'bldr,
2729        >(
2730            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2731            args: &'args IntLiteralExprArgs,
2732        ) -> ::flatbuffers::WIPOffset<IntLiteralExpr<'bldr>> {
2733            let mut builder = IntLiteralExprBuilder::new(_fbb);
2734            builder.add_value(args.value);
2735            builder.finish()
2736        }
2737
2738        #[inline]
2739        pub fn value(&self) -> i64 {
2740            // Safety:
2741            // Created from valid Table for this object
2742            // which contains a valid value in this slot
2743            unsafe {
2744                self._tab
2745                    .get::<i64>(IntLiteralExpr::VT_VALUE, Some(0))
2746                    .unwrap()
2747            }
2748        }
2749    }
2750
2751    impl ::flatbuffers::Verifiable for IntLiteralExpr<'_> {
2752        #[inline]
2753        fn run_verifier(
2754            v: &mut ::flatbuffers::Verifier,
2755            pos: usize,
2756        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2757            v.visit_table(pos)?
2758                .visit_field::<i64>("value", Self::VT_VALUE, false)?
2759                .finish();
2760            Ok(())
2761        }
2762    }
2763    pub struct IntLiteralExprArgs {
2764        pub value: i64,
2765    }
2766    impl<'a> Default for IntLiteralExprArgs {
2767        #[inline]
2768        fn default() -> Self {
2769            IntLiteralExprArgs { value: 0 }
2770        }
2771    }
2772
2773    pub struct IntLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2774        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2775        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2776    }
2777    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> IntLiteralExprBuilder<'a, 'b, A> {
2778        #[inline]
2779        pub fn add_value(&mut self, value: i64) {
2780            self.fbb_
2781                .push_slot::<i64>(IntLiteralExpr::VT_VALUE, value, 0);
2782        }
2783        #[inline]
2784        pub fn new(
2785            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2786        ) -> IntLiteralExprBuilder<'a, 'b, A> {
2787            let start = _fbb.start_table();
2788            IntLiteralExprBuilder {
2789                fbb_: _fbb,
2790                start_: start,
2791            }
2792        }
2793        #[inline]
2794        pub fn finish(self) -> ::flatbuffers::WIPOffset<IntLiteralExpr<'a>> {
2795            let o = self.fbb_.end_table(self.start_);
2796            ::flatbuffers::WIPOffset::new(o.value())
2797        }
2798    }
2799
2800    impl ::core::fmt::Debug for IntLiteralExpr<'_> {
2801        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2802            let mut ds = f.debug_struct("IntLiteralExpr");
2803            ds.field("value", &self.value());
2804            ds.finish()
2805        }
2806    }
2807    pub enum FloatLiteralExprOffset {}
2808    #[derive(Copy, Clone, PartialEq)]
2809
2810    pub struct FloatLiteralExpr<'a> {
2811        pub _tab: ::flatbuffers::Table<'a>,
2812    }
2813
2814    impl<'a> ::flatbuffers::Follow<'a> for FloatLiteralExpr<'a> {
2815        type Inner = FloatLiteralExpr<'a>;
2816        #[inline]
2817        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2818            Self {
2819                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2820            }
2821        }
2822    }
2823
2824    impl<'a> FloatLiteralExpr<'a> {
2825        pub const VT_VALUE: ::flatbuffers::VOffsetT = 4;
2826
2827        #[inline]
2828        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2829            FloatLiteralExpr { _tab: table }
2830        }
2831        #[allow(unused_mut)]
2832        pub fn create<
2833            'bldr: 'args,
2834            'args: 'mut_bldr,
2835            'mut_bldr,
2836            A: ::flatbuffers::Allocator + 'bldr,
2837        >(
2838            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2839            args: &'args FloatLiteralExprArgs,
2840        ) -> ::flatbuffers::WIPOffset<FloatLiteralExpr<'bldr>> {
2841            let mut builder = FloatLiteralExprBuilder::new(_fbb);
2842            builder.add_value(args.value);
2843            builder.finish()
2844        }
2845
2846        #[inline]
2847        pub fn value(&self) -> f64 {
2848            // Safety:
2849            // Created from valid Table for this object
2850            // which contains a valid value in this slot
2851            unsafe {
2852                self._tab
2853                    .get::<f64>(FloatLiteralExpr::VT_VALUE, Some(0.0))
2854                    .unwrap()
2855            }
2856        }
2857    }
2858
2859    impl ::flatbuffers::Verifiable for FloatLiteralExpr<'_> {
2860        #[inline]
2861        fn run_verifier(
2862            v: &mut ::flatbuffers::Verifier,
2863            pos: usize,
2864        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2865            v.visit_table(pos)?
2866                .visit_field::<f64>("value", Self::VT_VALUE, false)?
2867                .finish();
2868            Ok(())
2869        }
2870    }
2871    pub struct FloatLiteralExprArgs {
2872        pub value: f64,
2873    }
2874    impl<'a> Default for FloatLiteralExprArgs {
2875        #[inline]
2876        fn default() -> Self {
2877            FloatLiteralExprArgs { value: 0.0 }
2878        }
2879    }
2880
2881    pub struct FloatLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2882        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2883        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2884    }
2885    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> FloatLiteralExprBuilder<'a, 'b, A> {
2886        #[inline]
2887        pub fn add_value(&mut self, value: f64) {
2888            self.fbb_
2889                .push_slot::<f64>(FloatLiteralExpr::VT_VALUE, value, 0.0);
2890        }
2891        #[inline]
2892        pub fn new(
2893            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2894        ) -> FloatLiteralExprBuilder<'a, 'b, A> {
2895            let start = _fbb.start_table();
2896            FloatLiteralExprBuilder {
2897                fbb_: _fbb,
2898                start_: start,
2899            }
2900        }
2901        #[inline]
2902        pub fn finish(self) -> ::flatbuffers::WIPOffset<FloatLiteralExpr<'a>> {
2903            let o = self.fbb_.end_table(self.start_);
2904            ::flatbuffers::WIPOffset::new(o.value())
2905        }
2906    }
2907
2908    impl ::core::fmt::Debug for FloatLiteralExpr<'_> {
2909        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2910            let mut ds = f.debug_struct("FloatLiteralExpr");
2911            ds.field("value", &self.value());
2912            ds.finish()
2913        }
2914    }
2915    pub enum BoolLiteralExprOffset {}
2916    #[derive(Copy, Clone, PartialEq)]
2917
2918    pub struct BoolLiteralExpr<'a> {
2919        pub _tab: ::flatbuffers::Table<'a>,
2920    }
2921
2922    impl<'a> ::flatbuffers::Follow<'a> for BoolLiteralExpr<'a> {
2923        type Inner = BoolLiteralExpr<'a>;
2924        #[inline]
2925        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2926            Self {
2927                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
2928            }
2929        }
2930    }
2931
2932    impl<'a> BoolLiteralExpr<'a> {
2933        pub const VT_VALUE: ::flatbuffers::VOffsetT = 4;
2934
2935        #[inline]
2936        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
2937            BoolLiteralExpr { _tab: table }
2938        }
2939        #[allow(unused_mut)]
2940        pub fn create<
2941            'bldr: 'args,
2942            'args: 'mut_bldr,
2943            'mut_bldr,
2944            A: ::flatbuffers::Allocator + 'bldr,
2945        >(
2946            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
2947            args: &'args BoolLiteralExprArgs,
2948        ) -> ::flatbuffers::WIPOffset<BoolLiteralExpr<'bldr>> {
2949            let mut builder = BoolLiteralExprBuilder::new(_fbb);
2950            builder.add_value(args.value);
2951            builder.finish()
2952        }
2953
2954        #[inline]
2955        pub fn value(&self) -> bool {
2956            // Safety:
2957            // Created from valid Table for this object
2958            // which contains a valid value in this slot
2959            unsafe {
2960                self._tab
2961                    .get::<bool>(BoolLiteralExpr::VT_VALUE, Some(false))
2962                    .unwrap()
2963            }
2964        }
2965    }
2966
2967    impl ::flatbuffers::Verifiable for BoolLiteralExpr<'_> {
2968        #[inline]
2969        fn run_verifier(
2970            v: &mut ::flatbuffers::Verifier,
2971            pos: usize,
2972        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
2973            v.visit_table(pos)?
2974                .visit_field::<bool>("value", Self::VT_VALUE, false)?
2975                .finish();
2976            Ok(())
2977        }
2978    }
2979    pub struct BoolLiteralExprArgs {
2980        pub value: bool,
2981    }
2982    impl<'a> Default for BoolLiteralExprArgs {
2983        #[inline]
2984        fn default() -> Self {
2985            BoolLiteralExprArgs { value: false }
2986        }
2987    }
2988
2989    pub struct BoolLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
2990        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
2991        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
2992    }
2993    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> BoolLiteralExprBuilder<'a, 'b, A> {
2994        #[inline]
2995        pub fn add_value(&mut self, value: bool) {
2996            self.fbb_
2997                .push_slot::<bool>(BoolLiteralExpr::VT_VALUE, value, false);
2998        }
2999        #[inline]
3000        pub fn new(
3001            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3002        ) -> BoolLiteralExprBuilder<'a, 'b, A> {
3003            let start = _fbb.start_table();
3004            BoolLiteralExprBuilder {
3005                fbb_: _fbb,
3006                start_: start,
3007            }
3008        }
3009        #[inline]
3010        pub fn finish(self) -> ::flatbuffers::WIPOffset<BoolLiteralExpr<'a>> {
3011            let o = self.fbb_.end_table(self.start_);
3012            ::flatbuffers::WIPOffset::new(o.value())
3013        }
3014    }
3015
3016    impl ::core::fmt::Debug for BoolLiteralExpr<'_> {
3017        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3018            let mut ds = f.debug_struct("BoolLiteralExpr");
3019            ds.field("value", &self.value());
3020            ds.finish()
3021        }
3022    }
3023    pub enum StringLiteralExprOffset {}
3024    #[derive(Copy, Clone, PartialEq)]
3025
3026    pub struct StringLiteralExpr<'a> {
3027        pub _tab: ::flatbuffers::Table<'a>,
3028    }
3029
3030    impl<'a> ::flatbuffers::Follow<'a> for StringLiteralExpr<'a> {
3031        type Inner = StringLiteralExpr<'a>;
3032        #[inline]
3033        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3034            Self {
3035                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3036            }
3037        }
3038    }
3039
3040    impl<'a> StringLiteralExpr<'a> {
3041        pub const VT_VALUE: ::flatbuffers::VOffsetT = 4;
3042
3043        #[inline]
3044        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3045            StringLiteralExpr { _tab: table }
3046        }
3047        #[allow(unused_mut)]
3048        pub fn create<
3049            'bldr: 'args,
3050            'args: 'mut_bldr,
3051            'mut_bldr,
3052            A: ::flatbuffers::Allocator + 'bldr,
3053        >(
3054            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3055            args: &'args StringLiteralExprArgs<'args>,
3056        ) -> ::flatbuffers::WIPOffset<StringLiteralExpr<'bldr>> {
3057            let mut builder = StringLiteralExprBuilder::new(_fbb);
3058            if let Some(x) = args.value {
3059                builder.add_value(x);
3060            }
3061            builder.finish()
3062        }
3063
3064        #[inline]
3065        pub fn value(&self) -> Option<&'a str> {
3066            // Safety:
3067            // Created from valid Table for this object
3068            // which contains a valid value in this slot
3069            unsafe {
3070                self._tab
3071                    .get::<::flatbuffers::ForwardsUOffset<&str>>(StringLiteralExpr::VT_VALUE, None)
3072            }
3073        }
3074    }
3075
3076    impl ::flatbuffers::Verifiable for StringLiteralExpr<'_> {
3077        #[inline]
3078        fn run_verifier(
3079            v: &mut ::flatbuffers::Verifier,
3080            pos: usize,
3081        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3082            v.visit_table(pos)?
3083                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
3084                    "value",
3085                    Self::VT_VALUE,
3086                    false,
3087                )?
3088                .finish();
3089            Ok(())
3090        }
3091    }
3092    pub struct StringLiteralExprArgs<'a> {
3093        pub value: Option<::flatbuffers::WIPOffset<&'a str>>,
3094    }
3095    impl<'a> Default for StringLiteralExprArgs<'a> {
3096        #[inline]
3097        fn default() -> Self {
3098            StringLiteralExprArgs { value: None }
3099        }
3100    }
3101
3102    pub struct StringLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3103        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3104        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3105    }
3106    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> StringLiteralExprBuilder<'a, 'b, A> {
3107        #[inline]
3108        pub fn add_value(&mut self, value: ::flatbuffers::WIPOffset<&'b str>) {
3109            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
3110                StringLiteralExpr::VT_VALUE,
3111                value,
3112            );
3113        }
3114        #[inline]
3115        pub fn new(
3116            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3117        ) -> StringLiteralExprBuilder<'a, 'b, A> {
3118            let start = _fbb.start_table();
3119            StringLiteralExprBuilder {
3120                fbb_: _fbb,
3121                start_: start,
3122            }
3123        }
3124        #[inline]
3125        pub fn finish(self) -> ::flatbuffers::WIPOffset<StringLiteralExpr<'a>> {
3126            let o = self.fbb_.end_table(self.start_);
3127            ::flatbuffers::WIPOffset::new(o.value())
3128        }
3129    }
3130
3131    impl ::core::fmt::Debug for StringLiteralExpr<'_> {
3132        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3133            let mut ds = f.debug_struct("StringLiteralExpr");
3134            ds.field("value", &self.value());
3135            ds.finish()
3136        }
3137    }
3138    pub enum NullLiteralExprOffset {}
3139    #[derive(Copy, Clone, PartialEq)]
3140
3141    pub struct NullLiteralExpr<'a> {
3142        pub _tab: ::flatbuffers::Table<'a>,
3143    }
3144
3145    impl<'a> ::flatbuffers::Follow<'a> for NullLiteralExpr<'a> {
3146        type Inner = NullLiteralExpr<'a>;
3147        #[inline]
3148        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3149            Self {
3150                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3151            }
3152        }
3153    }
3154
3155    impl<'a> NullLiteralExpr<'a> {
3156        #[inline]
3157        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3158            NullLiteralExpr { _tab: table }
3159        }
3160        #[allow(unused_mut)]
3161        pub fn create<
3162            'bldr: 'args,
3163            'args: 'mut_bldr,
3164            'mut_bldr,
3165            A: ::flatbuffers::Allocator + 'bldr,
3166        >(
3167            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3168            _args: &'args NullLiteralExprArgs,
3169        ) -> ::flatbuffers::WIPOffset<NullLiteralExpr<'bldr>> {
3170            let mut builder = NullLiteralExprBuilder::new(_fbb);
3171            builder.finish()
3172        }
3173    }
3174
3175    impl ::flatbuffers::Verifiable for NullLiteralExpr<'_> {
3176        #[inline]
3177        fn run_verifier(
3178            v: &mut ::flatbuffers::Verifier,
3179            pos: usize,
3180        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3181            v.visit_table(pos)?.finish();
3182            Ok(())
3183        }
3184    }
3185    pub struct NullLiteralExprArgs {}
3186    impl<'a> Default for NullLiteralExprArgs {
3187        #[inline]
3188        fn default() -> Self {
3189            NullLiteralExprArgs {}
3190        }
3191    }
3192
3193    pub struct NullLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3194        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3195        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3196    }
3197    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> NullLiteralExprBuilder<'a, 'b, A> {
3198        #[inline]
3199        pub fn new(
3200            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3201        ) -> NullLiteralExprBuilder<'a, 'b, A> {
3202            let start = _fbb.start_table();
3203            NullLiteralExprBuilder {
3204                fbb_: _fbb,
3205                start_: start,
3206            }
3207        }
3208        #[inline]
3209        pub fn finish(self) -> ::flatbuffers::WIPOffset<NullLiteralExpr<'a>> {
3210            let o = self.fbb_.end_table(self.start_);
3211            ::flatbuffers::WIPOffset::new(o.value())
3212        }
3213    }
3214
3215    impl ::core::fmt::Debug for NullLiteralExpr<'_> {
3216        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3217            let mut ds = f.debug_struct("NullLiteralExpr");
3218            ds.finish()
3219        }
3220    }
3221    pub enum CmpExprOffset {}
3222    #[derive(Copy, Clone, PartialEq)]
3223
3224    pub struct CmpExpr<'a> {
3225        pub _tab: ::flatbuffers::Table<'a>,
3226    }
3227
3228    impl<'a> ::flatbuffers::Follow<'a> for CmpExpr<'a> {
3229        type Inner = CmpExpr<'a>;
3230        #[inline]
3231        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3232            Self {
3233                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3234            }
3235        }
3236    }
3237
3238    impl<'a> CmpExpr<'a> {
3239        pub const VT_OP: ::flatbuffers::VOffsetT = 4;
3240        pub const VT_LHS: ::flatbuffers::VOffsetT = 6;
3241        pub const VT_RHS: ::flatbuffers::VOffsetT = 8;
3242
3243        #[inline]
3244        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3245            CmpExpr { _tab: table }
3246        }
3247        #[allow(unused_mut)]
3248        pub fn create<
3249            'bldr: 'args,
3250            'args: 'mut_bldr,
3251            'mut_bldr,
3252            A: ::flatbuffers::Allocator + 'bldr,
3253        >(
3254            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3255            args: &'args CmpExprArgs<'args>,
3256        ) -> ::flatbuffers::WIPOffset<CmpExpr<'bldr>> {
3257            let mut builder = CmpExprBuilder::new(_fbb);
3258            if let Some(x) = args.rhs {
3259                builder.add_rhs(x);
3260            }
3261            if let Some(x) = args.lhs {
3262                builder.add_lhs(x);
3263            }
3264            builder.add_op(args.op);
3265            builder.finish()
3266        }
3267
3268        #[inline]
3269        pub fn op(&self) -> CmpOp {
3270            // Safety:
3271            // Created from valid Table for this object
3272            // which contains a valid value in this slot
3273            unsafe {
3274                self._tab
3275                    .get::<CmpOp>(CmpExpr::VT_OP, Some(CmpOp::eq))
3276                    .unwrap()
3277            }
3278        }
3279        #[inline]
3280        pub fn lhs(&self) -> Option<Expr<'a>> {
3281            // Safety:
3282            // Created from valid Table for this object
3283            // which contains a valid value in this slot
3284            unsafe {
3285                self._tab
3286                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CmpExpr::VT_LHS, None)
3287            }
3288        }
3289        #[inline]
3290        pub fn rhs(&self) -> Option<Expr<'a>> {
3291            // Safety:
3292            // Created from valid Table for this object
3293            // which contains a valid value in this slot
3294            unsafe {
3295                self._tab
3296                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CmpExpr::VT_RHS, None)
3297            }
3298        }
3299    }
3300
3301    impl ::flatbuffers::Verifiable for CmpExpr<'_> {
3302        #[inline]
3303        fn run_verifier(
3304            v: &mut ::flatbuffers::Verifier,
3305            pos: usize,
3306        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3307            v.visit_table(pos)?
3308                .visit_field::<CmpOp>("op", Self::VT_OP, false)?
3309                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("lhs", Self::VT_LHS, false)?
3310                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("rhs", Self::VT_RHS, false)?
3311                .finish();
3312            Ok(())
3313        }
3314    }
3315    pub struct CmpExprArgs<'a> {
3316        pub op: CmpOp,
3317        pub lhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3318        pub rhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3319    }
3320    impl<'a> Default for CmpExprArgs<'a> {
3321        #[inline]
3322        fn default() -> Self {
3323            CmpExprArgs {
3324                op: CmpOp::eq,
3325                lhs: None,
3326                rhs: None,
3327            }
3328        }
3329    }
3330
3331    pub struct CmpExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3332        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3333        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3334    }
3335    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CmpExprBuilder<'a, 'b, A> {
3336        #[inline]
3337        pub fn add_op(&mut self, op: CmpOp) {
3338            self.fbb_.push_slot::<CmpOp>(CmpExpr::VT_OP, op, CmpOp::eq);
3339        }
3340        #[inline]
3341        pub fn add_lhs(&mut self, lhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3342            self.fbb_
3343                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CmpExpr::VT_LHS, lhs);
3344        }
3345        #[inline]
3346        pub fn add_rhs(&mut self, rhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3347            self.fbb_
3348                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CmpExpr::VT_RHS, rhs);
3349        }
3350        #[inline]
3351        pub fn new(
3352            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3353        ) -> CmpExprBuilder<'a, 'b, A> {
3354            let start = _fbb.start_table();
3355            CmpExprBuilder {
3356                fbb_: _fbb,
3357                start_: start,
3358            }
3359        }
3360        #[inline]
3361        pub fn finish(self) -> ::flatbuffers::WIPOffset<CmpExpr<'a>> {
3362            let o = self.fbb_.end_table(self.start_);
3363            ::flatbuffers::WIPOffset::new(o.value())
3364        }
3365    }
3366
3367    impl ::core::fmt::Debug for CmpExpr<'_> {
3368        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3369            let mut ds = f.debug_struct("CmpExpr");
3370            ds.field("op", &self.op());
3371            ds.field("lhs", &self.lhs());
3372            ds.field("rhs", &self.rhs());
3373            ds.finish()
3374        }
3375    }
3376    pub enum AndExprOffset {}
3377    #[derive(Copy, Clone, PartialEq)]
3378
3379    pub struct AndExpr<'a> {
3380        pub _tab: ::flatbuffers::Table<'a>,
3381    }
3382
3383    impl<'a> ::flatbuffers::Follow<'a> for AndExpr<'a> {
3384        type Inner = AndExpr<'a>;
3385        #[inline]
3386        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3387            Self {
3388                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3389            }
3390        }
3391    }
3392
3393    impl<'a> AndExpr<'a> {
3394        pub const VT_LHS: ::flatbuffers::VOffsetT = 4;
3395        pub const VT_RHS: ::flatbuffers::VOffsetT = 6;
3396
3397        #[inline]
3398        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3399            AndExpr { _tab: table }
3400        }
3401        #[allow(unused_mut)]
3402        pub fn create<
3403            'bldr: 'args,
3404            'args: 'mut_bldr,
3405            'mut_bldr,
3406            A: ::flatbuffers::Allocator + 'bldr,
3407        >(
3408            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3409            args: &'args AndExprArgs<'args>,
3410        ) -> ::flatbuffers::WIPOffset<AndExpr<'bldr>> {
3411            let mut builder = AndExprBuilder::new(_fbb);
3412            if let Some(x) = args.rhs {
3413                builder.add_rhs(x);
3414            }
3415            if let Some(x) = args.lhs {
3416                builder.add_lhs(x);
3417            }
3418            builder.finish()
3419        }
3420
3421        #[inline]
3422        pub fn lhs(&self) -> Option<Expr<'a>> {
3423            // Safety:
3424            // Created from valid Table for this object
3425            // which contains a valid value in this slot
3426            unsafe {
3427                self._tab
3428                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(AndExpr::VT_LHS, None)
3429            }
3430        }
3431        #[inline]
3432        pub fn rhs(&self) -> Option<Expr<'a>> {
3433            // Safety:
3434            // Created from valid Table for this object
3435            // which contains a valid value in this slot
3436            unsafe {
3437                self._tab
3438                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(AndExpr::VT_RHS, None)
3439            }
3440        }
3441    }
3442
3443    impl ::flatbuffers::Verifiable for AndExpr<'_> {
3444        #[inline]
3445        fn run_verifier(
3446            v: &mut ::flatbuffers::Verifier,
3447            pos: usize,
3448        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3449            v.visit_table(pos)?
3450                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("lhs", Self::VT_LHS, false)?
3451                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("rhs", Self::VT_RHS, false)?
3452                .finish();
3453            Ok(())
3454        }
3455    }
3456    pub struct AndExprArgs<'a> {
3457        pub lhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3458        pub rhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3459    }
3460    impl<'a> Default for AndExprArgs<'a> {
3461        #[inline]
3462        fn default() -> Self {
3463            AndExprArgs {
3464                lhs: None,
3465                rhs: None,
3466            }
3467        }
3468    }
3469
3470    pub struct AndExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3471        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3472        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3473    }
3474    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> AndExprBuilder<'a, 'b, A> {
3475        #[inline]
3476        pub fn add_lhs(&mut self, lhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3477            self.fbb_
3478                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(AndExpr::VT_LHS, lhs);
3479        }
3480        #[inline]
3481        pub fn add_rhs(&mut self, rhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3482            self.fbb_
3483                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(AndExpr::VT_RHS, rhs);
3484        }
3485        #[inline]
3486        pub fn new(
3487            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3488        ) -> AndExprBuilder<'a, 'b, A> {
3489            let start = _fbb.start_table();
3490            AndExprBuilder {
3491                fbb_: _fbb,
3492                start_: start,
3493            }
3494        }
3495        #[inline]
3496        pub fn finish(self) -> ::flatbuffers::WIPOffset<AndExpr<'a>> {
3497            let o = self.fbb_.end_table(self.start_);
3498            ::flatbuffers::WIPOffset::new(o.value())
3499        }
3500    }
3501
3502    impl ::core::fmt::Debug for AndExpr<'_> {
3503        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3504            let mut ds = f.debug_struct("AndExpr");
3505            ds.field("lhs", &self.lhs());
3506            ds.field("rhs", &self.rhs());
3507            ds.finish()
3508        }
3509    }
3510    pub enum OrExprOffset {}
3511    #[derive(Copy, Clone, PartialEq)]
3512
3513    pub struct OrExpr<'a> {
3514        pub _tab: ::flatbuffers::Table<'a>,
3515    }
3516
3517    impl<'a> ::flatbuffers::Follow<'a> for OrExpr<'a> {
3518        type Inner = OrExpr<'a>;
3519        #[inline]
3520        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3521            Self {
3522                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3523            }
3524        }
3525    }
3526
3527    impl<'a> OrExpr<'a> {
3528        pub const VT_LHS: ::flatbuffers::VOffsetT = 4;
3529        pub const VT_RHS: ::flatbuffers::VOffsetT = 6;
3530
3531        #[inline]
3532        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3533            OrExpr { _tab: table }
3534        }
3535        #[allow(unused_mut)]
3536        pub fn create<
3537            'bldr: 'args,
3538            'args: 'mut_bldr,
3539            'mut_bldr,
3540            A: ::flatbuffers::Allocator + 'bldr,
3541        >(
3542            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3543            args: &'args OrExprArgs<'args>,
3544        ) -> ::flatbuffers::WIPOffset<OrExpr<'bldr>> {
3545            let mut builder = OrExprBuilder::new(_fbb);
3546            if let Some(x) = args.rhs {
3547                builder.add_rhs(x);
3548            }
3549            if let Some(x) = args.lhs {
3550                builder.add_lhs(x);
3551            }
3552            builder.finish()
3553        }
3554
3555        #[inline]
3556        pub fn lhs(&self) -> Option<Expr<'a>> {
3557            // Safety:
3558            // Created from valid Table for this object
3559            // which contains a valid value in this slot
3560            unsafe {
3561                self._tab
3562                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(OrExpr::VT_LHS, None)
3563            }
3564        }
3565        #[inline]
3566        pub fn rhs(&self) -> Option<Expr<'a>> {
3567            // Safety:
3568            // Created from valid Table for this object
3569            // which contains a valid value in this slot
3570            unsafe {
3571                self._tab
3572                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(OrExpr::VT_RHS, None)
3573            }
3574        }
3575    }
3576
3577    impl ::flatbuffers::Verifiable for OrExpr<'_> {
3578        #[inline]
3579        fn run_verifier(
3580            v: &mut ::flatbuffers::Verifier,
3581            pos: usize,
3582        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3583            v.visit_table(pos)?
3584                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("lhs", Self::VT_LHS, false)?
3585                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("rhs", Self::VT_RHS, false)?
3586                .finish();
3587            Ok(())
3588        }
3589    }
3590    pub struct OrExprArgs<'a> {
3591        pub lhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3592        pub rhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3593    }
3594    impl<'a> Default for OrExprArgs<'a> {
3595        #[inline]
3596        fn default() -> Self {
3597            OrExprArgs {
3598                lhs: None,
3599                rhs: None,
3600            }
3601        }
3602    }
3603
3604    pub struct OrExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3605        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3606        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3607    }
3608    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> OrExprBuilder<'a, 'b, A> {
3609        #[inline]
3610        pub fn add_lhs(&mut self, lhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3611            self.fbb_
3612                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(OrExpr::VT_LHS, lhs);
3613        }
3614        #[inline]
3615        pub fn add_rhs(&mut self, rhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
3616            self.fbb_
3617                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(OrExpr::VT_RHS, rhs);
3618        }
3619        #[inline]
3620        pub fn new(
3621            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3622        ) -> OrExprBuilder<'a, 'b, A> {
3623            let start = _fbb.start_table();
3624            OrExprBuilder {
3625                fbb_: _fbb,
3626                start_: start,
3627            }
3628        }
3629        #[inline]
3630        pub fn finish(self) -> ::flatbuffers::WIPOffset<OrExpr<'a>> {
3631            let o = self.fbb_.end_table(self.start_);
3632            ::flatbuffers::WIPOffset::new(o.value())
3633        }
3634    }
3635
3636    impl ::core::fmt::Debug for OrExpr<'_> {
3637        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3638            let mut ds = f.debug_struct("OrExpr");
3639            ds.field("lhs", &self.lhs());
3640            ds.field("rhs", &self.rhs());
3641            ds.finish()
3642        }
3643    }
3644    pub enum NotExprOffset {}
3645    #[derive(Copy, Clone, PartialEq)]
3646
3647    pub struct NotExpr<'a> {
3648        pub _tab: ::flatbuffers::Table<'a>,
3649    }
3650
3651    impl<'a> ::flatbuffers::Follow<'a> for NotExpr<'a> {
3652        type Inner = NotExpr<'a>;
3653        #[inline]
3654        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3655            Self {
3656                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3657            }
3658        }
3659    }
3660
3661    impl<'a> NotExpr<'a> {
3662        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
3663
3664        #[inline]
3665        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3666            NotExpr { _tab: table }
3667        }
3668        #[allow(unused_mut)]
3669        pub fn create<
3670            'bldr: 'args,
3671            'args: 'mut_bldr,
3672            'mut_bldr,
3673            A: ::flatbuffers::Allocator + 'bldr,
3674        >(
3675            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3676            args: &'args NotExprArgs<'args>,
3677        ) -> ::flatbuffers::WIPOffset<NotExpr<'bldr>> {
3678            let mut builder = NotExprBuilder::new(_fbb);
3679            if let Some(x) = args.expr {
3680                builder.add_expr(x);
3681            }
3682            builder.finish()
3683        }
3684
3685        #[inline]
3686        pub fn expr(&self) -> Option<Expr<'a>> {
3687            // Safety:
3688            // Created from valid Table for this object
3689            // which contains a valid value in this slot
3690            unsafe {
3691                self._tab
3692                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(NotExpr::VT_EXPR, None)
3693            }
3694        }
3695    }
3696
3697    impl ::flatbuffers::Verifiable for NotExpr<'_> {
3698        #[inline]
3699        fn run_verifier(
3700            v: &mut ::flatbuffers::Verifier,
3701            pos: usize,
3702        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3703            v.visit_table(pos)?
3704                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
3705                .finish();
3706            Ok(())
3707        }
3708    }
3709    pub struct NotExprArgs<'a> {
3710        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3711    }
3712    impl<'a> Default for NotExprArgs<'a> {
3713        #[inline]
3714        fn default() -> Self {
3715            NotExprArgs { expr: None }
3716        }
3717    }
3718
3719    pub struct NotExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3720        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3721        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3722    }
3723    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> NotExprBuilder<'a, 'b, A> {
3724        #[inline]
3725        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
3726            self.fbb_
3727                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(NotExpr::VT_EXPR, expr);
3728        }
3729        #[inline]
3730        pub fn new(
3731            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3732        ) -> NotExprBuilder<'a, 'b, A> {
3733            let start = _fbb.start_table();
3734            NotExprBuilder {
3735                fbb_: _fbb,
3736                start_: start,
3737            }
3738        }
3739        #[inline]
3740        pub fn finish(self) -> ::flatbuffers::WIPOffset<NotExpr<'a>> {
3741            let o = self.fbb_.end_table(self.start_);
3742            ::flatbuffers::WIPOffset::new(o.value())
3743        }
3744    }
3745
3746    impl ::core::fmt::Debug for NotExpr<'_> {
3747        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3748            let mut ds = f.debug_struct("NotExpr");
3749            ds.field("expr", &self.expr());
3750            ds.finish()
3751        }
3752    }
3753    pub enum IsNullExprOffset {}
3754    #[derive(Copy, Clone, PartialEq)]
3755
3756    pub struct IsNullExpr<'a> {
3757        pub _tab: ::flatbuffers::Table<'a>,
3758    }
3759
3760    impl<'a> ::flatbuffers::Follow<'a> for IsNullExpr<'a> {
3761        type Inner = IsNullExpr<'a>;
3762        #[inline]
3763        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3764            Self {
3765                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3766            }
3767        }
3768    }
3769
3770    impl<'a> IsNullExpr<'a> {
3771        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
3772
3773        #[inline]
3774        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3775            IsNullExpr { _tab: table }
3776        }
3777        #[allow(unused_mut)]
3778        pub fn create<
3779            'bldr: 'args,
3780            'args: 'mut_bldr,
3781            'mut_bldr,
3782            A: ::flatbuffers::Allocator + 'bldr,
3783        >(
3784            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3785            args: &'args IsNullExprArgs<'args>,
3786        ) -> ::flatbuffers::WIPOffset<IsNullExpr<'bldr>> {
3787            let mut builder = IsNullExprBuilder::new(_fbb);
3788            if let Some(x) = args.expr {
3789                builder.add_expr(x);
3790            }
3791            builder.finish()
3792        }
3793
3794        #[inline]
3795        pub fn expr(&self) -> Option<Expr<'a>> {
3796            // Safety:
3797            // Created from valid Table for this object
3798            // which contains a valid value in this slot
3799            unsafe {
3800                self._tab
3801                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(IsNullExpr::VT_EXPR, None)
3802            }
3803        }
3804    }
3805
3806    impl ::flatbuffers::Verifiable for IsNullExpr<'_> {
3807        #[inline]
3808        fn run_verifier(
3809            v: &mut ::flatbuffers::Verifier,
3810            pos: usize,
3811        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3812            v.visit_table(pos)?
3813                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
3814                .finish();
3815            Ok(())
3816        }
3817    }
3818    pub struct IsNullExprArgs<'a> {
3819        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3820    }
3821    impl<'a> Default for IsNullExprArgs<'a> {
3822        #[inline]
3823        fn default() -> Self {
3824            IsNullExprArgs { expr: None }
3825        }
3826    }
3827
3828    pub struct IsNullExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3829        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3830        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3831    }
3832    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> IsNullExprBuilder<'a, 'b, A> {
3833        #[inline]
3834        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
3835            self.fbb_
3836                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(IsNullExpr::VT_EXPR, expr);
3837        }
3838        #[inline]
3839        pub fn new(
3840            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3841        ) -> IsNullExprBuilder<'a, 'b, A> {
3842            let start = _fbb.start_table();
3843            IsNullExprBuilder {
3844                fbb_: _fbb,
3845                start_: start,
3846            }
3847        }
3848        #[inline]
3849        pub fn finish(self) -> ::flatbuffers::WIPOffset<IsNullExpr<'a>> {
3850            let o = self.fbb_.end_table(self.start_);
3851            ::flatbuffers::WIPOffset::new(o.value())
3852        }
3853    }
3854
3855    impl ::core::fmt::Debug for IsNullExpr<'_> {
3856        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3857            let mut ds = f.debug_struct("IsNullExpr");
3858            ds.field("expr", &self.expr());
3859            ds.finish()
3860        }
3861    }
3862    pub enum IsNotNullExprOffset {}
3863    #[derive(Copy, Clone, PartialEq)]
3864
3865    pub struct IsNotNullExpr<'a> {
3866        pub _tab: ::flatbuffers::Table<'a>,
3867    }
3868
3869    impl<'a> ::flatbuffers::Follow<'a> for IsNotNullExpr<'a> {
3870        type Inner = IsNotNullExpr<'a>;
3871        #[inline]
3872        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3873            Self {
3874                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3875            }
3876        }
3877    }
3878
3879    impl<'a> IsNotNullExpr<'a> {
3880        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
3881
3882        #[inline]
3883        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3884            IsNotNullExpr { _tab: table }
3885        }
3886        #[allow(unused_mut)]
3887        pub fn create<
3888            'bldr: 'args,
3889            'args: 'mut_bldr,
3890            'mut_bldr,
3891            A: ::flatbuffers::Allocator + 'bldr,
3892        >(
3893            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
3894            args: &'args IsNotNullExprArgs<'args>,
3895        ) -> ::flatbuffers::WIPOffset<IsNotNullExpr<'bldr>> {
3896            let mut builder = IsNotNullExprBuilder::new(_fbb);
3897            if let Some(x) = args.expr {
3898                builder.add_expr(x);
3899            }
3900            builder.finish()
3901        }
3902
3903        #[inline]
3904        pub fn expr(&self) -> Option<Expr<'a>> {
3905            // Safety:
3906            // Created from valid Table for this object
3907            // which contains a valid value in this slot
3908            unsafe {
3909                self._tab
3910                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(IsNotNullExpr::VT_EXPR, None)
3911            }
3912        }
3913    }
3914
3915    impl ::flatbuffers::Verifiable for IsNotNullExpr<'_> {
3916        #[inline]
3917        fn run_verifier(
3918            v: &mut ::flatbuffers::Verifier,
3919            pos: usize,
3920        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
3921            v.visit_table(pos)?
3922                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
3923                .finish();
3924            Ok(())
3925        }
3926    }
3927    pub struct IsNotNullExprArgs<'a> {
3928        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
3929    }
3930    impl<'a> Default for IsNotNullExprArgs<'a> {
3931        #[inline]
3932        fn default() -> Self {
3933            IsNotNullExprArgs { expr: None }
3934        }
3935    }
3936
3937    pub struct IsNotNullExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
3938        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3939        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
3940    }
3941    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> IsNotNullExprBuilder<'a, 'b, A> {
3942        #[inline]
3943        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
3944            self.fbb_
3945                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(IsNotNullExpr::VT_EXPR, expr);
3946        }
3947        #[inline]
3948        pub fn new(
3949            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
3950        ) -> IsNotNullExprBuilder<'a, 'b, A> {
3951            let start = _fbb.start_table();
3952            IsNotNullExprBuilder {
3953                fbb_: _fbb,
3954                start_: start,
3955            }
3956        }
3957        #[inline]
3958        pub fn finish(self) -> ::flatbuffers::WIPOffset<IsNotNullExpr<'a>> {
3959            let o = self.fbb_.end_table(self.start_);
3960            ::flatbuffers::WIPOffset::new(o.value())
3961        }
3962    }
3963
3964    impl ::core::fmt::Debug for IsNotNullExpr<'_> {
3965        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3966            let mut ds = f.debug_struct("IsNotNullExpr");
3967            ds.field("expr", &self.expr());
3968            ds.finish()
3969        }
3970    }
3971    pub enum StartsWithExprOffset {}
3972    #[derive(Copy, Clone, PartialEq)]
3973
3974    pub struct StartsWithExpr<'a> {
3975        pub _tab: ::flatbuffers::Table<'a>,
3976    }
3977
3978    impl<'a> ::flatbuffers::Follow<'a> for StartsWithExpr<'a> {
3979        type Inner = StartsWithExpr<'a>;
3980        #[inline]
3981        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3982            Self {
3983                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
3984            }
3985        }
3986    }
3987
3988    impl<'a> StartsWithExpr<'a> {
3989        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
3990        pub const VT_PATTERN: ::flatbuffers::VOffsetT = 6;
3991
3992        #[inline]
3993        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
3994            StartsWithExpr { _tab: table }
3995        }
3996        #[allow(unused_mut)]
3997        pub fn create<
3998            'bldr: 'args,
3999            'args: 'mut_bldr,
4000            'mut_bldr,
4001            A: ::flatbuffers::Allocator + 'bldr,
4002        >(
4003            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4004            args: &'args StartsWithExprArgs<'args>,
4005        ) -> ::flatbuffers::WIPOffset<StartsWithExpr<'bldr>> {
4006            let mut builder = StartsWithExprBuilder::new(_fbb);
4007            if let Some(x) = args.pattern {
4008                builder.add_pattern(x);
4009            }
4010            if let Some(x) = args.expr {
4011                builder.add_expr(x);
4012            }
4013            builder.finish()
4014        }
4015
4016        #[inline]
4017        pub fn expr(&self) -> Option<Expr<'a>> {
4018            // Safety:
4019            // Created from valid Table for this object
4020            // which contains a valid value in this slot
4021            unsafe {
4022                self._tab
4023                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(StartsWithExpr::VT_EXPR, None)
4024            }
4025        }
4026        #[inline]
4027        pub fn pattern(&self) -> Option<&'a str> {
4028            // Safety:
4029            // Created from valid Table for this object
4030            // which contains a valid value in this slot
4031            unsafe {
4032                self._tab
4033                    .get::<::flatbuffers::ForwardsUOffset<&str>>(StartsWithExpr::VT_PATTERN, None)
4034            }
4035        }
4036    }
4037
4038    impl ::flatbuffers::Verifiable for StartsWithExpr<'_> {
4039        #[inline]
4040        fn run_verifier(
4041            v: &mut ::flatbuffers::Verifier,
4042            pos: usize,
4043        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4044            v.visit_table(pos)?
4045                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
4046                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
4047                    "pattern",
4048                    Self::VT_PATTERN,
4049                    false,
4050                )?
4051                .finish();
4052            Ok(())
4053        }
4054    }
4055    pub struct StartsWithExprArgs<'a> {
4056        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4057        pub pattern: Option<::flatbuffers::WIPOffset<&'a str>>,
4058    }
4059    impl<'a> Default for StartsWithExprArgs<'a> {
4060        #[inline]
4061        fn default() -> Self {
4062            StartsWithExprArgs {
4063                expr: None,
4064                pattern: None,
4065            }
4066        }
4067    }
4068
4069    pub struct StartsWithExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4070        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4071        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4072    }
4073    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> StartsWithExprBuilder<'a, 'b, A> {
4074        #[inline]
4075        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
4076            self.fbb_
4077                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(StartsWithExpr::VT_EXPR, expr);
4078        }
4079        #[inline]
4080        pub fn add_pattern(&mut self, pattern: ::flatbuffers::WIPOffset<&'b str>) {
4081            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
4082                StartsWithExpr::VT_PATTERN,
4083                pattern,
4084            );
4085        }
4086        #[inline]
4087        pub fn new(
4088            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4089        ) -> StartsWithExprBuilder<'a, 'b, A> {
4090            let start = _fbb.start_table();
4091            StartsWithExprBuilder {
4092                fbb_: _fbb,
4093                start_: start,
4094            }
4095        }
4096        #[inline]
4097        pub fn finish(self) -> ::flatbuffers::WIPOffset<StartsWithExpr<'a>> {
4098            let o = self.fbb_.end_table(self.start_);
4099            ::flatbuffers::WIPOffset::new(o.value())
4100        }
4101    }
4102
4103    impl ::core::fmt::Debug for StartsWithExpr<'_> {
4104        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4105            let mut ds = f.debug_struct("StartsWithExpr");
4106            ds.field("expr", &self.expr());
4107            ds.field("pattern", &self.pattern());
4108            ds.finish()
4109        }
4110    }
4111    pub enum EndsWithExprOffset {}
4112    #[derive(Copy, Clone, PartialEq)]
4113
4114    pub struct EndsWithExpr<'a> {
4115        pub _tab: ::flatbuffers::Table<'a>,
4116    }
4117
4118    impl<'a> ::flatbuffers::Follow<'a> for EndsWithExpr<'a> {
4119        type Inner = EndsWithExpr<'a>;
4120        #[inline]
4121        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4122            Self {
4123                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4124            }
4125        }
4126    }
4127
4128    impl<'a> EndsWithExpr<'a> {
4129        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
4130        pub const VT_PATTERN: ::flatbuffers::VOffsetT = 6;
4131
4132        #[inline]
4133        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4134            EndsWithExpr { _tab: table }
4135        }
4136        #[allow(unused_mut)]
4137        pub fn create<
4138            'bldr: 'args,
4139            'args: 'mut_bldr,
4140            'mut_bldr,
4141            A: ::flatbuffers::Allocator + 'bldr,
4142        >(
4143            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4144            args: &'args EndsWithExprArgs<'args>,
4145        ) -> ::flatbuffers::WIPOffset<EndsWithExpr<'bldr>> {
4146            let mut builder = EndsWithExprBuilder::new(_fbb);
4147            if let Some(x) = args.pattern {
4148                builder.add_pattern(x);
4149            }
4150            if let Some(x) = args.expr {
4151                builder.add_expr(x);
4152            }
4153            builder.finish()
4154        }
4155
4156        #[inline]
4157        pub fn expr(&self) -> Option<Expr<'a>> {
4158            // Safety:
4159            // Created from valid Table for this object
4160            // which contains a valid value in this slot
4161            unsafe {
4162                self._tab
4163                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(EndsWithExpr::VT_EXPR, None)
4164            }
4165        }
4166        #[inline]
4167        pub fn pattern(&self) -> Option<&'a str> {
4168            // Safety:
4169            // Created from valid Table for this object
4170            // which contains a valid value in this slot
4171            unsafe {
4172                self._tab
4173                    .get::<::flatbuffers::ForwardsUOffset<&str>>(EndsWithExpr::VT_PATTERN, None)
4174            }
4175        }
4176    }
4177
4178    impl ::flatbuffers::Verifiable for EndsWithExpr<'_> {
4179        #[inline]
4180        fn run_verifier(
4181            v: &mut ::flatbuffers::Verifier,
4182            pos: usize,
4183        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4184            v.visit_table(pos)?
4185                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
4186                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
4187                    "pattern",
4188                    Self::VT_PATTERN,
4189                    false,
4190                )?
4191                .finish();
4192            Ok(())
4193        }
4194    }
4195    pub struct EndsWithExprArgs<'a> {
4196        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4197        pub pattern: Option<::flatbuffers::WIPOffset<&'a str>>,
4198    }
4199    impl<'a> Default for EndsWithExprArgs<'a> {
4200        #[inline]
4201        fn default() -> Self {
4202            EndsWithExprArgs {
4203                expr: None,
4204                pattern: None,
4205            }
4206        }
4207    }
4208
4209    pub struct EndsWithExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4210        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4211        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4212    }
4213    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> EndsWithExprBuilder<'a, 'b, A> {
4214        #[inline]
4215        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
4216            self.fbb_
4217                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(EndsWithExpr::VT_EXPR, expr);
4218        }
4219        #[inline]
4220        pub fn add_pattern(&mut self, pattern: ::flatbuffers::WIPOffset<&'b str>) {
4221            self.fbb_
4222                .push_slot_always::<::flatbuffers::WIPOffset<_>>(EndsWithExpr::VT_PATTERN, pattern);
4223        }
4224        #[inline]
4225        pub fn new(
4226            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4227        ) -> EndsWithExprBuilder<'a, 'b, A> {
4228            let start = _fbb.start_table();
4229            EndsWithExprBuilder {
4230                fbb_: _fbb,
4231                start_: start,
4232            }
4233        }
4234        #[inline]
4235        pub fn finish(self) -> ::flatbuffers::WIPOffset<EndsWithExpr<'a>> {
4236            let o = self.fbb_.end_table(self.start_);
4237            ::flatbuffers::WIPOffset::new(o.value())
4238        }
4239    }
4240
4241    impl ::core::fmt::Debug for EndsWithExpr<'_> {
4242        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4243            let mut ds = f.debug_struct("EndsWithExpr");
4244            ds.field("expr", &self.expr());
4245            ds.field("pattern", &self.pattern());
4246            ds.finish()
4247        }
4248    }
4249    pub enum ContainsExprOffset {}
4250    #[derive(Copy, Clone, PartialEq)]
4251
4252    pub struct ContainsExpr<'a> {
4253        pub _tab: ::flatbuffers::Table<'a>,
4254    }
4255
4256    impl<'a> ::flatbuffers::Follow<'a> for ContainsExpr<'a> {
4257        type Inner = ContainsExpr<'a>;
4258        #[inline]
4259        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4260            Self {
4261                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4262            }
4263        }
4264    }
4265
4266    impl<'a> ContainsExpr<'a> {
4267        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
4268        pub const VT_PATTERN: ::flatbuffers::VOffsetT = 6;
4269
4270        #[inline]
4271        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4272            ContainsExpr { _tab: table }
4273        }
4274        #[allow(unused_mut)]
4275        pub fn create<
4276            'bldr: 'args,
4277            'args: 'mut_bldr,
4278            'mut_bldr,
4279            A: ::flatbuffers::Allocator + 'bldr,
4280        >(
4281            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4282            args: &'args ContainsExprArgs<'args>,
4283        ) -> ::flatbuffers::WIPOffset<ContainsExpr<'bldr>> {
4284            let mut builder = ContainsExprBuilder::new(_fbb);
4285            if let Some(x) = args.pattern {
4286                builder.add_pattern(x);
4287            }
4288            if let Some(x) = args.expr {
4289                builder.add_expr(x);
4290            }
4291            builder.finish()
4292        }
4293
4294        #[inline]
4295        pub fn expr(&self) -> Option<Expr<'a>> {
4296            // Safety:
4297            // Created from valid Table for this object
4298            // which contains a valid value in this slot
4299            unsafe {
4300                self._tab
4301                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(ContainsExpr::VT_EXPR, None)
4302            }
4303        }
4304        #[inline]
4305        pub fn pattern(&self) -> Option<&'a str> {
4306            // Safety:
4307            // Created from valid Table for this object
4308            // which contains a valid value in this slot
4309            unsafe {
4310                self._tab
4311                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ContainsExpr::VT_PATTERN, None)
4312            }
4313        }
4314    }
4315
4316    impl ::flatbuffers::Verifiable for ContainsExpr<'_> {
4317        #[inline]
4318        fn run_verifier(
4319            v: &mut ::flatbuffers::Verifier,
4320            pos: usize,
4321        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4322            v.visit_table(pos)?
4323                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
4324                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
4325                    "pattern",
4326                    Self::VT_PATTERN,
4327                    false,
4328                )?
4329                .finish();
4330            Ok(())
4331        }
4332    }
4333    pub struct ContainsExprArgs<'a> {
4334        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4335        pub pattern: Option<::flatbuffers::WIPOffset<&'a str>>,
4336    }
4337    impl<'a> Default for ContainsExprArgs<'a> {
4338        #[inline]
4339        fn default() -> Self {
4340            ContainsExprArgs {
4341                expr: None,
4342                pattern: None,
4343            }
4344        }
4345    }
4346
4347    pub struct ContainsExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4348        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4349        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4350    }
4351    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ContainsExprBuilder<'a, 'b, A> {
4352        #[inline]
4353        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
4354            self.fbb_
4355                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(ContainsExpr::VT_EXPR, expr);
4356        }
4357        #[inline]
4358        pub fn add_pattern(&mut self, pattern: ::flatbuffers::WIPOffset<&'b str>) {
4359            self.fbb_
4360                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ContainsExpr::VT_PATTERN, pattern);
4361        }
4362        #[inline]
4363        pub fn new(
4364            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4365        ) -> ContainsExprBuilder<'a, 'b, A> {
4366            let start = _fbb.start_table();
4367            ContainsExprBuilder {
4368                fbb_: _fbb,
4369                start_: start,
4370            }
4371        }
4372        #[inline]
4373        pub fn finish(self) -> ::flatbuffers::WIPOffset<ContainsExpr<'a>> {
4374            let o = self.fbb_.end_table(self.start_);
4375            ::flatbuffers::WIPOffset::new(o.value())
4376        }
4377    }
4378
4379    impl ::core::fmt::Debug for ContainsExpr<'_> {
4380        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4381            let mut ds = f.debug_struct("ContainsExpr");
4382            ds.field("expr", &self.expr());
4383            ds.field("pattern", &self.pattern());
4384            ds.finish()
4385        }
4386    }
4387    pub enum InExprOffset {}
4388    #[derive(Copy, Clone, PartialEq)]
4389
4390    pub struct InExpr<'a> {
4391        pub _tab: ::flatbuffers::Table<'a>,
4392    }
4393
4394    impl<'a> ::flatbuffers::Follow<'a> for InExpr<'a> {
4395        type Inner = InExpr<'a>;
4396        #[inline]
4397        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4398            Self {
4399                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4400            }
4401        }
4402    }
4403
4404    impl<'a> InExpr<'a> {
4405        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
4406        pub const VT_ITEMS: ::flatbuffers::VOffsetT = 6;
4407
4408        #[inline]
4409        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4410            InExpr { _tab: table }
4411        }
4412        #[allow(unused_mut)]
4413        pub fn create<
4414            'bldr: 'args,
4415            'args: 'mut_bldr,
4416            'mut_bldr,
4417            A: ::flatbuffers::Allocator + 'bldr,
4418        >(
4419            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4420            args: &'args InExprArgs<'args>,
4421        ) -> ::flatbuffers::WIPOffset<InExpr<'bldr>> {
4422            let mut builder = InExprBuilder::new(_fbb);
4423            if let Some(x) = args.items {
4424                builder.add_items(x);
4425            }
4426            if let Some(x) = args.expr {
4427                builder.add_expr(x);
4428            }
4429            builder.finish()
4430        }
4431
4432        #[inline]
4433        pub fn expr(&self) -> Option<Expr<'a>> {
4434            // Safety:
4435            // Created from valid Table for this object
4436            // which contains a valid value in this slot
4437            unsafe {
4438                self._tab
4439                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(InExpr::VT_EXPR, None)
4440            }
4441        }
4442        #[inline]
4443        pub fn items(
4444            &self,
4445        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>> {
4446            // Safety:
4447            // Created from valid Table for this object
4448            // which contains a valid value in this slot
4449            unsafe {
4450                self._tab.get::<::flatbuffers::ForwardsUOffset<
4451                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr>>,
4452                >>(InExpr::VT_ITEMS, None)
4453            }
4454        }
4455    }
4456
4457    impl ::flatbuffers::Verifiable for InExpr<'_> {
4458        #[inline]
4459        fn run_verifier(
4460            v: &mut ::flatbuffers::Verifier,
4461            pos: usize,
4462        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4463            v.visit_table(pos)?
4464                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
4465                .visit_field::<::flatbuffers::ForwardsUOffset<
4466                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<Expr>>,
4467                >>("items", Self::VT_ITEMS, false)?
4468                .finish();
4469            Ok(())
4470        }
4471    }
4472    pub struct InExprArgs<'a> {
4473        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4474        pub items: Option<
4475            ::flatbuffers::WIPOffset<
4476                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>,
4477            >,
4478        >,
4479    }
4480    impl<'a> Default for InExprArgs<'a> {
4481        #[inline]
4482        fn default() -> Self {
4483            InExprArgs {
4484                expr: None,
4485                items: None,
4486            }
4487        }
4488    }
4489
4490    pub struct InExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4491        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4492        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4493    }
4494    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> InExprBuilder<'a, 'b, A> {
4495        #[inline]
4496        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
4497            self.fbb_
4498                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(InExpr::VT_EXPR, expr);
4499        }
4500        #[inline]
4501        pub fn add_items(
4502            &mut self,
4503            items: ::flatbuffers::WIPOffset<
4504                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<Expr<'b>>>,
4505            >,
4506        ) {
4507            self.fbb_
4508                .push_slot_always::<::flatbuffers::WIPOffset<_>>(InExpr::VT_ITEMS, items);
4509        }
4510        #[inline]
4511        pub fn new(
4512            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4513        ) -> InExprBuilder<'a, 'b, A> {
4514            let start = _fbb.start_table();
4515            InExprBuilder {
4516                fbb_: _fbb,
4517                start_: start,
4518            }
4519        }
4520        #[inline]
4521        pub fn finish(self) -> ::flatbuffers::WIPOffset<InExpr<'a>> {
4522            let o = self.fbb_.end_table(self.start_);
4523            ::flatbuffers::WIPOffset::new(o.value())
4524        }
4525    }
4526
4527    impl ::core::fmt::Debug for InExpr<'_> {
4528        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4529            let mut ds = f.debug_struct("InExpr");
4530            ds.field("expr", &self.expr());
4531            ds.field("items", &self.items());
4532            ds.finish()
4533        }
4534    }
4535    pub enum ListLiteralExprOffset {}
4536    #[derive(Copy, Clone, PartialEq)]
4537
4538    pub struct ListLiteralExpr<'a> {
4539        pub _tab: ::flatbuffers::Table<'a>,
4540    }
4541
4542    impl<'a> ::flatbuffers::Follow<'a> for ListLiteralExpr<'a> {
4543        type Inner = ListLiteralExpr<'a>;
4544        #[inline]
4545        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4546            Self {
4547                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4548            }
4549        }
4550    }
4551
4552    impl<'a> ListLiteralExpr<'a> {
4553        pub const VT_ITEMS: ::flatbuffers::VOffsetT = 4;
4554
4555        #[inline]
4556        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4557            ListLiteralExpr { _tab: table }
4558        }
4559        #[allow(unused_mut)]
4560        pub fn create<
4561            'bldr: 'args,
4562            'args: 'mut_bldr,
4563            'mut_bldr,
4564            A: ::flatbuffers::Allocator + 'bldr,
4565        >(
4566            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4567            args: &'args ListLiteralExprArgs<'args>,
4568        ) -> ::flatbuffers::WIPOffset<ListLiteralExpr<'bldr>> {
4569            let mut builder = ListLiteralExprBuilder::new(_fbb);
4570            if let Some(x) = args.items {
4571                builder.add_items(x);
4572            }
4573            builder.finish()
4574        }
4575
4576        #[inline]
4577        pub fn items(
4578            &self,
4579        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>> {
4580            // Safety:
4581            // Created from valid Table for this object
4582            // which contains a valid value in this slot
4583            unsafe {
4584                self._tab.get::<::flatbuffers::ForwardsUOffset<
4585                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr>>,
4586                >>(ListLiteralExpr::VT_ITEMS, None)
4587            }
4588        }
4589    }
4590
4591    impl ::flatbuffers::Verifiable for ListLiteralExpr<'_> {
4592        #[inline]
4593        fn run_verifier(
4594            v: &mut ::flatbuffers::Verifier,
4595            pos: usize,
4596        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4597            v.visit_table(pos)?
4598                .visit_field::<::flatbuffers::ForwardsUOffset<
4599                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<Expr>>,
4600                >>("items", Self::VT_ITEMS, false)?
4601                .finish();
4602            Ok(())
4603        }
4604    }
4605    pub struct ListLiteralExprArgs<'a> {
4606        pub items: Option<
4607            ::flatbuffers::WIPOffset<
4608                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>,
4609            >,
4610        >,
4611    }
4612    impl<'a> Default for ListLiteralExprArgs<'a> {
4613        #[inline]
4614        fn default() -> Self {
4615            ListLiteralExprArgs { items: None }
4616        }
4617    }
4618
4619    pub struct ListLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4620        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4621        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4622    }
4623    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ListLiteralExprBuilder<'a, 'b, A> {
4624        #[inline]
4625        pub fn add_items(
4626            &mut self,
4627            items: ::flatbuffers::WIPOffset<
4628                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<Expr<'b>>>,
4629            >,
4630        ) {
4631            self.fbb_
4632                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ListLiteralExpr::VT_ITEMS, items);
4633        }
4634        #[inline]
4635        pub fn new(
4636            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4637        ) -> ListLiteralExprBuilder<'a, 'b, A> {
4638            let start = _fbb.start_table();
4639            ListLiteralExprBuilder {
4640                fbb_: _fbb,
4641                start_: start,
4642            }
4643        }
4644        #[inline]
4645        pub fn finish(self) -> ::flatbuffers::WIPOffset<ListLiteralExpr<'a>> {
4646            let o = self.fbb_.end_table(self.start_);
4647            ::flatbuffers::WIPOffset::new(o.value())
4648        }
4649    }
4650
4651    impl ::core::fmt::Debug for ListLiteralExpr<'_> {
4652        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4653            let mut ds = f.debug_struct("ListLiteralExpr");
4654            ds.field("items", &self.items());
4655            ds.finish()
4656        }
4657    }
4658    pub enum MapEntryExprOffset {}
4659    #[derive(Copy, Clone, PartialEq)]
4660
4661    pub struct MapEntryExpr<'a> {
4662        pub _tab: ::flatbuffers::Table<'a>,
4663    }
4664
4665    impl<'a> ::flatbuffers::Follow<'a> for MapEntryExpr<'a> {
4666        type Inner = MapEntryExpr<'a>;
4667        #[inline]
4668        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4669            Self {
4670                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4671            }
4672        }
4673    }
4674
4675    impl<'a> MapEntryExpr<'a> {
4676        pub const VT_KEY: ::flatbuffers::VOffsetT = 4;
4677        pub const VT_VALUE: ::flatbuffers::VOffsetT = 6;
4678
4679        #[inline]
4680        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4681            MapEntryExpr { _tab: table }
4682        }
4683        #[allow(unused_mut)]
4684        pub fn create<
4685            'bldr: 'args,
4686            'args: 'mut_bldr,
4687            'mut_bldr,
4688            A: ::flatbuffers::Allocator + 'bldr,
4689        >(
4690            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4691            args: &'args MapEntryExprArgs<'args>,
4692        ) -> ::flatbuffers::WIPOffset<MapEntryExpr<'bldr>> {
4693            let mut builder = MapEntryExprBuilder::new(_fbb);
4694            if let Some(x) = args.value {
4695                builder.add_value(x);
4696            }
4697            if let Some(x) = args.key {
4698                builder.add_key(x);
4699            }
4700            builder.finish()
4701        }
4702
4703        #[inline]
4704        pub fn key(&self) -> Option<&'a str> {
4705            // Safety:
4706            // Created from valid Table for this object
4707            // which contains a valid value in this slot
4708            unsafe {
4709                self._tab
4710                    .get::<::flatbuffers::ForwardsUOffset<&str>>(MapEntryExpr::VT_KEY, None)
4711            }
4712        }
4713        #[inline]
4714        pub fn value(&self) -> Option<Expr<'a>> {
4715            // Safety:
4716            // Created from valid Table for this object
4717            // which contains a valid value in this slot
4718            unsafe {
4719                self._tab
4720                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MapEntryExpr::VT_VALUE, None)
4721            }
4722        }
4723    }
4724
4725    impl ::flatbuffers::Verifiable for MapEntryExpr<'_> {
4726        #[inline]
4727        fn run_verifier(
4728            v: &mut ::flatbuffers::Verifier,
4729            pos: usize,
4730        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4731            v.visit_table(pos)?
4732                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
4733                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
4734                    "value",
4735                    Self::VT_VALUE,
4736                    false,
4737                )?
4738                .finish();
4739            Ok(())
4740        }
4741    }
4742    pub struct MapEntryExprArgs<'a> {
4743        pub key: Option<::flatbuffers::WIPOffset<&'a str>>,
4744        pub value: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4745    }
4746    impl<'a> Default for MapEntryExprArgs<'a> {
4747        #[inline]
4748        fn default() -> Self {
4749            MapEntryExprArgs {
4750                key: None,
4751                value: None,
4752            }
4753        }
4754    }
4755
4756    pub struct MapEntryExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4757        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4758        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4759    }
4760    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> MapEntryExprBuilder<'a, 'b, A> {
4761        #[inline]
4762        pub fn add_key(&mut self, key: ::flatbuffers::WIPOffset<&'b str>) {
4763            self.fbb_
4764                .push_slot_always::<::flatbuffers::WIPOffset<_>>(MapEntryExpr::VT_KEY, key);
4765        }
4766        #[inline]
4767        pub fn add_value(&mut self, value: ::flatbuffers::WIPOffset<Expr<'b>>) {
4768            self.fbb_
4769                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(MapEntryExpr::VT_VALUE, value);
4770        }
4771        #[inline]
4772        pub fn new(
4773            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4774        ) -> MapEntryExprBuilder<'a, 'b, A> {
4775            let start = _fbb.start_table();
4776            MapEntryExprBuilder {
4777                fbb_: _fbb,
4778                start_: start,
4779            }
4780        }
4781        #[inline]
4782        pub fn finish(self) -> ::flatbuffers::WIPOffset<MapEntryExpr<'a>> {
4783            let o = self.fbb_.end_table(self.start_);
4784            ::flatbuffers::WIPOffset::new(o.value())
4785        }
4786    }
4787
4788    impl ::core::fmt::Debug for MapEntryExpr<'_> {
4789        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4790            let mut ds = f.debug_struct("MapEntryExpr");
4791            ds.field("key", &self.key());
4792            ds.field("value", &self.value());
4793            ds.finish()
4794        }
4795    }
4796    pub enum MapLiteralExprOffset {}
4797    #[derive(Copy, Clone, PartialEq)]
4798
4799    pub struct MapLiteralExpr<'a> {
4800        pub _tab: ::flatbuffers::Table<'a>,
4801    }
4802
4803    impl<'a> ::flatbuffers::Follow<'a> for MapLiteralExpr<'a> {
4804        type Inner = MapLiteralExpr<'a>;
4805        #[inline]
4806        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4807            Self {
4808                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4809            }
4810        }
4811    }
4812
4813    impl<'a> MapLiteralExpr<'a> {
4814        pub const VT_ENTRIES: ::flatbuffers::VOffsetT = 4;
4815
4816        #[inline]
4817        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4818            MapLiteralExpr { _tab: table }
4819        }
4820        #[allow(unused_mut)]
4821        pub fn create<
4822            'bldr: 'args,
4823            'args: 'mut_bldr,
4824            'mut_bldr,
4825            A: ::flatbuffers::Allocator + 'bldr,
4826        >(
4827            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4828            args: &'args MapLiteralExprArgs<'args>,
4829        ) -> ::flatbuffers::WIPOffset<MapLiteralExpr<'bldr>> {
4830            let mut builder = MapLiteralExprBuilder::new(_fbb);
4831            if let Some(x) = args.entries {
4832                builder.add_entries(x);
4833            }
4834            builder.finish()
4835        }
4836
4837        #[inline]
4838        pub fn entries(
4839            &self,
4840        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<MapEntryExpr<'a>>>>
4841        {
4842            // Safety:
4843            // Created from valid Table for this object
4844            // which contains a valid value in this slot
4845            unsafe {
4846                self._tab.get::<::flatbuffers::ForwardsUOffset<
4847                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<MapEntryExpr>>,
4848                >>(MapLiteralExpr::VT_ENTRIES, None)
4849            }
4850        }
4851    }
4852
4853    impl ::flatbuffers::Verifiable for MapLiteralExpr<'_> {
4854        #[inline]
4855        fn run_verifier(
4856            v: &mut ::flatbuffers::Verifier,
4857            pos: usize,
4858        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4859            v.visit_table(pos)?
4860                .visit_field::<::flatbuffers::ForwardsUOffset<
4861                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<MapEntryExpr>>,
4862                >>("entries", Self::VT_ENTRIES, false)?
4863                .finish();
4864            Ok(())
4865        }
4866    }
4867    pub struct MapLiteralExprArgs<'a> {
4868        pub entries: Option<
4869            ::flatbuffers::WIPOffset<
4870                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<MapEntryExpr<'a>>>,
4871            >,
4872        >,
4873    }
4874    impl<'a> Default for MapLiteralExprArgs<'a> {
4875        #[inline]
4876        fn default() -> Self {
4877            MapLiteralExprArgs { entries: None }
4878        }
4879    }
4880
4881    pub struct MapLiteralExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4882        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4883        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
4884    }
4885    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> MapLiteralExprBuilder<'a, 'b, A> {
4886        #[inline]
4887        pub fn add_entries(
4888            &mut self,
4889            entries: ::flatbuffers::WIPOffset<
4890                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<MapEntryExpr<'b>>>,
4891            >,
4892        ) {
4893            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
4894                MapLiteralExpr::VT_ENTRIES,
4895                entries,
4896            );
4897        }
4898        #[inline]
4899        pub fn new(
4900            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4901        ) -> MapLiteralExprBuilder<'a, 'b, A> {
4902            let start = _fbb.start_table();
4903            MapLiteralExprBuilder {
4904                fbb_: _fbb,
4905                start_: start,
4906            }
4907        }
4908        #[inline]
4909        pub fn finish(self) -> ::flatbuffers::WIPOffset<MapLiteralExpr<'a>> {
4910            let o = self.fbb_.end_table(self.start_);
4911            ::flatbuffers::WIPOffset::new(o.value())
4912        }
4913    }
4914
4915    impl ::core::fmt::Debug for MapLiteralExpr<'_> {
4916        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4917            let mut ds = f.debug_struct("MapLiteralExpr");
4918            ds.field("entries", &self.entries());
4919            ds.finish()
4920        }
4921    }
4922    pub enum ExistsExprOffset {}
4923    #[derive(Copy, Clone, PartialEq)]
4924
4925    pub struct ExistsExpr<'a> {
4926        pub _tab: ::flatbuffers::Table<'a>,
4927    }
4928
4929    impl<'a> ::flatbuffers::Follow<'a> for ExistsExpr<'a> {
4930        type Inner = ExistsExpr<'a>;
4931        #[inline]
4932        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4933            Self {
4934                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
4935            }
4936        }
4937    }
4938
4939    impl<'a> ExistsExpr<'a> {
4940        pub const VT_EXPR: ::flatbuffers::VOffsetT = 4;
4941
4942        #[inline]
4943        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
4944            ExistsExpr { _tab: table }
4945        }
4946        #[allow(unused_mut)]
4947        pub fn create<
4948            'bldr: 'args,
4949            'args: 'mut_bldr,
4950            'mut_bldr,
4951            A: ::flatbuffers::Allocator + 'bldr,
4952        >(
4953            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
4954            args: &'args ExistsExprArgs<'args>,
4955        ) -> ::flatbuffers::WIPOffset<ExistsExpr<'bldr>> {
4956            let mut builder = ExistsExprBuilder::new(_fbb);
4957            if let Some(x) = args.expr {
4958                builder.add_expr(x);
4959            }
4960            builder.finish()
4961        }
4962
4963        #[inline]
4964        pub fn expr(&self) -> Option<Expr<'a>> {
4965            // Safety:
4966            // Created from valid Table for this object
4967            // which contains a valid value in this slot
4968            unsafe {
4969                self._tab
4970                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(ExistsExpr::VT_EXPR, None)
4971            }
4972        }
4973    }
4974
4975    impl ::flatbuffers::Verifiable for ExistsExpr<'_> {
4976        #[inline]
4977        fn run_verifier(
4978            v: &mut ::flatbuffers::Verifier,
4979            pos: usize,
4980        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
4981            v.visit_table(pos)?
4982                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
4983                .finish();
4984            Ok(())
4985        }
4986    }
4987    pub struct ExistsExprArgs<'a> {
4988        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
4989    }
4990    impl<'a> Default for ExistsExprArgs<'a> {
4991        #[inline]
4992        fn default() -> Self {
4993            ExistsExprArgs { expr: None }
4994        }
4995    }
4996
4997    pub struct ExistsExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
4998        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
4999        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5000    }
5001    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ExistsExprBuilder<'a, 'b, A> {
5002        #[inline]
5003        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
5004            self.fbb_
5005                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(ExistsExpr::VT_EXPR, expr);
5006        }
5007        #[inline]
5008        pub fn new(
5009            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5010        ) -> ExistsExprBuilder<'a, 'b, A> {
5011            let start = _fbb.start_table();
5012            ExistsExprBuilder {
5013                fbb_: _fbb,
5014                start_: start,
5015            }
5016        }
5017        #[inline]
5018        pub fn finish(self) -> ::flatbuffers::WIPOffset<ExistsExpr<'a>> {
5019            let o = self.fbb_.end_table(self.start_);
5020            ::flatbuffers::WIPOffset::new(o.value())
5021        }
5022    }
5023
5024    impl ::core::fmt::Debug for ExistsExpr<'_> {
5025        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5026            let mut ds = f.debug_struct("ExistsExpr");
5027            ds.field("expr", &self.expr());
5028            ds.finish()
5029        }
5030    }
5031    pub enum ListComprehensionExprOffset {}
5032    #[derive(Copy, Clone, PartialEq)]
5033
5034    pub struct ListComprehensionExpr<'a> {
5035        pub _tab: ::flatbuffers::Table<'a>,
5036    }
5037
5038    impl<'a> ::flatbuffers::Follow<'a> for ListComprehensionExpr<'a> {
5039        type Inner = ListComprehensionExpr<'a>;
5040        #[inline]
5041        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5042            Self {
5043                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5044            }
5045        }
5046    }
5047
5048    impl<'a> ListComprehensionExpr<'a> {
5049        pub const VT_LIST: ::flatbuffers::VOffsetT = 4;
5050        pub const VT_VAR: ::flatbuffers::VOffsetT = 6;
5051        pub const VT_PREDICATE: ::flatbuffers::VOffsetT = 8;
5052        pub const VT_MAP: ::flatbuffers::VOffsetT = 10;
5053
5054        #[inline]
5055        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5056            ListComprehensionExpr { _tab: table }
5057        }
5058        #[allow(unused_mut)]
5059        pub fn create<
5060            'bldr: 'args,
5061            'args: 'mut_bldr,
5062            'mut_bldr,
5063            A: ::flatbuffers::Allocator + 'bldr,
5064        >(
5065            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5066            args: &'args ListComprehensionExprArgs<'args>,
5067        ) -> ::flatbuffers::WIPOffset<ListComprehensionExpr<'bldr>> {
5068            let mut builder = ListComprehensionExprBuilder::new(_fbb);
5069            if let Some(x) = args.map {
5070                builder.add_map(x);
5071            }
5072            if let Some(x) = args.predicate {
5073                builder.add_predicate(x);
5074            }
5075            if let Some(x) = args.var {
5076                builder.add_var(x);
5077            }
5078            if let Some(x) = args.list {
5079                builder.add_list(x);
5080            }
5081            builder.finish()
5082        }
5083
5084        #[inline]
5085        pub fn list(&self) -> Option<Expr<'a>> {
5086            // Safety:
5087            // Created from valid Table for this object
5088            // which contains a valid value in this slot
5089            unsafe {
5090                self._tab.get::<::flatbuffers::ForwardsUOffset<Expr>>(
5091                    ListComprehensionExpr::VT_LIST,
5092                    None,
5093                )
5094            }
5095        }
5096        #[inline]
5097        pub fn var(&self) -> Option<&'a str> {
5098            // Safety:
5099            // Created from valid Table for this object
5100            // which contains a valid value in this slot
5101            unsafe {
5102                self._tab.get::<::flatbuffers::ForwardsUOffset<&str>>(
5103                    ListComprehensionExpr::VT_VAR,
5104                    None,
5105                )
5106            }
5107        }
5108        #[inline]
5109        pub fn predicate(&self) -> Option<Expr<'a>> {
5110            // Safety:
5111            // Created from valid Table for this object
5112            // which contains a valid value in this slot
5113            unsafe {
5114                self._tab.get::<::flatbuffers::ForwardsUOffset<Expr>>(
5115                    ListComprehensionExpr::VT_PREDICATE,
5116                    None,
5117                )
5118            }
5119        }
5120        #[inline]
5121        pub fn map(&self) -> Option<Expr<'a>> {
5122            // Safety:
5123            // Created from valid Table for this object
5124            // which contains a valid value in this slot
5125            unsafe {
5126                self._tab.get::<::flatbuffers::ForwardsUOffset<Expr>>(
5127                    ListComprehensionExpr::VT_MAP,
5128                    None,
5129                )
5130            }
5131        }
5132    }
5133
5134    impl ::flatbuffers::Verifiable for ListComprehensionExpr<'_> {
5135        #[inline]
5136        fn run_verifier(
5137            v: &mut ::flatbuffers::Verifier,
5138            pos: usize,
5139        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5140            v.visit_table(pos)?
5141                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("list", Self::VT_LIST, false)?
5142                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("var", Self::VT_VAR, false)?
5143                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
5144                    "predicate",
5145                    Self::VT_PREDICATE,
5146                    false,
5147                )?
5148                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("map", Self::VT_MAP, false)?
5149                .finish();
5150            Ok(())
5151        }
5152    }
5153    pub struct ListComprehensionExprArgs<'a> {
5154        pub list: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5155        pub var: Option<::flatbuffers::WIPOffset<&'a str>>,
5156        pub predicate: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5157        pub map: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5158    }
5159    impl<'a> Default for ListComprehensionExprArgs<'a> {
5160        #[inline]
5161        fn default() -> Self {
5162            ListComprehensionExprArgs {
5163                list: None,
5164                var: None,
5165                predicate: None,
5166                map: None,
5167            }
5168        }
5169    }
5170
5171    pub struct ListComprehensionExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5172        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5173        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5174    }
5175    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ListComprehensionExprBuilder<'a, 'b, A> {
5176        #[inline]
5177        pub fn add_list(&mut self, list: ::flatbuffers::WIPOffset<Expr<'b>>) {
5178            self.fbb_
5179                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5180                    ListComprehensionExpr::VT_LIST,
5181                    list,
5182                );
5183        }
5184        #[inline]
5185        pub fn add_var(&mut self, var: ::flatbuffers::WIPOffset<&'b str>) {
5186            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
5187                ListComprehensionExpr::VT_VAR,
5188                var,
5189            );
5190        }
5191        #[inline]
5192        pub fn add_predicate(&mut self, predicate: ::flatbuffers::WIPOffset<Expr<'b>>) {
5193            self.fbb_
5194                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5195                    ListComprehensionExpr::VT_PREDICATE,
5196                    predicate,
5197                );
5198        }
5199        #[inline]
5200        pub fn add_map(&mut self, map: ::flatbuffers::WIPOffset<Expr<'b>>) {
5201            self.fbb_
5202                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5203                    ListComprehensionExpr::VT_MAP,
5204                    map,
5205                );
5206        }
5207        #[inline]
5208        pub fn new(
5209            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5210        ) -> ListComprehensionExprBuilder<'a, 'b, A> {
5211            let start = _fbb.start_table();
5212            ListComprehensionExprBuilder {
5213                fbb_: _fbb,
5214                start_: start,
5215            }
5216        }
5217        #[inline]
5218        pub fn finish(self) -> ::flatbuffers::WIPOffset<ListComprehensionExpr<'a>> {
5219            let o = self.fbb_.end_table(self.start_);
5220            ::flatbuffers::WIPOffset::new(o.value())
5221        }
5222    }
5223
5224    impl ::core::fmt::Debug for ListComprehensionExpr<'_> {
5225        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5226            let mut ds = f.debug_struct("ListComprehensionExpr");
5227            ds.field("list", &self.list());
5228            ds.field("var", &self.var());
5229            ds.field("predicate", &self.predicate());
5230            ds.field("map", &self.map());
5231            ds.finish()
5232        }
5233    }
5234    pub enum AggExprOffset {}
5235    #[derive(Copy, Clone, PartialEq)]
5236
5237    pub struct AggExpr<'a> {
5238        pub _tab: ::flatbuffers::Table<'a>,
5239    }
5240
5241    impl<'a> ::flatbuffers::Follow<'a> for AggExpr<'a> {
5242        type Inner = AggExpr<'a>;
5243        #[inline]
5244        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5245            Self {
5246                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5247            }
5248        }
5249    }
5250
5251    impl<'a> AggExpr<'a> {
5252        pub const VT_FN_: ::flatbuffers::VOffsetT = 4;
5253        pub const VT_EXPR: ::flatbuffers::VOffsetT = 6;
5254
5255        #[inline]
5256        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5257            AggExpr { _tab: table }
5258        }
5259        #[allow(unused_mut)]
5260        pub fn create<
5261            'bldr: 'args,
5262            'args: 'mut_bldr,
5263            'mut_bldr,
5264            A: ::flatbuffers::Allocator + 'bldr,
5265        >(
5266            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5267            args: &'args AggExprArgs<'args>,
5268        ) -> ::flatbuffers::WIPOffset<AggExpr<'bldr>> {
5269            let mut builder = AggExprBuilder::new(_fbb);
5270            if let Some(x) = args.expr {
5271                builder.add_expr(x);
5272            }
5273            builder.add_fn_(args.fn_);
5274            builder.finish()
5275        }
5276
5277        #[inline]
5278        pub fn fn_(&self) -> AggFn {
5279            // Safety:
5280            // Created from valid Table for this object
5281            // which contains a valid value in this slot
5282            unsafe {
5283                self._tab
5284                    .get::<AggFn>(AggExpr::VT_FN_, Some(AggFn::count))
5285                    .unwrap()
5286            }
5287        }
5288        #[inline]
5289        pub fn expr(&self) -> Option<Expr<'a>> {
5290            // Safety:
5291            // Created from valid Table for this object
5292            // which contains a valid value in this slot
5293            unsafe {
5294                self._tab
5295                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(AggExpr::VT_EXPR, None)
5296            }
5297        }
5298    }
5299
5300    impl ::flatbuffers::Verifiable for AggExpr<'_> {
5301        #[inline]
5302        fn run_verifier(
5303            v: &mut ::flatbuffers::Verifier,
5304            pos: usize,
5305        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5306            v.visit_table(pos)?
5307                .visit_field::<AggFn>("fn_", Self::VT_FN_, false)?
5308                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("expr", Self::VT_EXPR, false)?
5309                .finish();
5310            Ok(())
5311        }
5312    }
5313    pub struct AggExprArgs<'a> {
5314        pub fn_: AggFn,
5315        pub expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5316    }
5317    impl<'a> Default for AggExprArgs<'a> {
5318        #[inline]
5319        fn default() -> Self {
5320            AggExprArgs {
5321                fn_: AggFn::count,
5322                expr: None,
5323            }
5324        }
5325    }
5326
5327    pub struct AggExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5328        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5329        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5330    }
5331    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> AggExprBuilder<'a, 'b, A> {
5332        #[inline]
5333        pub fn add_fn_(&mut self, fn_: AggFn) {
5334            self.fbb_
5335                .push_slot::<AggFn>(AggExpr::VT_FN_, fn_, AggFn::count);
5336        }
5337        #[inline]
5338        pub fn add_expr(&mut self, expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
5339            self.fbb_
5340                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(AggExpr::VT_EXPR, expr);
5341        }
5342        #[inline]
5343        pub fn new(
5344            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5345        ) -> AggExprBuilder<'a, 'b, A> {
5346            let start = _fbb.start_table();
5347            AggExprBuilder {
5348                fbb_: _fbb,
5349                start_: start,
5350            }
5351        }
5352        #[inline]
5353        pub fn finish(self) -> ::flatbuffers::WIPOffset<AggExpr<'a>> {
5354            let o = self.fbb_.end_table(self.start_);
5355            ::flatbuffers::WIPOffset::new(o.value())
5356        }
5357    }
5358
5359    impl ::core::fmt::Debug for AggExpr<'_> {
5360        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5361            let mut ds = f.debug_struct("AggExpr");
5362            ds.field("fn_", &self.fn_());
5363            ds.field("expr", &self.expr());
5364            ds.finish()
5365        }
5366    }
5367    pub enum ArithExprOffset {}
5368    #[derive(Copy, Clone, PartialEq)]
5369
5370    pub struct ArithExpr<'a> {
5371        pub _tab: ::flatbuffers::Table<'a>,
5372    }
5373
5374    impl<'a> ::flatbuffers::Follow<'a> for ArithExpr<'a> {
5375        type Inner = ArithExpr<'a>;
5376        #[inline]
5377        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5378            Self {
5379                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5380            }
5381        }
5382    }
5383
5384    impl<'a> ArithExpr<'a> {
5385        pub const VT_OP: ::flatbuffers::VOffsetT = 4;
5386        pub const VT_LHS: ::flatbuffers::VOffsetT = 6;
5387        pub const VT_RHS: ::flatbuffers::VOffsetT = 8;
5388
5389        #[inline]
5390        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5391            ArithExpr { _tab: table }
5392        }
5393        #[allow(unused_mut)]
5394        pub fn create<
5395            'bldr: 'args,
5396            'args: 'mut_bldr,
5397            'mut_bldr,
5398            A: ::flatbuffers::Allocator + 'bldr,
5399        >(
5400            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5401            args: &'args ArithExprArgs<'args>,
5402        ) -> ::flatbuffers::WIPOffset<ArithExpr<'bldr>> {
5403            let mut builder = ArithExprBuilder::new(_fbb);
5404            if let Some(x) = args.rhs {
5405                builder.add_rhs(x);
5406            }
5407            if let Some(x) = args.lhs {
5408                builder.add_lhs(x);
5409            }
5410            builder.add_op(args.op);
5411            builder.finish()
5412        }
5413
5414        #[inline]
5415        pub fn op(&self) -> ArithOp {
5416            // Safety:
5417            // Created from valid Table for this object
5418            // which contains a valid value in this slot
5419            unsafe {
5420                self._tab
5421                    .get::<ArithOp>(ArithExpr::VT_OP, Some(ArithOp::add))
5422                    .unwrap()
5423            }
5424        }
5425        #[inline]
5426        pub fn lhs(&self) -> Option<Expr<'a>> {
5427            // Safety:
5428            // Created from valid Table for this object
5429            // which contains a valid value in this slot
5430            unsafe {
5431                self._tab
5432                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(ArithExpr::VT_LHS, None)
5433            }
5434        }
5435        #[inline]
5436        pub fn rhs(&self) -> Option<Expr<'a>> {
5437            // Safety:
5438            // Created from valid Table for this object
5439            // which contains a valid value in this slot
5440            unsafe {
5441                self._tab
5442                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(ArithExpr::VT_RHS, None)
5443            }
5444        }
5445    }
5446
5447    impl ::flatbuffers::Verifiable for ArithExpr<'_> {
5448        #[inline]
5449        fn run_verifier(
5450            v: &mut ::flatbuffers::Verifier,
5451            pos: usize,
5452        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5453            v.visit_table(pos)?
5454                .visit_field::<ArithOp>("op", Self::VT_OP, false)?
5455                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("lhs", Self::VT_LHS, false)?
5456                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("rhs", Self::VT_RHS, false)?
5457                .finish();
5458            Ok(())
5459        }
5460    }
5461    pub struct ArithExprArgs<'a> {
5462        pub op: ArithOp,
5463        pub lhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5464        pub rhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5465    }
5466    impl<'a> Default for ArithExprArgs<'a> {
5467        #[inline]
5468        fn default() -> Self {
5469            ArithExprArgs {
5470                op: ArithOp::add,
5471                lhs: None,
5472                rhs: None,
5473            }
5474        }
5475    }
5476
5477    pub struct ArithExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5478        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5479        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5480    }
5481    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ArithExprBuilder<'a, 'b, A> {
5482        #[inline]
5483        pub fn add_op(&mut self, op: ArithOp) {
5484            self.fbb_
5485                .push_slot::<ArithOp>(ArithExpr::VT_OP, op, ArithOp::add);
5486        }
5487        #[inline]
5488        pub fn add_lhs(&mut self, lhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
5489            self.fbb_
5490                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(ArithExpr::VT_LHS, lhs);
5491        }
5492        #[inline]
5493        pub fn add_rhs(&mut self, rhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
5494            self.fbb_
5495                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(ArithExpr::VT_RHS, rhs);
5496        }
5497        #[inline]
5498        pub fn new(
5499            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5500        ) -> ArithExprBuilder<'a, 'b, A> {
5501            let start = _fbb.start_table();
5502            ArithExprBuilder {
5503                fbb_: _fbb,
5504                start_: start,
5505            }
5506        }
5507        #[inline]
5508        pub fn finish(self) -> ::flatbuffers::WIPOffset<ArithExpr<'a>> {
5509            let o = self.fbb_.end_table(self.start_);
5510            ::flatbuffers::WIPOffset::new(o.value())
5511        }
5512    }
5513
5514    impl ::core::fmt::Debug for ArithExpr<'_> {
5515        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5516            let mut ds = f.debug_struct("ArithExpr");
5517            ds.field("op", &self.op());
5518            ds.field("lhs", &self.lhs());
5519            ds.field("rhs", &self.rhs());
5520            ds.finish()
5521        }
5522    }
5523    pub enum ParamExprOffset {}
5524    #[derive(Copy, Clone, PartialEq)]
5525
5526    pub struct ParamExpr<'a> {
5527        pub _tab: ::flatbuffers::Table<'a>,
5528    }
5529
5530    impl<'a> ::flatbuffers::Follow<'a> for ParamExpr<'a> {
5531        type Inner = ParamExpr<'a>;
5532        #[inline]
5533        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5534            Self {
5535                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5536            }
5537        }
5538    }
5539
5540    impl<'a> ParamExpr<'a> {
5541        pub const VT_NAME: ::flatbuffers::VOffsetT = 4;
5542        pub const VT_EXPECTED_TYPE: ::flatbuffers::VOffsetT = 6;
5543
5544        #[inline]
5545        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5546            ParamExpr { _tab: table }
5547        }
5548        #[allow(unused_mut)]
5549        pub fn create<
5550            'bldr: 'args,
5551            'args: 'mut_bldr,
5552            'mut_bldr,
5553            A: ::flatbuffers::Allocator + 'bldr,
5554        >(
5555            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5556            args: &'args ParamExprArgs<'args>,
5557        ) -> ::flatbuffers::WIPOffset<ParamExpr<'bldr>> {
5558            let mut builder = ParamExprBuilder::new(_fbb);
5559            if let Some(x) = args.expected_type {
5560                builder.add_expected_type(x);
5561            }
5562            if let Some(x) = args.name {
5563                builder.add_name(x);
5564            }
5565            builder.finish()
5566        }
5567
5568        #[inline]
5569        pub fn name(&self) -> Option<&'a str> {
5570            // Safety:
5571            // Created from valid Table for this object
5572            // which contains a valid value in this slot
5573            unsafe {
5574                self._tab
5575                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ParamExpr::VT_NAME, None)
5576            }
5577        }
5578        #[inline]
5579        pub fn expected_type(&self) -> Option<&'a str> {
5580            // Safety:
5581            // Created from valid Table for this object
5582            // which contains a valid value in this slot
5583            unsafe {
5584                self._tab
5585                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ParamExpr::VT_EXPECTED_TYPE, None)
5586            }
5587        }
5588    }
5589
5590    impl ::flatbuffers::Verifiable for ParamExpr<'_> {
5591        #[inline]
5592        fn run_verifier(
5593            v: &mut ::flatbuffers::Verifier,
5594            pos: usize,
5595        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5596            v.visit_table(pos)?
5597                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
5598                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
5599                    "expected_type",
5600                    Self::VT_EXPECTED_TYPE,
5601                    false,
5602                )?
5603                .finish();
5604            Ok(())
5605        }
5606    }
5607    pub struct ParamExprArgs<'a> {
5608        pub name: Option<::flatbuffers::WIPOffset<&'a str>>,
5609        pub expected_type: Option<::flatbuffers::WIPOffset<&'a str>>,
5610    }
5611    impl<'a> Default for ParamExprArgs<'a> {
5612        #[inline]
5613        fn default() -> Self {
5614            ParamExprArgs {
5615                name: None,
5616                expected_type: None,
5617            }
5618        }
5619    }
5620
5621    pub struct ParamExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5622        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5623        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5624    }
5625    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ParamExprBuilder<'a, 'b, A> {
5626        #[inline]
5627        pub fn add_name(&mut self, name: ::flatbuffers::WIPOffset<&'b str>) {
5628            self.fbb_
5629                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ParamExpr::VT_NAME, name);
5630        }
5631        #[inline]
5632        pub fn add_expected_type(&mut self, expected_type: ::flatbuffers::WIPOffset<&'b str>) {
5633            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
5634                ParamExpr::VT_EXPECTED_TYPE,
5635                expected_type,
5636            );
5637        }
5638        #[inline]
5639        pub fn new(
5640            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5641        ) -> ParamExprBuilder<'a, 'b, A> {
5642            let start = _fbb.start_table();
5643            ParamExprBuilder {
5644                fbb_: _fbb,
5645                start_: start,
5646            }
5647        }
5648        #[inline]
5649        pub fn finish(self) -> ::flatbuffers::WIPOffset<ParamExpr<'a>> {
5650            let o = self.fbb_.end_table(self.start_);
5651            ::flatbuffers::WIPOffset::new(o.value())
5652        }
5653    }
5654
5655    impl ::core::fmt::Debug for ParamExpr<'_> {
5656        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5657            let mut ds = f.debug_struct("ParamExpr");
5658            ds.field("name", &self.name());
5659            ds.field("expected_type", &self.expected_type());
5660            ds.finish()
5661        }
5662    }
5663    pub enum CaseArmOffset {}
5664    #[derive(Copy, Clone, PartialEq)]
5665
5666    pub struct CaseArm<'a> {
5667        pub _tab: ::flatbuffers::Table<'a>,
5668    }
5669
5670    impl<'a> ::flatbuffers::Follow<'a> for CaseArm<'a> {
5671        type Inner = CaseArm<'a>;
5672        #[inline]
5673        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5674            Self {
5675                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5676            }
5677        }
5678    }
5679
5680    impl<'a> CaseArm<'a> {
5681        pub const VT_WHEN_EXPR: ::flatbuffers::VOffsetT = 4;
5682        pub const VT_THEN_EXPR: ::flatbuffers::VOffsetT = 6;
5683
5684        #[inline]
5685        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5686            CaseArm { _tab: table }
5687        }
5688        #[allow(unused_mut)]
5689        pub fn create<
5690            'bldr: 'args,
5691            'args: 'mut_bldr,
5692            'mut_bldr,
5693            A: ::flatbuffers::Allocator + 'bldr,
5694        >(
5695            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5696            args: &'args CaseArmArgs<'args>,
5697        ) -> ::flatbuffers::WIPOffset<CaseArm<'bldr>> {
5698            let mut builder = CaseArmBuilder::new(_fbb);
5699            if let Some(x) = args.then_expr {
5700                builder.add_then_expr(x);
5701            }
5702            if let Some(x) = args.when_expr {
5703                builder.add_when_expr(x);
5704            }
5705            builder.finish()
5706        }
5707
5708        #[inline]
5709        pub fn when_expr(&self) -> Option<Expr<'a>> {
5710            // Safety:
5711            // Created from valid Table for this object
5712            // which contains a valid value in this slot
5713            unsafe {
5714                self._tab
5715                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CaseArm::VT_WHEN_EXPR, None)
5716            }
5717        }
5718        #[inline]
5719        pub fn then_expr(&self) -> Option<Expr<'a>> {
5720            // Safety:
5721            // Created from valid Table for this object
5722            // which contains a valid value in this slot
5723            unsafe {
5724                self._tab
5725                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CaseArm::VT_THEN_EXPR, None)
5726            }
5727        }
5728    }
5729
5730    impl ::flatbuffers::Verifiable for CaseArm<'_> {
5731        #[inline]
5732        fn run_verifier(
5733            v: &mut ::flatbuffers::Verifier,
5734            pos: usize,
5735        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5736            v.visit_table(pos)?
5737                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
5738                    "when_expr",
5739                    Self::VT_WHEN_EXPR,
5740                    false,
5741                )?
5742                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
5743                    "then_expr",
5744                    Self::VT_THEN_EXPR,
5745                    false,
5746                )?
5747                .finish();
5748            Ok(())
5749        }
5750    }
5751    pub struct CaseArmArgs<'a> {
5752        pub when_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5753        pub then_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5754    }
5755    impl<'a> Default for CaseArmArgs<'a> {
5756        #[inline]
5757        fn default() -> Self {
5758            CaseArmArgs {
5759                when_expr: None,
5760                then_expr: None,
5761            }
5762        }
5763    }
5764
5765    pub struct CaseArmBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5766        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5767        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5768    }
5769    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CaseArmBuilder<'a, 'b, A> {
5770        #[inline]
5771        pub fn add_when_expr(&mut self, when_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
5772            self.fbb_
5773                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5774                    CaseArm::VT_WHEN_EXPR,
5775                    when_expr,
5776                );
5777        }
5778        #[inline]
5779        pub fn add_then_expr(&mut self, then_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
5780            self.fbb_
5781                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5782                    CaseArm::VT_THEN_EXPR,
5783                    then_expr,
5784                );
5785        }
5786        #[inline]
5787        pub fn new(
5788            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5789        ) -> CaseArmBuilder<'a, 'b, A> {
5790            let start = _fbb.start_table();
5791            CaseArmBuilder {
5792                fbb_: _fbb,
5793                start_: start,
5794            }
5795        }
5796        #[inline]
5797        pub fn finish(self) -> ::flatbuffers::WIPOffset<CaseArm<'a>> {
5798            let o = self.fbb_.end_table(self.start_);
5799            ::flatbuffers::WIPOffset::new(o.value())
5800        }
5801    }
5802
5803    impl ::core::fmt::Debug for CaseArm<'_> {
5804        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5805            let mut ds = f.debug_struct("CaseArm");
5806            ds.field("when_expr", &self.when_expr());
5807            ds.field("then_expr", &self.then_expr());
5808            ds.finish()
5809        }
5810    }
5811    pub enum CaseExprOffset {}
5812    #[derive(Copy, Clone, PartialEq)]
5813
5814    pub struct CaseExpr<'a> {
5815        pub _tab: ::flatbuffers::Table<'a>,
5816    }
5817
5818    impl<'a> ::flatbuffers::Follow<'a> for CaseExpr<'a> {
5819        type Inner = CaseExpr<'a>;
5820        #[inline]
5821        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5822            Self {
5823                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5824            }
5825        }
5826    }
5827
5828    impl<'a> CaseExpr<'a> {
5829        pub const VT_ARMS: ::flatbuffers::VOffsetT = 4;
5830        pub const VT_ELSE_EXPR: ::flatbuffers::VOffsetT = 6;
5831
5832        #[inline]
5833        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5834            CaseExpr { _tab: table }
5835        }
5836        #[allow(unused_mut)]
5837        pub fn create<
5838            'bldr: 'args,
5839            'args: 'mut_bldr,
5840            'mut_bldr,
5841            A: ::flatbuffers::Allocator + 'bldr,
5842        >(
5843            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
5844            args: &'args CaseExprArgs<'args>,
5845        ) -> ::flatbuffers::WIPOffset<CaseExpr<'bldr>> {
5846            let mut builder = CaseExprBuilder::new(_fbb);
5847            if let Some(x) = args.else_expr {
5848                builder.add_else_expr(x);
5849            }
5850            if let Some(x) = args.arms {
5851                builder.add_arms(x);
5852            }
5853            builder.finish()
5854        }
5855
5856        #[inline]
5857        pub fn arms(
5858            &self,
5859        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<CaseArm<'a>>>>
5860        {
5861            // Safety:
5862            // Created from valid Table for this object
5863            // which contains a valid value in this slot
5864            unsafe {
5865                self._tab.get::<::flatbuffers::ForwardsUOffset<
5866                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<CaseArm>>,
5867                >>(CaseExpr::VT_ARMS, None)
5868            }
5869        }
5870        #[inline]
5871        pub fn else_expr(&self) -> Option<Expr<'a>> {
5872            // Safety:
5873            // Created from valid Table for this object
5874            // which contains a valid value in this slot
5875            unsafe {
5876                self._tab
5877                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CaseExpr::VT_ELSE_EXPR, None)
5878            }
5879        }
5880    }
5881
5882    impl ::flatbuffers::Verifiable for CaseExpr<'_> {
5883        #[inline]
5884        fn run_verifier(
5885            v: &mut ::flatbuffers::Verifier,
5886            pos: usize,
5887        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
5888            v.visit_table(pos)?
5889                .visit_field::<::flatbuffers::ForwardsUOffset<
5890                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<CaseArm>>,
5891                >>("arms", Self::VT_ARMS, false)?
5892                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
5893                    "else_expr",
5894                    Self::VT_ELSE_EXPR,
5895                    false,
5896                )?
5897                .finish();
5898            Ok(())
5899        }
5900    }
5901    pub struct CaseExprArgs<'a> {
5902        pub arms: Option<
5903            ::flatbuffers::WIPOffset<
5904                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<CaseArm<'a>>>,
5905            >,
5906        >,
5907        pub else_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
5908    }
5909    impl<'a> Default for CaseExprArgs<'a> {
5910        #[inline]
5911        fn default() -> Self {
5912            CaseExprArgs {
5913                arms: None,
5914                else_expr: None,
5915            }
5916        }
5917    }
5918
5919    pub struct CaseExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
5920        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5921        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
5922    }
5923    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CaseExprBuilder<'a, 'b, A> {
5924        #[inline]
5925        pub fn add_arms(
5926            &mut self,
5927            arms: ::flatbuffers::WIPOffset<
5928                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<CaseArm<'b>>>,
5929            >,
5930        ) {
5931            self.fbb_
5932                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CaseExpr::VT_ARMS, arms);
5933        }
5934        #[inline]
5935        pub fn add_else_expr(&mut self, else_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
5936            self.fbb_
5937                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
5938                    CaseExpr::VT_ELSE_EXPR,
5939                    else_expr,
5940                );
5941        }
5942        #[inline]
5943        pub fn new(
5944            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
5945        ) -> CaseExprBuilder<'a, 'b, A> {
5946            let start = _fbb.start_table();
5947            CaseExprBuilder {
5948                fbb_: _fbb,
5949                start_: start,
5950            }
5951        }
5952        #[inline]
5953        pub fn finish(self) -> ::flatbuffers::WIPOffset<CaseExpr<'a>> {
5954            let o = self.fbb_.end_table(self.start_);
5955            ::flatbuffers::WIPOffset::new(o.value())
5956        }
5957    }
5958
5959    impl ::core::fmt::Debug for CaseExpr<'_> {
5960        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5961            let mut ds = f.debug_struct("CaseExpr");
5962            ds.field("arms", &self.arms());
5963            ds.field("else_expr", &self.else_expr());
5964            ds.finish()
5965        }
5966    }
5967    pub enum VectorSimilarityExprOffset {}
5968    #[derive(Copy, Clone, PartialEq)]
5969
5970    pub struct VectorSimilarityExpr<'a> {
5971        pub _tab: ::flatbuffers::Table<'a>,
5972    }
5973
5974    impl<'a> ::flatbuffers::Follow<'a> for VectorSimilarityExpr<'a> {
5975        type Inner = VectorSimilarityExpr<'a>;
5976        #[inline]
5977        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5978            Self {
5979                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
5980            }
5981        }
5982    }
5983
5984    impl<'a> VectorSimilarityExpr<'a> {
5985        pub const VT_METRIC: ::flatbuffers::VOffsetT = 4;
5986        pub const VT_LHS: ::flatbuffers::VOffsetT = 6;
5987        pub const VT_RHS: ::flatbuffers::VOffsetT = 8;
5988
5989        #[inline]
5990        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
5991            VectorSimilarityExpr { _tab: table }
5992        }
5993        #[allow(unused_mut)]
5994        pub fn create<
5995            'bldr: 'args,
5996            'args: 'mut_bldr,
5997            'mut_bldr,
5998            A: ::flatbuffers::Allocator + 'bldr,
5999        >(
6000            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
6001            args: &'args VectorSimilarityExprArgs<'args>,
6002        ) -> ::flatbuffers::WIPOffset<VectorSimilarityExpr<'bldr>> {
6003            let mut builder = VectorSimilarityExprBuilder::new(_fbb);
6004            if let Some(x) = args.rhs {
6005                builder.add_rhs(x);
6006            }
6007            if let Some(x) = args.lhs {
6008                builder.add_lhs(x);
6009            }
6010            builder.add_metric(args.metric);
6011            builder.finish()
6012        }
6013
6014        #[inline]
6015        pub fn metric(&self) -> VectorMetric {
6016            // Safety:
6017            // Created from valid Table for this object
6018            // which contains a valid value in this slot
6019            unsafe {
6020                self._tab
6021                    .get::<VectorMetric>(
6022                        VectorSimilarityExpr::VT_METRIC,
6023                        Some(VectorMetric::cosine),
6024                    )
6025                    .unwrap()
6026            }
6027        }
6028        #[inline]
6029        pub fn lhs(&self) -> Option<Expr<'a>> {
6030            // Safety:
6031            // Created from valid Table for this object
6032            // which contains a valid value in this slot
6033            unsafe {
6034                self._tab
6035                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(VectorSimilarityExpr::VT_LHS, None)
6036            }
6037        }
6038        #[inline]
6039        pub fn rhs(&self) -> Option<Expr<'a>> {
6040            // Safety:
6041            // Created from valid Table for this object
6042            // which contains a valid value in this slot
6043            unsafe {
6044                self._tab
6045                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(VectorSimilarityExpr::VT_RHS, None)
6046            }
6047        }
6048    }
6049
6050    impl ::flatbuffers::Verifiable for VectorSimilarityExpr<'_> {
6051        #[inline]
6052        fn run_verifier(
6053            v: &mut ::flatbuffers::Verifier,
6054            pos: usize,
6055        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
6056            v.visit_table(pos)?
6057                .visit_field::<VectorMetric>("metric", Self::VT_METRIC, false)?
6058                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("lhs", Self::VT_LHS, false)?
6059                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>("rhs", Self::VT_RHS, false)?
6060                .finish();
6061            Ok(())
6062        }
6063    }
6064    pub struct VectorSimilarityExprArgs<'a> {
6065        pub metric: VectorMetric,
6066        pub lhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
6067        pub rhs: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
6068    }
6069    impl<'a> Default for VectorSimilarityExprArgs<'a> {
6070        #[inline]
6071        fn default() -> Self {
6072            VectorSimilarityExprArgs {
6073                metric: VectorMetric::cosine,
6074                lhs: None,
6075                rhs: None,
6076            }
6077        }
6078    }
6079
6080    pub struct VectorSimilarityExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
6081        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
6082        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
6083    }
6084    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> VectorSimilarityExprBuilder<'a, 'b, A> {
6085        #[inline]
6086        pub fn add_metric(&mut self, metric: VectorMetric) {
6087            self.fbb_.push_slot::<VectorMetric>(
6088                VectorSimilarityExpr::VT_METRIC,
6089                metric,
6090                VectorMetric::cosine,
6091            );
6092        }
6093        #[inline]
6094        pub fn add_lhs(&mut self, lhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
6095            self.fbb_
6096                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
6097                    VectorSimilarityExpr::VT_LHS,
6098                    lhs,
6099                );
6100        }
6101        #[inline]
6102        pub fn add_rhs(&mut self, rhs: ::flatbuffers::WIPOffset<Expr<'b>>) {
6103            self.fbb_
6104                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
6105                    VectorSimilarityExpr::VT_RHS,
6106                    rhs,
6107                );
6108        }
6109        #[inline]
6110        pub fn new(
6111            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
6112        ) -> VectorSimilarityExprBuilder<'a, 'b, A> {
6113            let start = _fbb.start_table();
6114            VectorSimilarityExprBuilder {
6115                fbb_: _fbb,
6116                start_: start,
6117            }
6118        }
6119        #[inline]
6120        pub fn finish(self) -> ::flatbuffers::WIPOffset<VectorSimilarityExpr<'a>> {
6121            let o = self.fbb_.end_table(self.start_);
6122            ::flatbuffers::WIPOffset::new(o.value())
6123        }
6124    }
6125
6126    impl ::core::fmt::Debug for VectorSimilarityExpr<'_> {
6127        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6128            let mut ds = f.debug_struct("VectorSimilarityExpr");
6129            ds.field("metric", &self.metric());
6130            ds.field("lhs", &self.lhs());
6131            ds.field("rhs", &self.rhs());
6132            ds.finish()
6133        }
6134    }
6135    pub enum ExprOffset {}
6136    #[derive(Copy, Clone, PartialEq)]
6137
6138    pub struct Expr<'a> {
6139        pub _tab: ::flatbuffers::Table<'a>,
6140    }
6141
6142    impl<'a> ::flatbuffers::Follow<'a> for Expr<'a> {
6143        type Inner = Expr<'a>;
6144        #[inline]
6145        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6146            Self {
6147                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
6148            }
6149        }
6150    }
6151
6152    impl<'a> Expr<'a> {
6153        pub const VT_NODE_TYPE: ::flatbuffers::VOffsetT = 4;
6154        pub const VT_NODE: ::flatbuffers::VOffsetT = 6;
6155
6156        #[inline]
6157        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
6158            Expr { _tab: table }
6159        }
6160        #[allow(unused_mut)]
6161        pub fn create<
6162            'bldr: 'args,
6163            'args: 'mut_bldr,
6164            'mut_bldr,
6165            A: ::flatbuffers::Allocator + 'bldr,
6166        >(
6167            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
6168            args: &'args ExprArgs,
6169        ) -> ::flatbuffers::WIPOffset<Expr<'bldr>> {
6170            let mut builder = ExprBuilder::new(_fbb);
6171            if let Some(x) = args.node {
6172                builder.add_node(x);
6173            }
6174            builder.add_node_type(args.node_type);
6175            builder.finish()
6176        }
6177
6178        #[inline]
6179        pub fn node_type(&self) -> ExprNode {
6180            // Safety:
6181            // Created from valid Table for this object
6182            // which contains a valid value in this slot
6183            unsafe {
6184                self._tab
6185                    .get::<ExprNode>(Expr::VT_NODE_TYPE, Some(ExprNode::NONE))
6186                    .unwrap()
6187            }
6188        }
6189        #[inline]
6190        pub fn node(&self) -> Option<::flatbuffers::Table<'a>> {
6191            // Safety:
6192            // Created from valid Table for this object
6193            // which contains a valid value in this slot
6194            unsafe {
6195                self._tab
6196                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Table<'a>>>(
6197                        Expr::VT_NODE,
6198                        None,
6199                    )
6200            }
6201        }
6202        #[inline]
6203        #[allow(non_snake_case)]
6204        pub fn node_as_col_ref_expr(&self) -> Option<ColRefExpr<'a>> {
6205            if self.node_type() == ExprNode::ColRefExpr {
6206                self.node().map(|t| {
6207                    // Safety:
6208                    // Created from a valid Table for this object
6209                    // Which contains a valid union in this slot
6210                    unsafe { ColRefExpr::init_from_table(t) }
6211                })
6212            } else {
6213                None
6214            }
6215        }
6216
6217        #[inline]
6218        #[allow(non_snake_case)]
6219        pub fn node_as_prop_access_expr(&self) -> Option<PropAccessExpr<'a>> {
6220            if self.node_type() == ExprNode::PropAccessExpr {
6221                self.node().map(|t| {
6222                    // Safety:
6223                    // Created from a valid Table for this object
6224                    // Which contains a valid union in this slot
6225                    unsafe { PropAccessExpr::init_from_table(t) }
6226                })
6227            } else {
6228                None
6229            }
6230        }
6231
6232        #[inline]
6233        #[allow(non_snake_case)]
6234        pub fn node_as_int_literal_expr(&self) -> Option<IntLiteralExpr<'a>> {
6235            if self.node_type() == ExprNode::IntLiteralExpr {
6236                self.node().map(|t| {
6237                    // Safety:
6238                    // Created from a valid Table for this object
6239                    // Which contains a valid union in this slot
6240                    unsafe { IntLiteralExpr::init_from_table(t) }
6241                })
6242            } else {
6243                None
6244            }
6245        }
6246
6247        #[inline]
6248        #[allow(non_snake_case)]
6249        pub fn node_as_float_literal_expr(&self) -> Option<FloatLiteralExpr<'a>> {
6250            if self.node_type() == ExprNode::FloatLiteralExpr {
6251                self.node().map(|t| {
6252                    // Safety:
6253                    // Created from a valid Table for this object
6254                    // Which contains a valid union in this slot
6255                    unsafe { FloatLiteralExpr::init_from_table(t) }
6256                })
6257            } else {
6258                None
6259            }
6260        }
6261
6262        #[inline]
6263        #[allow(non_snake_case)]
6264        pub fn node_as_bool_literal_expr(&self) -> Option<BoolLiteralExpr<'a>> {
6265            if self.node_type() == ExprNode::BoolLiteralExpr {
6266                self.node().map(|t| {
6267                    // Safety:
6268                    // Created from a valid Table for this object
6269                    // Which contains a valid union in this slot
6270                    unsafe { BoolLiteralExpr::init_from_table(t) }
6271                })
6272            } else {
6273                None
6274            }
6275        }
6276
6277        #[inline]
6278        #[allow(non_snake_case)]
6279        pub fn node_as_string_literal_expr(&self) -> Option<StringLiteralExpr<'a>> {
6280            if self.node_type() == ExprNode::StringLiteralExpr {
6281                self.node().map(|t| {
6282                    // Safety:
6283                    // Created from a valid Table for this object
6284                    // Which contains a valid union in this slot
6285                    unsafe { StringLiteralExpr::init_from_table(t) }
6286                })
6287            } else {
6288                None
6289            }
6290        }
6291
6292        #[inline]
6293        #[allow(non_snake_case)]
6294        pub fn node_as_null_literal_expr(&self) -> Option<NullLiteralExpr<'a>> {
6295            if self.node_type() == ExprNode::NullLiteralExpr {
6296                self.node().map(|t| {
6297                    // Safety:
6298                    // Created from a valid Table for this object
6299                    // Which contains a valid union in this slot
6300                    unsafe { NullLiteralExpr::init_from_table(t) }
6301                })
6302            } else {
6303                None
6304            }
6305        }
6306
6307        #[inline]
6308        #[allow(non_snake_case)]
6309        pub fn node_as_cmp_expr(&self) -> Option<CmpExpr<'a>> {
6310            if self.node_type() == ExprNode::CmpExpr {
6311                self.node().map(|t| {
6312                    // Safety:
6313                    // Created from a valid Table for this object
6314                    // Which contains a valid union in this slot
6315                    unsafe { CmpExpr::init_from_table(t) }
6316                })
6317            } else {
6318                None
6319            }
6320        }
6321
6322        #[inline]
6323        #[allow(non_snake_case)]
6324        pub fn node_as_and_expr(&self) -> Option<AndExpr<'a>> {
6325            if self.node_type() == ExprNode::AndExpr {
6326                self.node().map(|t| {
6327                    // Safety:
6328                    // Created from a valid Table for this object
6329                    // Which contains a valid union in this slot
6330                    unsafe { AndExpr::init_from_table(t) }
6331                })
6332            } else {
6333                None
6334            }
6335        }
6336
6337        #[inline]
6338        #[allow(non_snake_case)]
6339        pub fn node_as_or_expr(&self) -> Option<OrExpr<'a>> {
6340            if self.node_type() == ExprNode::OrExpr {
6341                self.node().map(|t| {
6342                    // Safety:
6343                    // Created from a valid Table for this object
6344                    // Which contains a valid union in this slot
6345                    unsafe { OrExpr::init_from_table(t) }
6346                })
6347            } else {
6348                None
6349            }
6350        }
6351
6352        #[inline]
6353        #[allow(non_snake_case)]
6354        pub fn node_as_not_expr(&self) -> Option<NotExpr<'a>> {
6355            if self.node_type() == ExprNode::NotExpr {
6356                self.node().map(|t| {
6357                    // Safety:
6358                    // Created from a valid Table for this object
6359                    // Which contains a valid union in this slot
6360                    unsafe { NotExpr::init_from_table(t) }
6361                })
6362            } else {
6363                None
6364            }
6365        }
6366
6367        #[inline]
6368        #[allow(non_snake_case)]
6369        pub fn node_as_is_null_expr(&self) -> Option<IsNullExpr<'a>> {
6370            if self.node_type() == ExprNode::IsNullExpr {
6371                self.node().map(|t| {
6372                    // Safety:
6373                    // Created from a valid Table for this object
6374                    // Which contains a valid union in this slot
6375                    unsafe { IsNullExpr::init_from_table(t) }
6376                })
6377            } else {
6378                None
6379            }
6380        }
6381
6382        #[inline]
6383        #[allow(non_snake_case)]
6384        pub fn node_as_is_not_null_expr(&self) -> Option<IsNotNullExpr<'a>> {
6385            if self.node_type() == ExprNode::IsNotNullExpr {
6386                self.node().map(|t| {
6387                    // Safety:
6388                    // Created from a valid Table for this object
6389                    // Which contains a valid union in this slot
6390                    unsafe { IsNotNullExpr::init_from_table(t) }
6391                })
6392            } else {
6393                None
6394            }
6395        }
6396
6397        #[inline]
6398        #[allow(non_snake_case)]
6399        pub fn node_as_starts_with_expr(&self) -> Option<StartsWithExpr<'a>> {
6400            if self.node_type() == ExprNode::StartsWithExpr {
6401                self.node().map(|t| {
6402                    // Safety:
6403                    // Created from a valid Table for this object
6404                    // Which contains a valid union in this slot
6405                    unsafe { StartsWithExpr::init_from_table(t) }
6406                })
6407            } else {
6408                None
6409            }
6410        }
6411
6412        #[inline]
6413        #[allow(non_snake_case)]
6414        pub fn node_as_ends_with_expr(&self) -> Option<EndsWithExpr<'a>> {
6415            if self.node_type() == ExprNode::EndsWithExpr {
6416                self.node().map(|t| {
6417                    // Safety:
6418                    // Created from a valid Table for this object
6419                    // Which contains a valid union in this slot
6420                    unsafe { EndsWithExpr::init_from_table(t) }
6421                })
6422            } else {
6423                None
6424            }
6425        }
6426
6427        #[inline]
6428        #[allow(non_snake_case)]
6429        pub fn node_as_contains_expr(&self) -> Option<ContainsExpr<'a>> {
6430            if self.node_type() == ExprNode::ContainsExpr {
6431                self.node().map(|t| {
6432                    // Safety:
6433                    // Created from a valid Table for this object
6434                    // Which contains a valid union in this slot
6435                    unsafe { ContainsExpr::init_from_table(t) }
6436                })
6437            } else {
6438                None
6439            }
6440        }
6441
6442        #[inline]
6443        #[allow(non_snake_case)]
6444        pub fn node_as_in_expr(&self) -> Option<InExpr<'a>> {
6445            if self.node_type() == ExprNode::InExpr {
6446                self.node().map(|t| {
6447                    // Safety:
6448                    // Created from a valid Table for this object
6449                    // Which contains a valid union in this slot
6450                    unsafe { InExpr::init_from_table(t) }
6451                })
6452            } else {
6453                None
6454            }
6455        }
6456
6457        #[inline]
6458        #[allow(non_snake_case)]
6459        pub fn node_as_list_literal_expr(&self) -> Option<ListLiteralExpr<'a>> {
6460            if self.node_type() == ExprNode::ListLiteralExpr {
6461                self.node().map(|t| {
6462                    // Safety:
6463                    // Created from a valid Table for this object
6464                    // Which contains a valid union in this slot
6465                    unsafe { ListLiteralExpr::init_from_table(t) }
6466                })
6467            } else {
6468                None
6469            }
6470        }
6471
6472        #[inline]
6473        #[allow(non_snake_case)]
6474        pub fn node_as_map_literal_expr(&self) -> Option<MapLiteralExpr<'a>> {
6475            if self.node_type() == ExprNode::MapLiteralExpr {
6476                self.node().map(|t| {
6477                    // Safety:
6478                    // Created from a valid Table for this object
6479                    // Which contains a valid union in this slot
6480                    unsafe { MapLiteralExpr::init_from_table(t) }
6481                })
6482            } else {
6483                None
6484            }
6485        }
6486
6487        #[inline]
6488        #[allow(non_snake_case)]
6489        pub fn node_as_exists_expr(&self) -> Option<ExistsExpr<'a>> {
6490            if self.node_type() == ExprNode::ExistsExpr {
6491                self.node().map(|t| {
6492                    // Safety:
6493                    // Created from a valid Table for this object
6494                    // Which contains a valid union in this slot
6495                    unsafe { ExistsExpr::init_from_table(t) }
6496                })
6497            } else {
6498                None
6499            }
6500        }
6501
6502        #[inline]
6503        #[allow(non_snake_case)]
6504        pub fn node_as_list_comprehension_expr(&self) -> Option<ListComprehensionExpr<'a>> {
6505            if self.node_type() == ExprNode::ListComprehensionExpr {
6506                self.node().map(|t| {
6507                    // Safety:
6508                    // Created from a valid Table for this object
6509                    // Which contains a valid union in this slot
6510                    unsafe { ListComprehensionExpr::init_from_table(t) }
6511                })
6512            } else {
6513                None
6514            }
6515        }
6516
6517        #[inline]
6518        #[allow(non_snake_case)]
6519        pub fn node_as_agg_expr(&self) -> Option<AggExpr<'a>> {
6520            if self.node_type() == ExprNode::AggExpr {
6521                self.node().map(|t| {
6522                    // Safety:
6523                    // Created from a valid Table for this object
6524                    // Which contains a valid union in this slot
6525                    unsafe { AggExpr::init_from_table(t) }
6526                })
6527            } else {
6528                None
6529            }
6530        }
6531
6532        #[inline]
6533        #[allow(non_snake_case)]
6534        pub fn node_as_arith_expr(&self) -> Option<ArithExpr<'a>> {
6535            if self.node_type() == ExprNode::ArithExpr {
6536                self.node().map(|t| {
6537                    // Safety:
6538                    // Created from a valid Table for this object
6539                    // Which contains a valid union in this slot
6540                    unsafe { ArithExpr::init_from_table(t) }
6541                })
6542            } else {
6543                None
6544            }
6545        }
6546
6547        #[inline]
6548        #[allow(non_snake_case)]
6549        pub fn node_as_param_expr(&self) -> Option<ParamExpr<'a>> {
6550            if self.node_type() == ExprNode::ParamExpr {
6551                self.node().map(|t| {
6552                    // Safety:
6553                    // Created from a valid Table for this object
6554                    // Which contains a valid union in this slot
6555                    unsafe { ParamExpr::init_from_table(t) }
6556                })
6557            } else {
6558                None
6559            }
6560        }
6561
6562        #[inline]
6563        #[allow(non_snake_case)]
6564        pub fn node_as_case_expr(&self) -> Option<CaseExpr<'a>> {
6565            if self.node_type() == ExprNode::CaseExpr {
6566                self.node().map(|t| {
6567                    // Safety:
6568                    // Created from a valid Table for this object
6569                    // Which contains a valid union in this slot
6570                    unsafe { CaseExpr::init_from_table(t) }
6571                })
6572            } else {
6573                None
6574            }
6575        }
6576
6577        #[inline]
6578        #[allow(non_snake_case)]
6579        pub fn node_as_vector_similarity_expr(&self) -> Option<VectorSimilarityExpr<'a>> {
6580            if self.node_type() == ExprNode::VectorSimilarityExpr {
6581                self.node().map(|t| {
6582                    // Safety:
6583                    // Created from a valid Table for this object
6584                    // Which contains a valid union in this slot
6585                    unsafe { VectorSimilarityExpr::init_from_table(t) }
6586                })
6587            } else {
6588                None
6589            }
6590        }
6591    }
6592
6593    impl ::flatbuffers::Verifiable for Expr<'_> {
6594        #[inline]
6595        fn run_verifier(
6596            v: &mut ::flatbuffers::Verifier,
6597            pos: usize,
6598        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
6599            v.visit_table(pos)?
6600     .visit_union::<ExprNode, _>("node_type", Self::VT_NODE_TYPE, "node", Self::VT_NODE, false, |key, v, pos| {
6601        match key {
6602          ExprNode::ColRefExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ColRefExpr>>("ExprNode::ColRefExpr", pos),
6603          ExprNode::PropAccessExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<PropAccessExpr>>("ExprNode::PropAccessExpr", pos),
6604          ExprNode::IntLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<IntLiteralExpr>>("ExprNode::IntLiteralExpr", pos),
6605          ExprNode::FloatLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<FloatLiteralExpr>>("ExprNode::FloatLiteralExpr", pos),
6606          ExprNode::BoolLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<BoolLiteralExpr>>("ExprNode::BoolLiteralExpr", pos),
6607          ExprNode::StringLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<StringLiteralExpr>>("ExprNode::StringLiteralExpr", pos),
6608          ExprNode::NullLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<NullLiteralExpr>>("ExprNode::NullLiteralExpr", pos),
6609          ExprNode::CmpExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CmpExpr>>("ExprNode::CmpExpr", pos),
6610          ExprNode::AndExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<AndExpr>>("ExprNode::AndExpr", pos),
6611          ExprNode::OrExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<OrExpr>>("ExprNode::OrExpr", pos),
6612          ExprNode::NotExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<NotExpr>>("ExprNode::NotExpr", pos),
6613          ExprNode::IsNullExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<IsNullExpr>>("ExprNode::IsNullExpr", pos),
6614          ExprNode::IsNotNullExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<IsNotNullExpr>>("ExprNode::IsNotNullExpr", pos),
6615          ExprNode::StartsWithExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<StartsWithExpr>>("ExprNode::StartsWithExpr", pos),
6616          ExprNode::EndsWithExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<EndsWithExpr>>("ExprNode::EndsWithExpr", pos),
6617          ExprNode::ContainsExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ContainsExpr>>("ExprNode::ContainsExpr", pos),
6618          ExprNode::InExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<InExpr>>("ExprNode::InExpr", pos),
6619          ExprNode::ListLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ListLiteralExpr>>("ExprNode::ListLiteralExpr", pos),
6620          ExprNode::MapLiteralExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<MapLiteralExpr>>("ExprNode::MapLiteralExpr", pos),
6621          ExprNode::ExistsExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ExistsExpr>>("ExprNode::ExistsExpr", pos),
6622          ExprNode::ListComprehensionExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ListComprehensionExpr>>("ExprNode::ListComprehensionExpr", pos),
6623          ExprNode::AggExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<AggExpr>>("ExprNode::AggExpr", pos),
6624          ExprNode::ArithExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ArithExpr>>("ExprNode::ArithExpr", pos),
6625          ExprNode::ParamExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ParamExpr>>("ExprNode::ParamExpr", pos),
6626          ExprNode::CaseExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CaseExpr>>("ExprNode::CaseExpr", pos),
6627          ExprNode::VectorSimilarityExpr => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<VectorSimilarityExpr>>("ExprNode::VectorSimilarityExpr", pos),
6628          _ => Ok(()),
6629        }
6630     })?
6631     .finish();
6632            Ok(())
6633        }
6634    }
6635    pub struct ExprArgs {
6636        pub node_type: ExprNode,
6637        pub node: Option<::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>>,
6638    }
6639    impl<'a> Default for ExprArgs {
6640        #[inline]
6641        fn default() -> Self {
6642            ExprArgs {
6643                node_type: ExprNode::NONE,
6644                node: None,
6645            }
6646        }
6647    }
6648
6649    pub struct ExprBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
6650        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
6651        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
6652    }
6653    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ExprBuilder<'a, 'b, A> {
6654        #[inline]
6655        pub fn add_node_type(&mut self, node_type: ExprNode) {
6656            self.fbb_
6657                .push_slot::<ExprNode>(Expr::VT_NODE_TYPE, node_type, ExprNode::NONE);
6658        }
6659        #[inline]
6660        pub fn add_node(&mut self, node: ::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>) {
6661            self.fbb_
6662                .push_slot_always::<::flatbuffers::WIPOffset<_>>(Expr::VT_NODE, node);
6663        }
6664        #[inline]
6665        pub fn new(
6666            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
6667        ) -> ExprBuilder<'a, 'b, A> {
6668            let start = _fbb.start_table();
6669            ExprBuilder {
6670                fbb_: _fbb,
6671                start_: start,
6672            }
6673        }
6674        #[inline]
6675        pub fn finish(self) -> ::flatbuffers::WIPOffset<Expr<'a>> {
6676            let o = self.fbb_.end_table(self.start_);
6677            ::flatbuffers::WIPOffset::new(o.value())
6678        }
6679    }
6680
6681    impl ::core::fmt::Debug for Expr<'_> {
6682        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6683            let mut ds = f.debug_struct("Expr");
6684            ds.field("node_type", &self.node_type());
6685            match self.node_type() {
6686                ExprNode::ColRefExpr => {
6687                    if let Some(x) = self.node_as_col_ref_expr() {
6688                        ds.field("node", &x)
6689                    } else {
6690                        ds.field(
6691                            "node",
6692                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6693                        )
6694                    }
6695                }
6696                ExprNode::PropAccessExpr => {
6697                    if let Some(x) = self.node_as_prop_access_expr() {
6698                        ds.field("node", &x)
6699                    } else {
6700                        ds.field(
6701                            "node",
6702                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6703                        )
6704                    }
6705                }
6706                ExprNode::IntLiteralExpr => {
6707                    if let Some(x) = self.node_as_int_literal_expr() {
6708                        ds.field("node", &x)
6709                    } else {
6710                        ds.field(
6711                            "node",
6712                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6713                        )
6714                    }
6715                }
6716                ExprNode::FloatLiteralExpr => {
6717                    if let Some(x) = self.node_as_float_literal_expr() {
6718                        ds.field("node", &x)
6719                    } else {
6720                        ds.field(
6721                            "node",
6722                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6723                        )
6724                    }
6725                }
6726                ExprNode::BoolLiteralExpr => {
6727                    if let Some(x) = self.node_as_bool_literal_expr() {
6728                        ds.field("node", &x)
6729                    } else {
6730                        ds.field(
6731                            "node",
6732                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6733                        )
6734                    }
6735                }
6736                ExprNode::StringLiteralExpr => {
6737                    if let Some(x) = self.node_as_string_literal_expr() {
6738                        ds.field("node", &x)
6739                    } else {
6740                        ds.field(
6741                            "node",
6742                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6743                        )
6744                    }
6745                }
6746                ExprNode::NullLiteralExpr => {
6747                    if let Some(x) = self.node_as_null_literal_expr() {
6748                        ds.field("node", &x)
6749                    } else {
6750                        ds.field(
6751                            "node",
6752                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6753                        )
6754                    }
6755                }
6756                ExprNode::CmpExpr => {
6757                    if let Some(x) = self.node_as_cmp_expr() {
6758                        ds.field("node", &x)
6759                    } else {
6760                        ds.field(
6761                            "node",
6762                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6763                        )
6764                    }
6765                }
6766                ExprNode::AndExpr => {
6767                    if let Some(x) = self.node_as_and_expr() {
6768                        ds.field("node", &x)
6769                    } else {
6770                        ds.field(
6771                            "node",
6772                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6773                        )
6774                    }
6775                }
6776                ExprNode::OrExpr => {
6777                    if let Some(x) = self.node_as_or_expr() {
6778                        ds.field("node", &x)
6779                    } else {
6780                        ds.field(
6781                            "node",
6782                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6783                        )
6784                    }
6785                }
6786                ExprNode::NotExpr => {
6787                    if let Some(x) = self.node_as_not_expr() {
6788                        ds.field("node", &x)
6789                    } else {
6790                        ds.field(
6791                            "node",
6792                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6793                        )
6794                    }
6795                }
6796                ExprNode::IsNullExpr => {
6797                    if let Some(x) = self.node_as_is_null_expr() {
6798                        ds.field("node", &x)
6799                    } else {
6800                        ds.field(
6801                            "node",
6802                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6803                        )
6804                    }
6805                }
6806                ExprNode::IsNotNullExpr => {
6807                    if let Some(x) = self.node_as_is_not_null_expr() {
6808                        ds.field("node", &x)
6809                    } else {
6810                        ds.field(
6811                            "node",
6812                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6813                        )
6814                    }
6815                }
6816                ExprNode::StartsWithExpr => {
6817                    if let Some(x) = self.node_as_starts_with_expr() {
6818                        ds.field("node", &x)
6819                    } else {
6820                        ds.field(
6821                            "node",
6822                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6823                        )
6824                    }
6825                }
6826                ExprNode::EndsWithExpr => {
6827                    if let Some(x) = self.node_as_ends_with_expr() {
6828                        ds.field("node", &x)
6829                    } else {
6830                        ds.field(
6831                            "node",
6832                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6833                        )
6834                    }
6835                }
6836                ExprNode::ContainsExpr => {
6837                    if let Some(x) = self.node_as_contains_expr() {
6838                        ds.field("node", &x)
6839                    } else {
6840                        ds.field(
6841                            "node",
6842                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6843                        )
6844                    }
6845                }
6846                ExprNode::InExpr => {
6847                    if let Some(x) = self.node_as_in_expr() {
6848                        ds.field("node", &x)
6849                    } else {
6850                        ds.field(
6851                            "node",
6852                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6853                        )
6854                    }
6855                }
6856                ExprNode::ListLiteralExpr => {
6857                    if let Some(x) = self.node_as_list_literal_expr() {
6858                        ds.field("node", &x)
6859                    } else {
6860                        ds.field(
6861                            "node",
6862                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6863                        )
6864                    }
6865                }
6866                ExprNode::MapLiteralExpr => {
6867                    if let Some(x) = self.node_as_map_literal_expr() {
6868                        ds.field("node", &x)
6869                    } else {
6870                        ds.field(
6871                            "node",
6872                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6873                        )
6874                    }
6875                }
6876                ExprNode::ExistsExpr => {
6877                    if let Some(x) = self.node_as_exists_expr() {
6878                        ds.field("node", &x)
6879                    } else {
6880                        ds.field(
6881                            "node",
6882                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6883                        )
6884                    }
6885                }
6886                ExprNode::ListComprehensionExpr => {
6887                    if let Some(x) = self.node_as_list_comprehension_expr() {
6888                        ds.field("node", &x)
6889                    } else {
6890                        ds.field(
6891                            "node",
6892                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6893                        )
6894                    }
6895                }
6896                ExprNode::AggExpr => {
6897                    if let Some(x) = self.node_as_agg_expr() {
6898                        ds.field("node", &x)
6899                    } else {
6900                        ds.field(
6901                            "node",
6902                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6903                        )
6904                    }
6905                }
6906                ExprNode::ArithExpr => {
6907                    if let Some(x) = self.node_as_arith_expr() {
6908                        ds.field("node", &x)
6909                    } else {
6910                        ds.field(
6911                            "node",
6912                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6913                        )
6914                    }
6915                }
6916                ExprNode::ParamExpr => {
6917                    if let Some(x) = self.node_as_param_expr() {
6918                        ds.field("node", &x)
6919                    } else {
6920                        ds.field(
6921                            "node",
6922                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6923                        )
6924                    }
6925                }
6926                ExprNode::CaseExpr => {
6927                    if let Some(x) = self.node_as_case_expr() {
6928                        ds.field("node", &x)
6929                    } else {
6930                        ds.field(
6931                            "node",
6932                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6933                        )
6934                    }
6935                }
6936                ExprNode::VectorSimilarityExpr => {
6937                    if let Some(x) = self.node_as_vector_similarity_expr() {
6938                        ds.field("node", &x)
6939                    } else {
6940                        ds.field(
6941                            "node",
6942                            &"InvalidFlatbuffer: Union discriminant does not match value.",
6943                        )
6944                    }
6945                }
6946                _ => {
6947                    let x: Option<()> = None;
6948                    ds.field("node", &x)
6949                }
6950            };
6951            ds.finish()
6952        }
6953    }
6954    pub enum ScanNodesOpOffset {}
6955    #[derive(Copy, Clone, PartialEq)]
6956
6957    pub struct ScanNodesOp<'a> {
6958        pub _tab: ::flatbuffers::Table<'a>,
6959    }
6960
6961    impl<'a> ::flatbuffers::Follow<'a> for ScanNodesOp<'a> {
6962        type Inner = ScanNodesOp<'a>;
6963        #[inline]
6964        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6965            Self {
6966                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
6967            }
6968        }
6969    }
6970
6971    impl<'a> ScanNodesOp<'a> {
6972        pub const VT_LABELS: ::flatbuffers::VOffsetT = 4;
6973        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 6;
6974        pub const VT_MUST_LABELS: ::flatbuffers::VOffsetT = 8;
6975        pub const VT_FORBIDDEN_LABELS: ::flatbuffers::VOffsetT = 10;
6976        pub const VT_EST_ROWS: ::flatbuffers::VOffsetT = 12;
6977        pub const VT_SELECTIVITY: ::flatbuffers::VOffsetT = 14;
6978        pub const VT_GRAPH_REF: ::flatbuffers::VOffsetT = 16;
6979
6980        #[inline]
6981        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
6982            ScanNodesOp { _tab: table }
6983        }
6984        #[allow(unused_mut)]
6985        pub fn create<
6986            'bldr: 'args,
6987            'args: 'mut_bldr,
6988            'mut_bldr,
6989            A: ::flatbuffers::Allocator + 'bldr,
6990        >(
6991            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
6992            args: &'args ScanNodesOpArgs<'args>,
6993        ) -> ::flatbuffers::WIPOffset<ScanNodesOp<'bldr>> {
6994            let mut builder = ScanNodesOpBuilder::new(_fbb);
6995            builder.add_selectivity(args.selectivity);
6996            builder.add_est_rows(args.est_rows);
6997            if let Some(x) = args.graph_ref {
6998                builder.add_graph_ref(x);
6999            }
7000            if let Some(x) = args.forbidden_labels {
7001                builder.add_forbidden_labels(x);
7002            }
7003            if let Some(x) = args.must_labels {
7004                builder.add_must_labels(x);
7005            }
7006            if let Some(x) = args.schema {
7007                builder.add_schema(x);
7008            }
7009            if let Some(x) = args.labels {
7010                builder.add_labels(x);
7011            }
7012            builder.finish()
7013        }
7014
7015        #[inline]
7016        pub fn labels(
7017            &self,
7018        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7019            // Safety:
7020            // Created from valid Table for this object
7021            // which contains a valid value in this slot
7022            unsafe {
7023                self._tab.get::<::flatbuffers::ForwardsUOffset<
7024                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7025                >>(ScanNodesOp::VT_LABELS, None)
7026            }
7027        }
7028        #[inline]
7029        pub fn schema(
7030            &self,
7031        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
7032            // Safety:
7033            // Created from valid Table for this object
7034            // which contains a valid value in this slot
7035            unsafe {
7036                self._tab.get::<::flatbuffers::ForwardsUOffset<
7037                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
7038                >>(ScanNodesOp::VT_SCHEMA, None)
7039            }
7040        }
7041        #[inline]
7042        pub fn must_labels(
7043            &self,
7044        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7045            // Safety:
7046            // Created from valid Table for this object
7047            // which contains a valid value in this slot
7048            unsafe {
7049                self._tab.get::<::flatbuffers::ForwardsUOffset<
7050                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7051                >>(ScanNodesOp::VT_MUST_LABELS, None)
7052            }
7053        }
7054        #[inline]
7055        pub fn forbidden_labels(
7056            &self,
7057        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7058            // Safety:
7059            // Created from valid Table for this object
7060            // which contains a valid value in this slot
7061            unsafe {
7062                self._tab.get::<::flatbuffers::ForwardsUOffset<
7063                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7064                >>(ScanNodesOp::VT_FORBIDDEN_LABELS, None)
7065            }
7066        }
7067        #[inline]
7068        pub fn est_rows(&self) -> i64 {
7069            // Safety:
7070            // Created from valid Table for this object
7071            // which contains a valid value in this slot
7072            unsafe {
7073                self._tab
7074                    .get::<i64>(ScanNodesOp::VT_EST_ROWS, Some(-1))
7075                    .unwrap()
7076            }
7077        }
7078        #[inline]
7079        pub fn selectivity(&self) -> f64 {
7080            // Safety:
7081            // Created from valid Table for this object
7082            // which contains a valid value in this slot
7083            unsafe {
7084                self._tab
7085                    .get::<f64>(ScanNodesOp::VT_SELECTIVITY, Some(1.0))
7086                    .unwrap()
7087            }
7088        }
7089        #[inline]
7090        pub fn graph_ref(&self) -> Option<&'a str> {
7091            // Safety:
7092            // Created from valid Table for this object
7093            // which contains a valid value in this slot
7094            unsafe {
7095                self._tab
7096                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ScanNodesOp::VT_GRAPH_REF, None)
7097            }
7098        }
7099    }
7100
7101    impl ::flatbuffers::Verifiable for ScanNodesOp<'_> {
7102        #[inline]
7103        fn run_verifier(
7104            v: &mut ::flatbuffers::Verifier,
7105            pos: usize,
7106        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
7107            v.visit_table(pos)?
7108                .visit_field::<::flatbuffers::ForwardsUOffset<
7109                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7110                >>("labels", Self::VT_LABELS, false)?
7111                .visit_field::<::flatbuffers::ForwardsUOffset<
7112                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
7113                >>("schema", Self::VT_SCHEMA, false)?
7114                .visit_field::<::flatbuffers::ForwardsUOffset<
7115                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7116                >>("must_labels", Self::VT_MUST_LABELS, false)?
7117                .visit_field::<::flatbuffers::ForwardsUOffset<
7118                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7119                >>("forbidden_labels", Self::VT_FORBIDDEN_LABELS, false)?
7120                .visit_field::<i64>("est_rows", Self::VT_EST_ROWS, false)?
7121                .visit_field::<f64>("selectivity", Self::VT_SELECTIVITY, false)?
7122                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
7123                    "graph_ref",
7124                    Self::VT_GRAPH_REF,
7125                    false,
7126                )?
7127                .finish();
7128            Ok(())
7129        }
7130    }
7131    pub struct ScanNodesOpArgs<'a> {
7132        pub labels: Option<
7133            ::flatbuffers::WIPOffset<
7134                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7135            >,
7136        >,
7137        pub schema: Option<
7138            ::flatbuffers::WIPOffset<
7139                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
7140            >,
7141        >,
7142        pub must_labels: Option<
7143            ::flatbuffers::WIPOffset<
7144                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7145            >,
7146        >,
7147        pub forbidden_labels: Option<
7148            ::flatbuffers::WIPOffset<
7149                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7150            >,
7151        >,
7152        pub est_rows: i64,
7153        pub selectivity: f64,
7154        pub graph_ref: Option<::flatbuffers::WIPOffset<&'a str>>,
7155    }
7156    impl<'a> Default for ScanNodesOpArgs<'a> {
7157        #[inline]
7158        fn default() -> Self {
7159            ScanNodesOpArgs {
7160                labels: None,
7161                schema: None,
7162                must_labels: None,
7163                forbidden_labels: None,
7164                est_rows: -1,
7165                selectivity: 1.0,
7166                graph_ref: None,
7167            }
7168        }
7169    }
7170
7171    pub struct ScanNodesOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
7172        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7173        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
7174    }
7175    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ScanNodesOpBuilder<'a, 'b, A> {
7176        #[inline]
7177        pub fn add_labels(
7178            &mut self,
7179            labels: ::flatbuffers::WIPOffset<
7180                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7181            >,
7182        ) {
7183            self.fbb_
7184                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ScanNodesOp::VT_LABELS, labels);
7185        }
7186        #[inline]
7187        pub fn add_schema(
7188            &mut self,
7189            schema: ::flatbuffers::WIPOffset<
7190                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
7191            >,
7192        ) {
7193            self.fbb_
7194                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ScanNodesOp::VT_SCHEMA, schema);
7195        }
7196        #[inline]
7197        pub fn add_must_labels(
7198            &mut self,
7199            must_labels: ::flatbuffers::WIPOffset<
7200                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7201            >,
7202        ) {
7203            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7204                ScanNodesOp::VT_MUST_LABELS,
7205                must_labels,
7206            );
7207        }
7208        #[inline]
7209        pub fn add_forbidden_labels(
7210            &mut self,
7211            forbidden_labels: ::flatbuffers::WIPOffset<
7212                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7213            >,
7214        ) {
7215            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7216                ScanNodesOp::VT_FORBIDDEN_LABELS,
7217                forbidden_labels,
7218            );
7219        }
7220        #[inline]
7221        pub fn add_est_rows(&mut self, est_rows: i64) {
7222            self.fbb_
7223                .push_slot::<i64>(ScanNodesOp::VT_EST_ROWS, est_rows, -1);
7224        }
7225        #[inline]
7226        pub fn add_selectivity(&mut self, selectivity: f64) {
7227            self.fbb_
7228                .push_slot::<f64>(ScanNodesOp::VT_SELECTIVITY, selectivity, 1.0);
7229        }
7230        #[inline]
7231        pub fn add_graph_ref(&mut self, graph_ref: ::flatbuffers::WIPOffset<&'b str>) {
7232            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7233                ScanNodesOp::VT_GRAPH_REF,
7234                graph_ref,
7235            );
7236        }
7237        #[inline]
7238        pub fn new(
7239            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7240        ) -> ScanNodesOpBuilder<'a, 'b, A> {
7241            let start = _fbb.start_table();
7242            ScanNodesOpBuilder {
7243                fbb_: _fbb,
7244                start_: start,
7245            }
7246        }
7247        #[inline]
7248        pub fn finish(self) -> ::flatbuffers::WIPOffset<ScanNodesOp<'a>> {
7249            let o = self.fbb_.end_table(self.start_);
7250            ::flatbuffers::WIPOffset::new(o.value())
7251        }
7252    }
7253
7254    impl ::core::fmt::Debug for ScanNodesOp<'_> {
7255        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
7256            let mut ds = f.debug_struct("ScanNodesOp");
7257            ds.field("labels", &self.labels());
7258            ds.field("schema", &self.schema());
7259            ds.field("must_labels", &self.must_labels());
7260            ds.field("forbidden_labels", &self.forbidden_labels());
7261            ds.field("est_rows", &self.est_rows());
7262            ds.field("selectivity", &self.selectivity());
7263            ds.field("graph_ref", &self.graph_ref());
7264            ds.finish()
7265        }
7266    }
7267    pub enum ScanRelsOpOffset {}
7268    #[derive(Copy, Clone, PartialEq)]
7269
7270    pub struct ScanRelsOp<'a> {
7271        pub _tab: ::flatbuffers::Table<'a>,
7272    }
7273
7274    impl<'a> ::flatbuffers::Follow<'a> for ScanRelsOp<'a> {
7275        type Inner = ScanRelsOp<'a>;
7276        #[inline]
7277        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7278            Self {
7279                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
7280            }
7281        }
7282    }
7283
7284    impl<'a> ScanRelsOp<'a> {
7285        pub const VT_TYPES: ::flatbuffers::VOffsetT = 4;
7286        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 6;
7287        pub const VT_SRC_LABELS: ::flatbuffers::VOffsetT = 8;
7288        pub const VT_DST_LABELS: ::flatbuffers::VOffsetT = 10;
7289        pub const VT_EST_ROWS: ::flatbuffers::VOffsetT = 12;
7290        pub const VT_SELECTIVITY: ::flatbuffers::VOffsetT = 14;
7291
7292        #[inline]
7293        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
7294            ScanRelsOp { _tab: table }
7295        }
7296        #[allow(unused_mut)]
7297        pub fn create<
7298            'bldr: 'args,
7299            'args: 'mut_bldr,
7300            'mut_bldr,
7301            A: ::flatbuffers::Allocator + 'bldr,
7302        >(
7303            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
7304            args: &'args ScanRelsOpArgs<'args>,
7305        ) -> ::flatbuffers::WIPOffset<ScanRelsOp<'bldr>> {
7306            let mut builder = ScanRelsOpBuilder::new(_fbb);
7307            builder.add_selectivity(args.selectivity);
7308            builder.add_est_rows(args.est_rows);
7309            if let Some(x) = args.dst_labels {
7310                builder.add_dst_labels(x);
7311            }
7312            if let Some(x) = args.src_labels {
7313                builder.add_src_labels(x);
7314            }
7315            if let Some(x) = args.schema {
7316                builder.add_schema(x);
7317            }
7318            if let Some(x) = args.types {
7319                builder.add_types(x);
7320            }
7321            builder.finish()
7322        }
7323
7324        #[inline]
7325        pub fn types(
7326            &self,
7327        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7328            // Safety:
7329            // Created from valid Table for this object
7330            // which contains a valid value in this slot
7331            unsafe {
7332                self._tab.get::<::flatbuffers::ForwardsUOffset<
7333                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7334                >>(ScanRelsOp::VT_TYPES, None)
7335            }
7336        }
7337        #[inline]
7338        pub fn schema(
7339            &self,
7340        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
7341            // Safety:
7342            // Created from valid Table for this object
7343            // which contains a valid value in this slot
7344            unsafe {
7345                self._tab.get::<::flatbuffers::ForwardsUOffset<
7346                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
7347                >>(ScanRelsOp::VT_SCHEMA, None)
7348            }
7349        }
7350        #[inline]
7351        pub fn src_labels(
7352            &self,
7353        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7354            // Safety:
7355            // Created from valid Table for this object
7356            // which contains a valid value in this slot
7357            unsafe {
7358                self._tab.get::<::flatbuffers::ForwardsUOffset<
7359                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7360                >>(ScanRelsOp::VT_SRC_LABELS, None)
7361            }
7362        }
7363        #[inline]
7364        pub fn dst_labels(
7365            &self,
7366        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7367            // Safety:
7368            // Created from valid Table for this object
7369            // which contains a valid value in this slot
7370            unsafe {
7371                self._tab.get::<::flatbuffers::ForwardsUOffset<
7372                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7373                >>(ScanRelsOp::VT_DST_LABELS, None)
7374            }
7375        }
7376        #[inline]
7377        pub fn est_rows(&self) -> i64 {
7378            // Safety:
7379            // Created from valid Table for this object
7380            // which contains a valid value in this slot
7381            unsafe {
7382                self._tab
7383                    .get::<i64>(ScanRelsOp::VT_EST_ROWS, Some(-1))
7384                    .unwrap()
7385            }
7386        }
7387        #[inline]
7388        pub fn selectivity(&self) -> f64 {
7389            // Safety:
7390            // Created from valid Table for this object
7391            // which contains a valid value in this slot
7392            unsafe {
7393                self._tab
7394                    .get::<f64>(ScanRelsOp::VT_SELECTIVITY, Some(1.0))
7395                    .unwrap()
7396            }
7397        }
7398    }
7399
7400    impl ::flatbuffers::Verifiable for ScanRelsOp<'_> {
7401        #[inline]
7402        fn run_verifier(
7403            v: &mut ::flatbuffers::Verifier,
7404            pos: usize,
7405        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
7406            v.visit_table(pos)?
7407                .visit_field::<::flatbuffers::ForwardsUOffset<
7408                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7409                >>("types", Self::VT_TYPES, false)?
7410                .visit_field::<::flatbuffers::ForwardsUOffset<
7411                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
7412                >>("schema", Self::VT_SCHEMA, false)?
7413                .visit_field::<::flatbuffers::ForwardsUOffset<
7414                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7415                >>("src_labels", Self::VT_SRC_LABELS, false)?
7416                .visit_field::<::flatbuffers::ForwardsUOffset<
7417                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7418                >>("dst_labels", Self::VT_DST_LABELS, false)?
7419                .visit_field::<i64>("est_rows", Self::VT_EST_ROWS, false)?
7420                .visit_field::<f64>("selectivity", Self::VT_SELECTIVITY, false)?
7421                .finish();
7422            Ok(())
7423        }
7424    }
7425    pub struct ScanRelsOpArgs<'a> {
7426        pub types: Option<
7427            ::flatbuffers::WIPOffset<
7428                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7429            >,
7430        >,
7431        pub schema: Option<
7432            ::flatbuffers::WIPOffset<
7433                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
7434            >,
7435        >,
7436        pub src_labels: Option<
7437            ::flatbuffers::WIPOffset<
7438                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7439            >,
7440        >,
7441        pub dst_labels: Option<
7442            ::flatbuffers::WIPOffset<
7443                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7444            >,
7445        >,
7446        pub est_rows: i64,
7447        pub selectivity: f64,
7448    }
7449    impl<'a> Default for ScanRelsOpArgs<'a> {
7450        #[inline]
7451        fn default() -> Self {
7452            ScanRelsOpArgs {
7453                types: None,
7454                schema: None,
7455                src_labels: None,
7456                dst_labels: None,
7457                est_rows: -1,
7458                selectivity: 1.0,
7459            }
7460        }
7461    }
7462
7463    pub struct ScanRelsOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
7464        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7465        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
7466    }
7467    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ScanRelsOpBuilder<'a, 'b, A> {
7468        #[inline]
7469        pub fn add_types(
7470            &mut self,
7471            types: ::flatbuffers::WIPOffset<
7472                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7473            >,
7474        ) {
7475            self.fbb_
7476                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ScanRelsOp::VT_TYPES, types);
7477        }
7478        #[inline]
7479        pub fn add_schema(
7480            &mut self,
7481            schema: ::flatbuffers::WIPOffset<
7482                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
7483            >,
7484        ) {
7485            self.fbb_
7486                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ScanRelsOp::VT_SCHEMA, schema);
7487        }
7488        #[inline]
7489        pub fn add_src_labels(
7490            &mut self,
7491            src_labels: ::flatbuffers::WIPOffset<
7492                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7493            >,
7494        ) {
7495            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7496                ScanRelsOp::VT_SRC_LABELS,
7497                src_labels,
7498            );
7499        }
7500        #[inline]
7501        pub fn add_dst_labels(
7502            &mut self,
7503            dst_labels: ::flatbuffers::WIPOffset<
7504                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7505            >,
7506        ) {
7507            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7508                ScanRelsOp::VT_DST_LABELS,
7509                dst_labels,
7510            );
7511        }
7512        #[inline]
7513        pub fn add_est_rows(&mut self, est_rows: i64) {
7514            self.fbb_
7515                .push_slot::<i64>(ScanRelsOp::VT_EST_ROWS, est_rows, -1);
7516        }
7517        #[inline]
7518        pub fn add_selectivity(&mut self, selectivity: f64) {
7519            self.fbb_
7520                .push_slot::<f64>(ScanRelsOp::VT_SELECTIVITY, selectivity, 1.0);
7521        }
7522        #[inline]
7523        pub fn new(
7524            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7525        ) -> ScanRelsOpBuilder<'a, 'b, A> {
7526            let start = _fbb.start_table();
7527            ScanRelsOpBuilder {
7528                fbb_: _fbb,
7529                start_: start,
7530            }
7531        }
7532        #[inline]
7533        pub fn finish(self) -> ::flatbuffers::WIPOffset<ScanRelsOp<'a>> {
7534            let o = self.fbb_.end_table(self.start_);
7535            ::flatbuffers::WIPOffset::new(o.value())
7536        }
7537    }
7538
7539    impl ::core::fmt::Debug for ScanRelsOp<'_> {
7540        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
7541            let mut ds = f.debug_struct("ScanRelsOp");
7542            ds.field("types", &self.types());
7543            ds.field("schema", &self.schema());
7544            ds.field("src_labels", &self.src_labels());
7545            ds.field("dst_labels", &self.dst_labels());
7546            ds.field("est_rows", &self.est_rows());
7547            ds.field("selectivity", &self.selectivity());
7548            ds.finish()
7549        }
7550    }
7551    pub enum ExpandOpOffset {}
7552    #[derive(Copy, Clone, PartialEq)]
7553
7554    pub struct ExpandOp<'a> {
7555        pub _tab: ::flatbuffers::Table<'a>,
7556    }
7557
7558    impl<'a> ::flatbuffers::Follow<'a> for ExpandOp<'a> {
7559        type Inner = ExpandOp<'a>;
7560        #[inline]
7561        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7562            Self {
7563                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
7564            }
7565        }
7566    }
7567
7568    impl<'a> ExpandOp<'a> {
7569        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
7570        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
7571        pub const VT_TYPES: ::flatbuffers::VOffsetT = 8;
7572        pub const VT_DIR: ::flatbuffers::VOffsetT = 10;
7573        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
7574        pub const VT_SRC_VAR: ::flatbuffers::VOffsetT = 14;
7575        pub const VT_REL_VAR: ::flatbuffers::VOffsetT = 16;
7576        pub const VT_DST_VAR: ::flatbuffers::VOffsetT = 18;
7577        pub const VT_LEGAL_SRC_LABELS: ::flatbuffers::VOffsetT = 20;
7578        pub const VT_LEGAL_DST_LABELS: ::flatbuffers::VOffsetT = 22;
7579        pub const VT_EST_DEGREE: ::flatbuffers::VOffsetT = 24;
7580        pub const VT_GRAPH_REF: ::flatbuffers::VOffsetT = 26;
7581
7582        #[inline]
7583        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
7584            ExpandOp { _tab: table }
7585        }
7586        #[allow(unused_mut)]
7587        pub fn create<
7588            'bldr: 'args,
7589            'args: 'mut_bldr,
7590            'mut_bldr,
7591            A: ::flatbuffers::Allocator + 'bldr,
7592        >(
7593            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
7594            args: &'args ExpandOpArgs<'args>,
7595        ) -> ::flatbuffers::WIPOffset<ExpandOp<'bldr>> {
7596            let mut builder = ExpandOpBuilder::new(_fbb);
7597            builder.add_est_degree(args.est_degree);
7598            if let Some(x) = args.graph_ref {
7599                builder.add_graph_ref(x);
7600            }
7601            if let Some(x) = args.legal_dst_labels {
7602                builder.add_legal_dst_labels(x);
7603            }
7604            if let Some(x) = args.legal_src_labels {
7605                builder.add_legal_src_labels(x);
7606            }
7607            if let Some(x) = args.dst_var {
7608                builder.add_dst_var(x);
7609            }
7610            if let Some(x) = args.rel_var {
7611                builder.add_rel_var(x);
7612            }
7613            if let Some(x) = args.src_var {
7614                builder.add_src_var(x);
7615            }
7616            if let Some(x) = args.schema {
7617                builder.add_schema(x);
7618            }
7619            if let Some(x) = args.types {
7620                builder.add_types(x);
7621            }
7622            builder.add_src_col(args.src_col);
7623            builder.add_input(args.input);
7624            builder.add_dir(args.dir);
7625            builder.finish()
7626        }
7627
7628        #[inline]
7629        pub fn input(&self) -> u32 {
7630            // Safety:
7631            // Created from valid Table for this object
7632            // which contains a valid value in this slot
7633            unsafe { self._tab.get::<u32>(ExpandOp::VT_INPUT, Some(0)).unwrap() }
7634        }
7635        #[inline]
7636        pub fn src_col(&self) -> u32 {
7637            // Safety:
7638            // Created from valid Table for this object
7639            // which contains a valid value in this slot
7640            unsafe { self._tab.get::<u32>(ExpandOp::VT_SRC_COL, Some(0)).unwrap() }
7641        }
7642        #[inline]
7643        pub fn types(
7644            &self,
7645        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7646            // Safety:
7647            // Created from valid Table for this object
7648            // which contains a valid value in this slot
7649            unsafe {
7650                self._tab.get::<::flatbuffers::ForwardsUOffset<
7651                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7652                >>(ExpandOp::VT_TYPES, None)
7653            }
7654        }
7655        #[inline]
7656        pub fn dir(&self) -> ExpandDir {
7657            // Safety:
7658            // Created from valid Table for this object
7659            // which contains a valid value in this slot
7660            unsafe {
7661                self._tab
7662                    .get::<ExpandDir>(ExpandOp::VT_DIR, Some(ExpandDir::out))
7663                    .unwrap()
7664            }
7665        }
7666        #[inline]
7667        pub fn schema(
7668            &self,
7669        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
7670            // Safety:
7671            // Created from valid Table for this object
7672            // which contains a valid value in this slot
7673            unsafe {
7674                self._tab.get::<::flatbuffers::ForwardsUOffset<
7675                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
7676                >>(ExpandOp::VT_SCHEMA, None)
7677            }
7678        }
7679        #[inline]
7680        pub fn src_var(&self) -> Option<&'a str> {
7681            // Safety:
7682            // Created from valid Table for this object
7683            // which contains a valid value in this slot
7684            unsafe {
7685                self._tab
7686                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandOp::VT_SRC_VAR, None)
7687            }
7688        }
7689        #[inline]
7690        pub fn rel_var(&self) -> Option<&'a str> {
7691            // Safety:
7692            // Created from valid Table for this object
7693            // which contains a valid value in this slot
7694            unsafe {
7695                self._tab
7696                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandOp::VT_REL_VAR, None)
7697            }
7698        }
7699        #[inline]
7700        pub fn dst_var(&self) -> Option<&'a str> {
7701            // Safety:
7702            // Created from valid Table for this object
7703            // which contains a valid value in this slot
7704            unsafe {
7705                self._tab
7706                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandOp::VT_DST_VAR, None)
7707            }
7708        }
7709        #[inline]
7710        pub fn legal_src_labels(
7711            &self,
7712        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7713            // Safety:
7714            // Created from valid Table for this object
7715            // which contains a valid value in this slot
7716            unsafe {
7717                self._tab.get::<::flatbuffers::ForwardsUOffset<
7718                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7719                >>(ExpandOp::VT_LEGAL_SRC_LABELS, None)
7720            }
7721        }
7722        #[inline]
7723        pub fn legal_dst_labels(
7724            &self,
7725        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
7726            // Safety:
7727            // Created from valid Table for this object
7728            // which contains a valid value in this slot
7729            unsafe {
7730                self._tab.get::<::flatbuffers::ForwardsUOffset<
7731                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7732                >>(ExpandOp::VT_LEGAL_DST_LABELS, None)
7733            }
7734        }
7735        #[inline]
7736        pub fn est_degree(&self) -> f64 {
7737            // Safety:
7738            // Created from valid Table for this object
7739            // which contains a valid value in this slot
7740            unsafe {
7741                self._tab
7742                    .get::<f64>(ExpandOp::VT_EST_DEGREE, Some(-1.0))
7743                    .unwrap()
7744            }
7745        }
7746        #[inline]
7747        pub fn graph_ref(&self) -> Option<&'a str> {
7748            // Safety:
7749            // Created from valid Table for this object
7750            // which contains a valid value in this slot
7751            unsafe {
7752                self._tab
7753                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandOp::VT_GRAPH_REF, None)
7754            }
7755        }
7756    }
7757
7758    impl ::flatbuffers::Verifiable for ExpandOp<'_> {
7759        #[inline]
7760        fn run_verifier(
7761            v: &mut ::flatbuffers::Verifier,
7762            pos: usize,
7763        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
7764            v.visit_table(pos)?
7765                .visit_field::<u32>("input", Self::VT_INPUT, false)?
7766                .visit_field::<u32>("src_col", Self::VT_SRC_COL, false)?
7767                .visit_field::<::flatbuffers::ForwardsUOffset<
7768                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7769                >>("types", Self::VT_TYPES, false)?
7770                .visit_field::<ExpandDir>("dir", Self::VT_DIR, false)?
7771                .visit_field::<::flatbuffers::ForwardsUOffset<
7772                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
7773                >>("schema", Self::VT_SCHEMA, false)?
7774                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
7775                    "src_var",
7776                    Self::VT_SRC_VAR,
7777                    false,
7778                )?
7779                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
7780                    "rel_var",
7781                    Self::VT_REL_VAR,
7782                    false,
7783                )?
7784                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
7785                    "dst_var",
7786                    Self::VT_DST_VAR,
7787                    false,
7788                )?
7789                .visit_field::<::flatbuffers::ForwardsUOffset<
7790                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7791                >>("legal_src_labels", Self::VT_LEGAL_SRC_LABELS, false)?
7792                .visit_field::<::flatbuffers::ForwardsUOffset<
7793                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
7794                >>("legal_dst_labels", Self::VT_LEGAL_DST_LABELS, false)?
7795                .visit_field::<f64>("est_degree", Self::VT_EST_DEGREE, false)?
7796                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
7797                    "graph_ref",
7798                    Self::VT_GRAPH_REF,
7799                    false,
7800                )?
7801                .finish();
7802            Ok(())
7803        }
7804    }
7805    pub struct ExpandOpArgs<'a> {
7806        pub input: u32,
7807        pub src_col: u32,
7808        pub types: Option<
7809            ::flatbuffers::WIPOffset<
7810                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7811            >,
7812        >,
7813        pub dir: ExpandDir,
7814        pub schema: Option<
7815            ::flatbuffers::WIPOffset<
7816                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
7817            >,
7818        >,
7819        pub src_var: Option<::flatbuffers::WIPOffset<&'a str>>,
7820        pub rel_var: Option<::flatbuffers::WIPOffset<&'a str>>,
7821        pub dst_var: Option<::flatbuffers::WIPOffset<&'a str>>,
7822        pub legal_src_labels: Option<
7823            ::flatbuffers::WIPOffset<
7824                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7825            >,
7826        >,
7827        pub legal_dst_labels: Option<
7828            ::flatbuffers::WIPOffset<
7829                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
7830            >,
7831        >,
7832        pub est_degree: f64,
7833        pub graph_ref: Option<::flatbuffers::WIPOffset<&'a str>>,
7834    }
7835    impl<'a> Default for ExpandOpArgs<'a> {
7836        #[inline]
7837        fn default() -> Self {
7838            ExpandOpArgs {
7839                input: 0,
7840                src_col: 0,
7841                types: None,
7842                dir: ExpandDir::out,
7843                schema: None,
7844                src_var: None,
7845                rel_var: None,
7846                dst_var: None,
7847                legal_src_labels: None,
7848                legal_dst_labels: None,
7849                est_degree: -1.0,
7850                graph_ref: None,
7851            }
7852        }
7853    }
7854
7855    pub struct ExpandOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
7856        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7857        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
7858    }
7859    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ExpandOpBuilder<'a, 'b, A> {
7860        #[inline]
7861        pub fn add_input(&mut self, input: u32) {
7862            self.fbb_.push_slot::<u32>(ExpandOp::VT_INPUT, input, 0);
7863        }
7864        #[inline]
7865        pub fn add_src_col(&mut self, src_col: u32) {
7866            self.fbb_.push_slot::<u32>(ExpandOp::VT_SRC_COL, src_col, 0);
7867        }
7868        #[inline]
7869        pub fn add_types(
7870            &mut self,
7871            types: ::flatbuffers::WIPOffset<
7872                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7873            >,
7874        ) {
7875            self.fbb_
7876                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_TYPES, types);
7877        }
7878        #[inline]
7879        pub fn add_dir(&mut self, dir: ExpandDir) {
7880            self.fbb_
7881                .push_slot::<ExpandDir>(ExpandOp::VT_DIR, dir, ExpandDir::out);
7882        }
7883        #[inline]
7884        pub fn add_schema(
7885            &mut self,
7886            schema: ::flatbuffers::WIPOffset<
7887                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
7888            >,
7889        ) {
7890            self.fbb_
7891                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_SCHEMA, schema);
7892        }
7893        #[inline]
7894        pub fn add_src_var(&mut self, src_var: ::flatbuffers::WIPOffset<&'b str>) {
7895            self.fbb_
7896                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_SRC_VAR, src_var);
7897        }
7898        #[inline]
7899        pub fn add_rel_var(&mut self, rel_var: ::flatbuffers::WIPOffset<&'b str>) {
7900            self.fbb_
7901                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_REL_VAR, rel_var);
7902        }
7903        #[inline]
7904        pub fn add_dst_var(&mut self, dst_var: ::flatbuffers::WIPOffset<&'b str>) {
7905            self.fbb_
7906                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_DST_VAR, dst_var);
7907        }
7908        #[inline]
7909        pub fn add_legal_src_labels(
7910            &mut self,
7911            legal_src_labels: ::flatbuffers::WIPOffset<
7912                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7913            >,
7914        ) {
7915            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7916                ExpandOp::VT_LEGAL_SRC_LABELS,
7917                legal_src_labels,
7918            );
7919        }
7920        #[inline]
7921        pub fn add_legal_dst_labels(
7922            &mut self,
7923            legal_dst_labels: ::flatbuffers::WIPOffset<
7924                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
7925            >,
7926        ) {
7927            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
7928                ExpandOp::VT_LEGAL_DST_LABELS,
7929                legal_dst_labels,
7930            );
7931        }
7932        #[inline]
7933        pub fn add_est_degree(&mut self, est_degree: f64) {
7934            self.fbb_
7935                .push_slot::<f64>(ExpandOp::VT_EST_DEGREE, est_degree, -1.0);
7936        }
7937        #[inline]
7938        pub fn add_graph_ref(&mut self, graph_ref: ::flatbuffers::WIPOffset<&'b str>) {
7939            self.fbb_
7940                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandOp::VT_GRAPH_REF, graph_ref);
7941        }
7942        #[inline]
7943        pub fn new(
7944            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
7945        ) -> ExpandOpBuilder<'a, 'b, A> {
7946            let start = _fbb.start_table();
7947            ExpandOpBuilder {
7948                fbb_: _fbb,
7949                start_: start,
7950            }
7951        }
7952        #[inline]
7953        pub fn finish(self) -> ::flatbuffers::WIPOffset<ExpandOp<'a>> {
7954            let o = self.fbb_.end_table(self.start_);
7955            ::flatbuffers::WIPOffset::new(o.value())
7956        }
7957    }
7958
7959    impl ::core::fmt::Debug for ExpandOp<'_> {
7960        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
7961            let mut ds = f.debug_struct("ExpandOp");
7962            ds.field("input", &self.input());
7963            ds.field("src_col", &self.src_col());
7964            ds.field("types", &self.types());
7965            ds.field("dir", &self.dir());
7966            ds.field("schema", &self.schema());
7967            ds.field("src_var", &self.src_var());
7968            ds.field("rel_var", &self.rel_var());
7969            ds.field("dst_var", &self.dst_var());
7970            ds.field("legal_src_labels", &self.legal_src_labels());
7971            ds.field("legal_dst_labels", &self.legal_dst_labels());
7972            ds.field("est_degree", &self.est_degree());
7973            ds.field("graph_ref", &self.graph_ref());
7974            ds.finish()
7975        }
7976    }
7977    pub enum OptionalExpandOpOffset {}
7978    #[derive(Copy, Clone, PartialEq)]
7979
7980    pub struct OptionalExpandOp<'a> {
7981        pub _tab: ::flatbuffers::Table<'a>,
7982    }
7983
7984    impl<'a> ::flatbuffers::Follow<'a> for OptionalExpandOp<'a> {
7985        type Inner = OptionalExpandOp<'a>;
7986        #[inline]
7987        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7988            Self {
7989                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
7990            }
7991        }
7992    }
7993
7994    impl<'a> OptionalExpandOp<'a> {
7995        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
7996        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
7997        pub const VT_TYPES: ::flatbuffers::VOffsetT = 8;
7998        pub const VT_DIR: ::flatbuffers::VOffsetT = 10;
7999        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
8000        pub const VT_SRC_VAR: ::flatbuffers::VOffsetT = 14;
8001        pub const VT_REL_VAR: ::flatbuffers::VOffsetT = 16;
8002        pub const VT_DST_VAR: ::flatbuffers::VOffsetT = 18;
8003        pub const VT_LEGAL_SRC_LABELS: ::flatbuffers::VOffsetT = 20;
8004        pub const VT_LEGAL_DST_LABELS: ::flatbuffers::VOffsetT = 22;
8005        pub const VT_GRAPH_REF: ::flatbuffers::VOffsetT = 24;
8006
8007        #[inline]
8008        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
8009            OptionalExpandOp { _tab: table }
8010        }
8011        #[allow(unused_mut)]
8012        pub fn create<
8013            'bldr: 'args,
8014            'args: 'mut_bldr,
8015            'mut_bldr,
8016            A: ::flatbuffers::Allocator + 'bldr,
8017        >(
8018            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
8019            args: &'args OptionalExpandOpArgs<'args>,
8020        ) -> ::flatbuffers::WIPOffset<OptionalExpandOp<'bldr>> {
8021            let mut builder = OptionalExpandOpBuilder::new(_fbb);
8022            if let Some(x) = args.graph_ref {
8023                builder.add_graph_ref(x);
8024            }
8025            if let Some(x) = args.legal_dst_labels {
8026                builder.add_legal_dst_labels(x);
8027            }
8028            if let Some(x) = args.legal_src_labels {
8029                builder.add_legal_src_labels(x);
8030            }
8031            if let Some(x) = args.dst_var {
8032                builder.add_dst_var(x);
8033            }
8034            if let Some(x) = args.rel_var {
8035                builder.add_rel_var(x);
8036            }
8037            if let Some(x) = args.src_var {
8038                builder.add_src_var(x);
8039            }
8040            if let Some(x) = args.schema {
8041                builder.add_schema(x);
8042            }
8043            if let Some(x) = args.types {
8044                builder.add_types(x);
8045            }
8046            builder.add_src_col(args.src_col);
8047            builder.add_input(args.input);
8048            builder.add_dir(args.dir);
8049            builder.finish()
8050        }
8051
8052        #[inline]
8053        pub fn input(&self) -> u32 {
8054            // Safety:
8055            // Created from valid Table for this object
8056            // which contains a valid value in this slot
8057            unsafe {
8058                self._tab
8059                    .get::<u32>(OptionalExpandOp::VT_INPUT, Some(0))
8060                    .unwrap()
8061            }
8062        }
8063        #[inline]
8064        pub fn src_col(&self) -> u32 {
8065            // Safety:
8066            // Created from valid Table for this object
8067            // which contains a valid value in this slot
8068            unsafe {
8069                self._tab
8070                    .get::<u32>(OptionalExpandOp::VT_SRC_COL, Some(0))
8071                    .unwrap()
8072            }
8073        }
8074        #[inline]
8075        pub fn types(
8076            &self,
8077        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8078            // Safety:
8079            // Created from valid Table for this object
8080            // which contains a valid value in this slot
8081            unsafe {
8082                self._tab.get::<::flatbuffers::ForwardsUOffset<
8083                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8084                >>(OptionalExpandOp::VT_TYPES, None)
8085            }
8086        }
8087        #[inline]
8088        pub fn dir(&self) -> ExpandDir {
8089            // Safety:
8090            // Created from valid Table for this object
8091            // which contains a valid value in this slot
8092            unsafe {
8093                self._tab
8094                    .get::<ExpandDir>(OptionalExpandOp::VT_DIR, Some(ExpandDir::out))
8095                    .unwrap()
8096            }
8097        }
8098        #[inline]
8099        pub fn schema(
8100            &self,
8101        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
8102            // Safety:
8103            // Created from valid Table for this object
8104            // which contains a valid value in this slot
8105            unsafe {
8106                self._tab.get::<::flatbuffers::ForwardsUOffset<
8107                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
8108                >>(OptionalExpandOp::VT_SCHEMA, None)
8109            }
8110        }
8111        #[inline]
8112        pub fn src_var(&self) -> Option<&'a str> {
8113            // Safety:
8114            // Created from valid Table for this object
8115            // which contains a valid value in this slot
8116            unsafe {
8117                self._tab
8118                    .get::<::flatbuffers::ForwardsUOffset<&str>>(OptionalExpandOp::VT_SRC_VAR, None)
8119            }
8120        }
8121        #[inline]
8122        pub fn rel_var(&self) -> Option<&'a str> {
8123            // Safety:
8124            // Created from valid Table for this object
8125            // which contains a valid value in this slot
8126            unsafe {
8127                self._tab
8128                    .get::<::flatbuffers::ForwardsUOffset<&str>>(OptionalExpandOp::VT_REL_VAR, None)
8129            }
8130        }
8131        #[inline]
8132        pub fn dst_var(&self) -> Option<&'a str> {
8133            // Safety:
8134            // Created from valid Table for this object
8135            // which contains a valid value in this slot
8136            unsafe {
8137                self._tab
8138                    .get::<::flatbuffers::ForwardsUOffset<&str>>(OptionalExpandOp::VT_DST_VAR, None)
8139            }
8140        }
8141        #[inline]
8142        pub fn legal_src_labels(
8143            &self,
8144        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8145            // Safety:
8146            // Created from valid Table for this object
8147            // which contains a valid value in this slot
8148            unsafe {
8149                self._tab.get::<::flatbuffers::ForwardsUOffset<
8150                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8151                >>(OptionalExpandOp::VT_LEGAL_SRC_LABELS, None)
8152            }
8153        }
8154        #[inline]
8155        pub fn legal_dst_labels(
8156            &self,
8157        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8158            // Safety:
8159            // Created from valid Table for this object
8160            // which contains a valid value in this slot
8161            unsafe {
8162                self._tab.get::<::flatbuffers::ForwardsUOffset<
8163                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8164                >>(OptionalExpandOp::VT_LEGAL_DST_LABELS, None)
8165            }
8166        }
8167        #[inline]
8168        pub fn graph_ref(&self) -> Option<&'a str> {
8169            // Safety:
8170            // Created from valid Table for this object
8171            // which contains a valid value in this slot
8172            unsafe {
8173                self._tab.get::<::flatbuffers::ForwardsUOffset<&str>>(
8174                    OptionalExpandOp::VT_GRAPH_REF,
8175                    None,
8176                )
8177            }
8178        }
8179    }
8180
8181    impl ::flatbuffers::Verifiable for OptionalExpandOp<'_> {
8182        #[inline]
8183        fn run_verifier(
8184            v: &mut ::flatbuffers::Verifier,
8185            pos: usize,
8186        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
8187            v.visit_table(pos)?
8188                .visit_field::<u32>("input", Self::VT_INPUT, false)?
8189                .visit_field::<u32>("src_col", Self::VT_SRC_COL, false)?
8190                .visit_field::<::flatbuffers::ForwardsUOffset<
8191                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8192                >>("types", Self::VT_TYPES, false)?
8193                .visit_field::<ExpandDir>("dir", Self::VT_DIR, false)?
8194                .visit_field::<::flatbuffers::ForwardsUOffset<
8195                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
8196                >>("schema", Self::VT_SCHEMA, false)?
8197                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8198                    "src_var",
8199                    Self::VT_SRC_VAR,
8200                    false,
8201                )?
8202                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8203                    "rel_var",
8204                    Self::VT_REL_VAR,
8205                    false,
8206                )?
8207                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8208                    "dst_var",
8209                    Self::VT_DST_VAR,
8210                    false,
8211                )?
8212                .visit_field::<::flatbuffers::ForwardsUOffset<
8213                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8214                >>("legal_src_labels", Self::VT_LEGAL_SRC_LABELS, false)?
8215                .visit_field::<::flatbuffers::ForwardsUOffset<
8216                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8217                >>("legal_dst_labels", Self::VT_LEGAL_DST_LABELS, false)?
8218                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8219                    "graph_ref",
8220                    Self::VT_GRAPH_REF,
8221                    false,
8222                )?
8223                .finish();
8224            Ok(())
8225        }
8226    }
8227    pub struct OptionalExpandOpArgs<'a> {
8228        pub input: u32,
8229        pub src_col: u32,
8230        pub types: Option<
8231            ::flatbuffers::WIPOffset<
8232                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8233            >,
8234        >,
8235        pub dir: ExpandDir,
8236        pub schema: Option<
8237            ::flatbuffers::WIPOffset<
8238                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
8239            >,
8240        >,
8241        pub src_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8242        pub rel_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8243        pub dst_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8244        pub legal_src_labels: Option<
8245            ::flatbuffers::WIPOffset<
8246                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8247            >,
8248        >,
8249        pub legal_dst_labels: Option<
8250            ::flatbuffers::WIPOffset<
8251                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8252            >,
8253        >,
8254        pub graph_ref: Option<::flatbuffers::WIPOffset<&'a str>>,
8255    }
8256    impl<'a> Default for OptionalExpandOpArgs<'a> {
8257        #[inline]
8258        fn default() -> Self {
8259            OptionalExpandOpArgs {
8260                input: 0,
8261                src_col: 0,
8262                types: None,
8263                dir: ExpandDir::out,
8264                schema: None,
8265                src_var: None,
8266                rel_var: None,
8267                dst_var: None,
8268                legal_src_labels: None,
8269                legal_dst_labels: None,
8270                graph_ref: None,
8271            }
8272        }
8273    }
8274
8275    pub struct OptionalExpandOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
8276        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
8277        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
8278    }
8279    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> OptionalExpandOpBuilder<'a, 'b, A> {
8280        #[inline]
8281        pub fn add_input(&mut self, input: u32) {
8282            self.fbb_
8283                .push_slot::<u32>(OptionalExpandOp::VT_INPUT, input, 0);
8284        }
8285        #[inline]
8286        pub fn add_src_col(&mut self, src_col: u32) {
8287            self.fbb_
8288                .push_slot::<u32>(OptionalExpandOp::VT_SRC_COL, src_col, 0);
8289        }
8290        #[inline]
8291        pub fn add_types(
8292            &mut self,
8293            types: ::flatbuffers::WIPOffset<
8294                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8295            >,
8296        ) {
8297            self.fbb_
8298                .push_slot_always::<::flatbuffers::WIPOffset<_>>(OptionalExpandOp::VT_TYPES, types);
8299        }
8300        #[inline]
8301        pub fn add_dir(&mut self, dir: ExpandDir) {
8302            self.fbb_
8303                .push_slot::<ExpandDir>(OptionalExpandOp::VT_DIR, dir, ExpandDir::out);
8304        }
8305        #[inline]
8306        pub fn add_schema(
8307            &mut self,
8308            schema: ::flatbuffers::WIPOffset<
8309                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
8310            >,
8311        ) {
8312            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8313                OptionalExpandOp::VT_SCHEMA,
8314                schema,
8315            );
8316        }
8317        #[inline]
8318        pub fn add_src_var(&mut self, src_var: ::flatbuffers::WIPOffset<&'b str>) {
8319            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8320                OptionalExpandOp::VT_SRC_VAR,
8321                src_var,
8322            );
8323        }
8324        #[inline]
8325        pub fn add_rel_var(&mut self, rel_var: ::flatbuffers::WIPOffset<&'b str>) {
8326            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8327                OptionalExpandOp::VT_REL_VAR,
8328                rel_var,
8329            );
8330        }
8331        #[inline]
8332        pub fn add_dst_var(&mut self, dst_var: ::flatbuffers::WIPOffset<&'b str>) {
8333            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8334                OptionalExpandOp::VT_DST_VAR,
8335                dst_var,
8336            );
8337        }
8338        #[inline]
8339        pub fn add_legal_src_labels(
8340            &mut self,
8341            legal_src_labels: ::flatbuffers::WIPOffset<
8342                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8343            >,
8344        ) {
8345            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8346                OptionalExpandOp::VT_LEGAL_SRC_LABELS,
8347                legal_src_labels,
8348            );
8349        }
8350        #[inline]
8351        pub fn add_legal_dst_labels(
8352            &mut self,
8353            legal_dst_labels: ::flatbuffers::WIPOffset<
8354                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8355            >,
8356        ) {
8357            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8358                OptionalExpandOp::VT_LEGAL_DST_LABELS,
8359                legal_dst_labels,
8360            );
8361        }
8362        #[inline]
8363        pub fn add_graph_ref(&mut self, graph_ref: ::flatbuffers::WIPOffset<&'b str>) {
8364            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8365                OptionalExpandOp::VT_GRAPH_REF,
8366                graph_ref,
8367            );
8368        }
8369        #[inline]
8370        pub fn new(
8371            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
8372        ) -> OptionalExpandOpBuilder<'a, 'b, A> {
8373            let start = _fbb.start_table();
8374            OptionalExpandOpBuilder {
8375                fbb_: _fbb,
8376                start_: start,
8377            }
8378        }
8379        #[inline]
8380        pub fn finish(self) -> ::flatbuffers::WIPOffset<OptionalExpandOp<'a>> {
8381            let o = self.fbb_.end_table(self.start_);
8382            ::flatbuffers::WIPOffset::new(o.value())
8383        }
8384    }
8385
8386    impl ::core::fmt::Debug for OptionalExpandOp<'_> {
8387        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
8388            let mut ds = f.debug_struct("OptionalExpandOp");
8389            ds.field("input", &self.input());
8390            ds.field("src_col", &self.src_col());
8391            ds.field("types", &self.types());
8392            ds.field("dir", &self.dir());
8393            ds.field("schema", &self.schema());
8394            ds.field("src_var", &self.src_var());
8395            ds.field("rel_var", &self.rel_var());
8396            ds.field("dst_var", &self.dst_var());
8397            ds.field("legal_src_labels", &self.legal_src_labels());
8398            ds.field("legal_dst_labels", &self.legal_dst_labels());
8399            ds.field("graph_ref", &self.graph_ref());
8400            ds.finish()
8401        }
8402    }
8403    pub enum SemiExpandOpOffset {}
8404    #[derive(Copy, Clone, PartialEq)]
8405
8406    pub struct SemiExpandOp<'a> {
8407        pub _tab: ::flatbuffers::Table<'a>,
8408    }
8409
8410    impl<'a> ::flatbuffers::Follow<'a> for SemiExpandOp<'a> {
8411        type Inner = SemiExpandOp<'a>;
8412        #[inline]
8413        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8414            Self {
8415                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
8416            }
8417        }
8418    }
8419
8420    impl<'a> SemiExpandOp<'a> {
8421        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
8422        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
8423        pub const VT_TYPES: ::flatbuffers::VOffsetT = 8;
8424        pub const VT_DIR: ::flatbuffers::VOffsetT = 10;
8425        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
8426        pub const VT_LEGAL_SRC_LABELS: ::flatbuffers::VOffsetT = 14;
8427        pub const VT_LEGAL_DST_LABELS: ::flatbuffers::VOffsetT = 16;
8428
8429        #[inline]
8430        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
8431            SemiExpandOp { _tab: table }
8432        }
8433        #[allow(unused_mut)]
8434        pub fn create<
8435            'bldr: 'args,
8436            'args: 'mut_bldr,
8437            'mut_bldr,
8438            A: ::flatbuffers::Allocator + 'bldr,
8439        >(
8440            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
8441            args: &'args SemiExpandOpArgs<'args>,
8442        ) -> ::flatbuffers::WIPOffset<SemiExpandOp<'bldr>> {
8443            let mut builder = SemiExpandOpBuilder::new(_fbb);
8444            if let Some(x) = args.legal_dst_labels {
8445                builder.add_legal_dst_labels(x);
8446            }
8447            if let Some(x) = args.legal_src_labels {
8448                builder.add_legal_src_labels(x);
8449            }
8450            if let Some(x) = args.schema {
8451                builder.add_schema(x);
8452            }
8453            if let Some(x) = args.types {
8454                builder.add_types(x);
8455            }
8456            builder.add_src_col(args.src_col);
8457            builder.add_input(args.input);
8458            builder.add_dir(args.dir);
8459            builder.finish()
8460        }
8461
8462        #[inline]
8463        pub fn input(&self) -> u32 {
8464            // Safety:
8465            // Created from valid Table for this object
8466            // which contains a valid value in this slot
8467            unsafe {
8468                self._tab
8469                    .get::<u32>(SemiExpandOp::VT_INPUT, Some(0))
8470                    .unwrap()
8471            }
8472        }
8473        #[inline]
8474        pub fn src_col(&self) -> u32 {
8475            // Safety:
8476            // Created from valid Table for this object
8477            // which contains a valid value in this slot
8478            unsafe {
8479                self._tab
8480                    .get::<u32>(SemiExpandOp::VT_SRC_COL, Some(0))
8481                    .unwrap()
8482            }
8483        }
8484        #[inline]
8485        pub fn types(
8486            &self,
8487        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8488            // Safety:
8489            // Created from valid Table for this object
8490            // which contains a valid value in this slot
8491            unsafe {
8492                self._tab.get::<::flatbuffers::ForwardsUOffset<
8493                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8494                >>(SemiExpandOp::VT_TYPES, None)
8495            }
8496        }
8497        #[inline]
8498        pub fn dir(&self) -> ExpandDir {
8499            // Safety:
8500            // Created from valid Table for this object
8501            // which contains a valid value in this slot
8502            unsafe {
8503                self._tab
8504                    .get::<ExpandDir>(SemiExpandOp::VT_DIR, Some(ExpandDir::out))
8505                    .unwrap()
8506            }
8507        }
8508        #[inline]
8509        pub fn schema(
8510            &self,
8511        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
8512            // Safety:
8513            // Created from valid Table for this object
8514            // which contains a valid value in this slot
8515            unsafe {
8516                self._tab.get::<::flatbuffers::ForwardsUOffset<
8517                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
8518                >>(SemiExpandOp::VT_SCHEMA, None)
8519            }
8520        }
8521        #[inline]
8522        pub fn legal_src_labels(
8523            &self,
8524        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8525            // Safety:
8526            // Created from valid Table for this object
8527            // which contains a valid value in this slot
8528            unsafe {
8529                self._tab.get::<::flatbuffers::ForwardsUOffset<
8530                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8531                >>(SemiExpandOp::VT_LEGAL_SRC_LABELS, None)
8532            }
8533        }
8534        #[inline]
8535        pub fn legal_dst_labels(
8536            &self,
8537        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8538            // Safety:
8539            // Created from valid Table for this object
8540            // which contains a valid value in this slot
8541            unsafe {
8542                self._tab.get::<::flatbuffers::ForwardsUOffset<
8543                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8544                >>(SemiExpandOp::VT_LEGAL_DST_LABELS, None)
8545            }
8546        }
8547    }
8548
8549    impl ::flatbuffers::Verifiable for SemiExpandOp<'_> {
8550        #[inline]
8551        fn run_verifier(
8552            v: &mut ::flatbuffers::Verifier,
8553            pos: usize,
8554        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
8555            v.visit_table(pos)?
8556                .visit_field::<u32>("input", Self::VT_INPUT, false)?
8557                .visit_field::<u32>("src_col", Self::VT_SRC_COL, false)?
8558                .visit_field::<::flatbuffers::ForwardsUOffset<
8559                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8560                >>("types", Self::VT_TYPES, false)?
8561                .visit_field::<ExpandDir>("dir", Self::VT_DIR, false)?
8562                .visit_field::<::flatbuffers::ForwardsUOffset<
8563                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
8564                >>("schema", Self::VT_SCHEMA, false)?
8565                .visit_field::<::flatbuffers::ForwardsUOffset<
8566                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8567                >>("legal_src_labels", Self::VT_LEGAL_SRC_LABELS, false)?
8568                .visit_field::<::flatbuffers::ForwardsUOffset<
8569                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8570                >>("legal_dst_labels", Self::VT_LEGAL_DST_LABELS, false)?
8571                .finish();
8572            Ok(())
8573        }
8574    }
8575    pub struct SemiExpandOpArgs<'a> {
8576        pub input: u32,
8577        pub src_col: u32,
8578        pub types: Option<
8579            ::flatbuffers::WIPOffset<
8580                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8581            >,
8582        >,
8583        pub dir: ExpandDir,
8584        pub schema: Option<
8585            ::flatbuffers::WIPOffset<
8586                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
8587            >,
8588        >,
8589        pub legal_src_labels: Option<
8590            ::flatbuffers::WIPOffset<
8591                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8592            >,
8593        >,
8594        pub legal_dst_labels: Option<
8595            ::flatbuffers::WIPOffset<
8596                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8597            >,
8598        >,
8599    }
8600    impl<'a> Default for SemiExpandOpArgs<'a> {
8601        #[inline]
8602        fn default() -> Self {
8603            SemiExpandOpArgs {
8604                input: 0,
8605                src_col: 0,
8606                types: None,
8607                dir: ExpandDir::out,
8608                schema: None,
8609                legal_src_labels: None,
8610                legal_dst_labels: None,
8611            }
8612        }
8613    }
8614
8615    pub struct SemiExpandOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
8616        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
8617        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
8618    }
8619    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> SemiExpandOpBuilder<'a, 'b, A> {
8620        #[inline]
8621        pub fn add_input(&mut self, input: u32) {
8622            self.fbb_.push_slot::<u32>(SemiExpandOp::VT_INPUT, input, 0);
8623        }
8624        #[inline]
8625        pub fn add_src_col(&mut self, src_col: u32) {
8626            self.fbb_
8627                .push_slot::<u32>(SemiExpandOp::VT_SRC_COL, src_col, 0);
8628        }
8629        #[inline]
8630        pub fn add_types(
8631            &mut self,
8632            types: ::flatbuffers::WIPOffset<
8633                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8634            >,
8635        ) {
8636            self.fbb_
8637                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SemiExpandOp::VT_TYPES, types);
8638        }
8639        #[inline]
8640        pub fn add_dir(&mut self, dir: ExpandDir) {
8641            self.fbb_
8642                .push_slot::<ExpandDir>(SemiExpandOp::VT_DIR, dir, ExpandDir::out);
8643        }
8644        #[inline]
8645        pub fn add_schema(
8646            &mut self,
8647            schema: ::flatbuffers::WIPOffset<
8648                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
8649            >,
8650        ) {
8651            self.fbb_
8652                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SemiExpandOp::VT_SCHEMA, schema);
8653        }
8654        #[inline]
8655        pub fn add_legal_src_labels(
8656            &mut self,
8657            legal_src_labels: ::flatbuffers::WIPOffset<
8658                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8659            >,
8660        ) {
8661            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8662                SemiExpandOp::VT_LEGAL_SRC_LABELS,
8663                legal_src_labels,
8664            );
8665        }
8666        #[inline]
8667        pub fn add_legal_dst_labels(
8668            &mut self,
8669            legal_dst_labels: ::flatbuffers::WIPOffset<
8670                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
8671            >,
8672        ) {
8673            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
8674                SemiExpandOp::VT_LEGAL_DST_LABELS,
8675                legal_dst_labels,
8676            );
8677        }
8678        #[inline]
8679        pub fn new(
8680            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
8681        ) -> SemiExpandOpBuilder<'a, 'b, A> {
8682            let start = _fbb.start_table();
8683            SemiExpandOpBuilder {
8684                fbb_: _fbb,
8685                start_: start,
8686            }
8687        }
8688        #[inline]
8689        pub fn finish(self) -> ::flatbuffers::WIPOffset<SemiExpandOp<'a>> {
8690            let o = self.fbb_.end_table(self.start_);
8691            ::flatbuffers::WIPOffset::new(o.value())
8692        }
8693    }
8694
8695    impl ::core::fmt::Debug for SemiExpandOp<'_> {
8696        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
8697            let mut ds = f.debug_struct("SemiExpandOp");
8698            ds.field("input", &self.input());
8699            ds.field("src_col", &self.src_col());
8700            ds.field("types", &self.types());
8701            ds.field("dir", &self.dir());
8702            ds.field("schema", &self.schema());
8703            ds.field("legal_src_labels", &self.legal_src_labels());
8704            ds.field("legal_dst_labels", &self.legal_dst_labels());
8705            ds.finish()
8706        }
8707    }
8708    pub enum ExpandVarLenOpOffset {}
8709    #[derive(Copy, Clone, PartialEq)]
8710
8711    pub struct ExpandVarLenOp<'a> {
8712        pub _tab: ::flatbuffers::Table<'a>,
8713    }
8714
8715    impl<'a> ::flatbuffers::Follow<'a> for ExpandVarLenOp<'a> {
8716        type Inner = ExpandVarLenOp<'a>;
8717        #[inline]
8718        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8719            Self {
8720                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
8721            }
8722        }
8723    }
8724
8725    impl<'a> ExpandVarLenOp<'a> {
8726        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
8727        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
8728        pub const VT_TYPES: ::flatbuffers::VOffsetT = 8;
8729        pub const VT_DIR: ::flatbuffers::VOffsetT = 10;
8730        pub const VT_MIN_HOPS: ::flatbuffers::VOffsetT = 12;
8731        pub const VT_MAX_HOPS: ::flatbuffers::VOffsetT = 14;
8732        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 16;
8733        pub const VT_SRC_VAR: ::flatbuffers::VOffsetT = 18;
8734        pub const VT_PATH_VAR: ::flatbuffers::VOffsetT = 20;
8735        pub const VT_DST_VAR: ::flatbuffers::VOffsetT = 22;
8736        pub const VT_GRAPH_REF: ::flatbuffers::VOffsetT = 24;
8737
8738        #[inline]
8739        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
8740            ExpandVarLenOp { _tab: table }
8741        }
8742        #[allow(unused_mut)]
8743        pub fn create<
8744            'bldr: 'args,
8745            'args: 'mut_bldr,
8746            'mut_bldr,
8747            A: ::flatbuffers::Allocator + 'bldr,
8748        >(
8749            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
8750            args: &'args ExpandVarLenOpArgs<'args>,
8751        ) -> ::flatbuffers::WIPOffset<ExpandVarLenOp<'bldr>> {
8752            let mut builder = ExpandVarLenOpBuilder::new(_fbb);
8753            if let Some(x) = args.graph_ref {
8754                builder.add_graph_ref(x);
8755            }
8756            if let Some(x) = args.dst_var {
8757                builder.add_dst_var(x);
8758            }
8759            if let Some(x) = args.path_var {
8760                builder.add_path_var(x);
8761            }
8762            if let Some(x) = args.src_var {
8763                builder.add_src_var(x);
8764            }
8765            if let Some(x) = args.schema {
8766                builder.add_schema(x);
8767            }
8768            builder.add_max_hops(args.max_hops);
8769            builder.add_min_hops(args.min_hops);
8770            if let Some(x) = args.types {
8771                builder.add_types(x);
8772            }
8773            builder.add_src_col(args.src_col);
8774            builder.add_input(args.input);
8775            builder.add_dir(args.dir);
8776            builder.finish()
8777        }
8778
8779        #[inline]
8780        pub fn input(&self) -> u32 {
8781            // Safety:
8782            // Created from valid Table for this object
8783            // which contains a valid value in this slot
8784            unsafe {
8785                self._tab
8786                    .get::<u32>(ExpandVarLenOp::VT_INPUT, Some(0))
8787                    .unwrap()
8788            }
8789        }
8790        #[inline]
8791        pub fn src_col(&self) -> u32 {
8792            // Safety:
8793            // Created from valid Table for this object
8794            // which contains a valid value in this slot
8795            unsafe {
8796                self._tab
8797                    .get::<u32>(ExpandVarLenOp::VT_SRC_COL, Some(0))
8798                    .unwrap()
8799            }
8800        }
8801        #[inline]
8802        pub fn types(
8803            &self,
8804        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
8805            // Safety:
8806            // Created from valid Table for this object
8807            // which contains a valid value in this slot
8808            unsafe {
8809                self._tab.get::<::flatbuffers::ForwardsUOffset<
8810                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8811                >>(ExpandVarLenOp::VT_TYPES, None)
8812            }
8813        }
8814        #[inline]
8815        pub fn dir(&self) -> ExpandDir {
8816            // Safety:
8817            // Created from valid Table for this object
8818            // which contains a valid value in this slot
8819            unsafe {
8820                self._tab
8821                    .get::<ExpandDir>(ExpandVarLenOp::VT_DIR, Some(ExpandDir::out))
8822                    .unwrap()
8823            }
8824        }
8825        #[inline]
8826        pub fn min_hops(&self) -> i32 {
8827            // Safety:
8828            // Created from valid Table for this object
8829            // which contains a valid value in this slot
8830            unsafe {
8831                self._tab
8832                    .get::<i32>(ExpandVarLenOp::VT_MIN_HOPS, Some(0))
8833                    .unwrap()
8834            }
8835        }
8836        #[inline]
8837        pub fn max_hops(&self) -> i32 {
8838            // Safety:
8839            // Created from valid Table for this object
8840            // which contains a valid value in this slot
8841            unsafe {
8842                self._tab
8843                    .get::<i32>(ExpandVarLenOp::VT_MAX_HOPS, Some(0))
8844                    .unwrap()
8845            }
8846        }
8847        #[inline]
8848        pub fn schema(
8849            &self,
8850        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
8851            // Safety:
8852            // Created from valid Table for this object
8853            // which contains a valid value in this slot
8854            unsafe {
8855                self._tab.get::<::flatbuffers::ForwardsUOffset<
8856                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
8857                >>(ExpandVarLenOp::VT_SCHEMA, None)
8858            }
8859        }
8860        #[inline]
8861        pub fn src_var(&self) -> Option<&'a str> {
8862            // Safety:
8863            // Created from valid Table for this object
8864            // which contains a valid value in this slot
8865            unsafe {
8866                self._tab
8867                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandVarLenOp::VT_SRC_VAR, None)
8868            }
8869        }
8870        #[inline]
8871        pub fn path_var(&self) -> Option<&'a str> {
8872            // Safety:
8873            // Created from valid Table for this object
8874            // which contains a valid value in this slot
8875            unsafe {
8876                self._tab
8877                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandVarLenOp::VT_PATH_VAR, None)
8878            }
8879        }
8880        #[inline]
8881        pub fn dst_var(&self) -> Option<&'a str> {
8882            // Safety:
8883            // Created from valid Table for this object
8884            // which contains a valid value in this slot
8885            unsafe {
8886                self._tab
8887                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandVarLenOp::VT_DST_VAR, None)
8888            }
8889        }
8890        #[inline]
8891        pub fn graph_ref(&self) -> Option<&'a str> {
8892            // Safety:
8893            // Created from valid Table for this object
8894            // which contains a valid value in this slot
8895            unsafe {
8896                self._tab
8897                    .get::<::flatbuffers::ForwardsUOffset<&str>>(ExpandVarLenOp::VT_GRAPH_REF, None)
8898            }
8899        }
8900    }
8901
8902    impl ::flatbuffers::Verifiable for ExpandVarLenOp<'_> {
8903        #[inline]
8904        fn run_verifier(
8905            v: &mut ::flatbuffers::Verifier,
8906            pos: usize,
8907        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
8908            v.visit_table(pos)?
8909                .visit_field::<u32>("input", Self::VT_INPUT, false)?
8910                .visit_field::<u32>("src_col", Self::VT_SRC_COL, false)?
8911                .visit_field::<::flatbuffers::ForwardsUOffset<
8912                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
8913                >>("types", Self::VT_TYPES, false)?
8914                .visit_field::<ExpandDir>("dir", Self::VT_DIR, false)?
8915                .visit_field::<i32>("min_hops", Self::VT_MIN_HOPS, false)?
8916                .visit_field::<i32>("max_hops", Self::VT_MAX_HOPS, false)?
8917                .visit_field::<::flatbuffers::ForwardsUOffset<
8918                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
8919                >>("schema", Self::VT_SCHEMA, false)?
8920                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8921                    "src_var",
8922                    Self::VT_SRC_VAR,
8923                    false,
8924                )?
8925                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8926                    "path_var",
8927                    Self::VT_PATH_VAR,
8928                    false,
8929                )?
8930                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8931                    "dst_var",
8932                    Self::VT_DST_VAR,
8933                    false,
8934                )?
8935                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
8936                    "graph_ref",
8937                    Self::VT_GRAPH_REF,
8938                    false,
8939                )?
8940                .finish();
8941            Ok(())
8942        }
8943    }
8944    pub struct ExpandVarLenOpArgs<'a> {
8945        pub input: u32,
8946        pub src_col: u32,
8947        pub types: Option<
8948            ::flatbuffers::WIPOffset<
8949                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
8950            >,
8951        >,
8952        pub dir: ExpandDir,
8953        pub min_hops: i32,
8954        pub max_hops: i32,
8955        pub schema: Option<
8956            ::flatbuffers::WIPOffset<
8957                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
8958            >,
8959        >,
8960        pub src_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8961        pub path_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8962        pub dst_var: Option<::flatbuffers::WIPOffset<&'a str>>,
8963        pub graph_ref: Option<::flatbuffers::WIPOffset<&'a str>>,
8964    }
8965    impl<'a> Default for ExpandVarLenOpArgs<'a> {
8966        #[inline]
8967        fn default() -> Self {
8968            ExpandVarLenOpArgs {
8969                input: 0,
8970                src_col: 0,
8971                types: None,
8972                dir: ExpandDir::out,
8973                min_hops: 0,
8974                max_hops: 0,
8975                schema: None,
8976                src_var: None,
8977                path_var: None,
8978                dst_var: None,
8979                graph_ref: None,
8980            }
8981        }
8982    }
8983
8984    pub struct ExpandVarLenOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
8985        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
8986        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
8987    }
8988    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ExpandVarLenOpBuilder<'a, 'b, A> {
8989        #[inline]
8990        pub fn add_input(&mut self, input: u32) {
8991            self.fbb_
8992                .push_slot::<u32>(ExpandVarLenOp::VT_INPUT, input, 0);
8993        }
8994        #[inline]
8995        pub fn add_src_col(&mut self, src_col: u32) {
8996            self.fbb_
8997                .push_slot::<u32>(ExpandVarLenOp::VT_SRC_COL, src_col, 0);
8998        }
8999        #[inline]
9000        pub fn add_types(
9001            &mut self,
9002            types: ::flatbuffers::WIPOffset<
9003                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
9004            >,
9005        ) {
9006            self.fbb_
9007                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandVarLenOp::VT_TYPES, types);
9008        }
9009        #[inline]
9010        pub fn add_dir(&mut self, dir: ExpandDir) {
9011            self.fbb_
9012                .push_slot::<ExpandDir>(ExpandVarLenOp::VT_DIR, dir, ExpandDir::out);
9013        }
9014        #[inline]
9015        pub fn add_min_hops(&mut self, min_hops: i32) {
9016            self.fbb_
9017                .push_slot::<i32>(ExpandVarLenOp::VT_MIN_HOPS, min_hops, 0);
9018        }
9019        #[inline]
9020        pub fn add_max_hops(&mut self, max_hops: i32) {
9021            self.fbb_
9022                .push_slot::<i32>(ExpandVarLenOp::VT_MAX_HOPS, max_hops, 0);
9023        }
9024        #[inline]
9025        pub fn add_schema(
9026            &mut self,
9027            schema: ::flatbuffers::WIPOffset<
9028                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
9029            >,
9030        ) {
9031            self.fbb_
9032                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ExpandVarLenOp::VT_SCHEMA, schema);
9033        }
9034        #[inline]
9035        pub fn add_src_var(&mut self, src_var: ::flatbuffers::WIPOffset<&'b str>) {
9036            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
9037                ExpandVarLenOp::VT_SRC_VAR,
9038                src_var,
9039            );
9040        }
9041        #[inline]
9042        pub fn add_path_var(&mut self, path_var: ::flatbuffers::WIPOffset<&'b str>) {
9043            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
9044                ExpandVarLenOp::VT_PATH_VAR,
9045                path_var,
9046            );
9047        }
9048        #[inline]
9049        pub fn add_dst_var(&mut self, dst_var: ::flatbuffers::WIPOffset<&'b str>) {
9050            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
9051                ExpandVarLenOp::VT_DST_VAR,
9052                dst_var,
9053            );
9054        }
9055        #[inline]
9056        pub fn add_graph_ref(&mut self, graph_ref: ::flatbuffers::WIPOffset<&'b str>) {
9057            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
9058                ExpandVarLenOp::VT_GRAPH_REF,
9059                graph_ref,
9060            );
9061        }
9062        #[inline]
9063        pub fn new(
9064            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9065        ) -> ExpandVarLenOpBuilder<'a, 'b, A> {
9066            let start = _fbb.start_table();
9067            ExpandVarLenOpBuilder {
9068                fbb_: _fbb,
9069                start_: start,
9070            }
9071        }
9072        #[inline]
9073        pub fn finish(self) -> ::flatbuffers::WIPOffset<ExpandVarLenOp<'a>> {
9074            let o = self.fbb_.end_table(self.start_);
9075            ::flatbuffers::WIPOffset::new(o.value())
9076        }
9077    }
9078
9079    impl ::core::fmt::Debug for ExpandVarLenOp<'_> {
9080        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9081            let mut ds = f.debug_struct("ExpandVarLenOp");
9082            ds.field("input", &self.input());
9083            ds.field("src_col", &self.src_col());
9084            ds.field("types", &self.types());
9085            ds.field("dir", &self.dir());
9086            ds.field("min_hops", &self.min_hops());
9087            ds.field("max_hops", &self.max_hops());
9088            ds.field("schema", &self.schema());
9089            ds.field("src_var", &self.src_var());
9090            ds.field("path_var", &self.path_var());
9091            ds.field("dst_var", &self.dst_var());
9092            ds.field("graph_ref", &self.graph_ref());
9093            ds.finish()
9094        }
9095    }
9096    pub enum FilterOpOffset {}
9097    #[derive(Copy, Clone, PartialEq)]
9098
9099    pub struct FilterOp<'a> {
9100        pub _tab: ::flatbuffers::Table<'a>,
9101    }
9102
9103    impl<'a> ::flatbuffers::Follow<'a> for FilterOp<'a> {
9104        type Inner = FilterOp<'a>;
9105        #[inline]
9106        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9107            Self {
9108                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9109            }
9110        }
9111    }
9112
9113    impl<'a> FilterOp<'a> {
9114        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9115        pub const VT_PREDICATE: ::flatbuffers::VOffsetT = 6;
9116
9117        #[inline]
9118        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9119            FilterOp { _tab: table }
9120        }
9121        #[allow(unused_mut)]
9122        pub fn create<
9123            'bldr: 'args,
9124            'args: 'mut_bldr,
9125            'mut_bldr,
9126            A: ::flatbuffers::Allocator + 'bldr,
9127        >(
9128            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9129            args: &'args FilterOpArgs<'args>,
9130        ) -> ::flatbuffers::WIPOffset<FilterOp<'bldr>> {
9131            let mut builder = FilterOpBuilder::new(_fbb);
9132            if let Some(x) = args.predicate {
9133                builder.add_predicate(x);
9134            }
9135            builder.add_input(args.input);
9136            builder.finish()
9137        }
9138
9139        #[inline]
9140        pub fn input(&self) -> u32 {
9141            // Safety:
9142            // Created from valid Table for this object
9143            // which contains a valid value in this slot
9144            unsafe { self._tab.get::<u32>(FilterOp::VT_INPUT, Some(0)).unwrap() }
9145        }
9146        #[inline]
9147        pub fn predicate(&self) -> Option<Expr<'a>> {
9148            // Safety:
9149            // Created from valid Table for this object
9150            // which contains a valid value in this slot
9151            unsafe {
9152                self._tab
9153                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(FilterOp::VT_PREDICATE, None)
9154            }
9155        }
9156    }
9157
9158    impl ::flatbuffers::Verifiable for FilterOp<'_> {
9159        #[inline]
9160        fn run_verifier(
9161            v: &mut ::flatbuffers::Verifier,
9162            pos: usize,
9163        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
9164            v.visit_table(pos)?
9165                .visit_field::<u32>("input", Self::VT_INPUT, false)?
9166                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
9167                    "predicate",
9168                    Self::VT_PREDICATE,
9169                    false,
9170                )?
9171                .finish();
9172            Ok(())
9173        }
9174    }
9175    pub struct FilterOpArgs<'a> {
9176        pub input: u32,
9177        pub predicate: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
9178    }
9179    impl<'a> Default for FilterOpArgs<'a> {
9180        #[inline]
9181        fn default() -> Self {
9182            FilterOpArgs {
9183                input: 0,
9184                predicate: None,
9185            }
9186        }
9187    }
9188
9189    pub struct FilterOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
9190        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9191        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
9192    }
9193    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> FilterOpBuilder<'a, 'b, A> {
9194        #[inline]
9195        pub fn add_input(&mut self, input: u32) {
9196            self.fbb_.push_slot::<u32>(FilterOp::VT_INPUT, input, 0);
9197        }
9198        #[inline]
9199        pub fn add_predicate(&mut self, predicate: ::flatbuffers::WIPOffset<Expr<'b>>) {
9200            self.fbb_
9201                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
9202                    FilterOp::VT_PREDICATE,
9203                    predicate,
9204                );
9205        }
9206        #[inline]
9207        pub fn new(
9208            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9209        ) -> FilterOpBuilder<'a, 'b, A> {
9210            let start = _fbb.start_table();
9211            FilterOpBuilder {
9212                fbb_: _fbb,
9213                start_: start,
9214            }
9215        }
9216        #[inline]
9217        pub fn finish(self) -> ::flatbuffers::WIPOffset<FilterOp<'a>> {
9218            let o = self.fbb_.end_table(self.start_);
9219            ::flatbuffers::WIPOffset::new(o.value())
9220        }
9221    }
9222
9223    impl ::core::fmt::Debug for FilterOp<'_> {
9224        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9225            let mut ds = f.debug_struct("FilterOp");
9226            ds.field("input", &self.input());
9227            ds.field("predicate", &self.predicate());
9228            ds.finish()
9229        }
9230    }
9231    pub enum BlockMarkerOpOffset {}
9232    #[derive(Copy, Clone, PartialEq)]
9233
9234    pub struct BlockMarkerOp<'a> {
9235        pub _tab: ::flatbuffers::Table<'a>,
9236    }
9237
9238    impl<'a> ::flatbuffers::Follow<'a> for BlockMarkerOp<'a> {
9239        type Inner = BlockMarkerOp<'a>;
9240        #[inline]
9241        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9242            Self {
9243                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9244            }
9245        }
9246    }
9247
9248    impl<'a> BlockMarkerOp<'a> {
9249        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9250        pub const VT_BLOCK_ID: ::flatbuffers::VOffsetT = 6;
9251        pub const VT_BRANCH_ID: ::flatbuffers::VOffsetT = 8;
9252
9253        #[inline]
9254        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9255            BlockMarkerOp { _tab: table }
9256        }
9257        #[allow(unused_mut)]
9258        pub fn create<
9259            'bldr: 'args,
9260            'args: 'mut_bldr,
9261            'mut_bldr,
9262            A: ::flatbuffers::Allocator + 'bldr,
9263        >(
9264            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9265            args: &'args BlockMarkerOpArgs,
9266        ) -> ::flatbuffers::WIPOffset<BlockMarkerOp<'bldr>> {
9267            let mut builder = BlockMarkerOpBuilder::new(_fbb);
9268            builder.add_branch_id(args.branch_id);
9269            builder.add_block_id(args.block_id);
9270            builder.add_input(args.input);
9271            builder.finish()
9272        }
9273
9274        #[inline]
9275        pub fn input(&self) -> u32 {
9276            // Safety:
9277            // Created from valid Table for this object
9278            // which contains a valid value in this slot
9279            unsafe {
9280                self._tab
9281                    .get::<u32>(BlockMarkerOp::VT_INPUT, Some(0))
9282                    .unwrap()
9283            }
9284        }
9285        #[inline]
9286        pub fn block_id(&self) -> i32 {
9287            // Safety:
9288            // Created from valid Table for this object
9289            // which contains a valid value in this slot
9290            unsafe {
9291                self._tab
9292                    .get::<i32>(BlockMarkerOp::VT_BLOCK_ID, Some(0))
9293                    .unwrap()
9294            }
9295        }
9296        #[inline]
9297        pub fn branch_id(&self) -> i32 {
9298            // Safety:
9299            // Created from valid Table for this object
9300            // which contains a valid value in this slot
9301            unsafe {
9302                self._tab
9303                    .get::<i32>(BlockMarkerOp::VT_BRANCH_ID, Some(0))
9304                    .unwrap()
9305            }
9306        }
9307    }
9308
9309    impl ::flatbuffers::Verifiable for BlockMarkerOp<'_> {
9310        #[inline]
9311        fn run_verifier(
9312            v: &mut ::flatbuffers::Verifier,
9313            pos: usize,
9314        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
9315            v.visit_table(pos)?
9316                .visit_field::<u32>("input", Self::VT_INPUT, false)?
9317                .visit_field::<i32>("block_id", Self::VT_BLOCK_ID, false)?
9318                .visit_field::<i32>("branch_id", Self::VT_BRANCH_ID, false)?
9319                .finish();
9320            Ok(())
9321        }
9322    }
9323    pub struct BlockMarkerOpArgs {
9324        pub input: u32,
9325        pub block_id: i32,
9326        pub branch_id: i32,
9327    }
9328    impl<'a> Default for BlockMarkerOpArgs {
9329        #[inline]
9330        fn default() -> Self {
9331            BlockMarkerOpArgs {
9332                input: 0,
9333                block_id: 0,
9334                branch_id: 0,
9335            }
9336        }
9337    }
9338
9339    pub struct BlockMarkerOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
9340        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9341        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
9342    }
9343    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> BlockMarkerOpBuilder<'a, 'b, A> {
9344        #[inline]
9345        pub fn add_input(&mut self, input: u32) {
9346            self.fbb_
9347                .push_slot::<u32>(BlockMarkerOp::VT_INPUT, input, 0);
9348        }
9349        #[inline]
9350        pub fn add_block_id(&mut self, block_id: i32) {
9351            self.fbb_
9352                .push_slot::<i32>(BlockMarkerOp::VT_BLOCK_ID, block_id, 0);
9353        }
9354        #[inline]
9355        pub fn add_branch_id(&mut self, branch_id: i32) {
9356            self.fbb_
9357                .push_slot::<i32>(BlockMarkerOp::VT_BRANCH_ID, branch_id, 0);
9358        }
9359        #[inline]
9360        pub fn new(
9361            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9362        ) -> BlockMarkerOpBuilder<'a, 'b, A> {
9363            let start = _fbb.start_table();
9364            BlockMarkerOpBuilder {
9365                fbb_: _fbb,
9366                start_: start,
9367            }
9368        }
9369        #[inline]
9370        pub fn finish(self) -> ::flatbuffers::WIPOffset<BlockMarkerOp<'a>> {
9371            let o = self.fbb_.end_table(self.start_);
9372            ::flatbuffers::WIPOffset::new(o.value())
9373        }
9374    }
9375
9376    impl ::core::fmt::Debug for BlockMarkerOp<'_> {
9377        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9378            let mut ds = f.debug_struct("BlockMarkerOp");
9379            ds.field("input", &self.input());
9380            ds.field("block_id", &self.block_id());
9381            ds.field("branch_id", &self.branch_id());
9382            ds.finish()
9383        }
9384    }
9385    pub enum ProjectOpOffset {}
9386    #[derive(Copy, Clone, PartialEq)]
9387
9388    pub struct ProjectOp<'a> {
9389        pub _tab: ::flatbuffers::Table<'a>,
9390    }
9391
9392    impl<'a> ::flatbuffers::Follow<'a> for ProjectOp<'a> {
9393        type Inner = ProjectOp<'a>;
9394        #[inline]
9395        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9396            Self {
9397                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9398            }
9399        }
9400    }
9401
9402    impl<'a> ProjectOp<'a> {
9403        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9404        pub const VT_EXPRS: ::flatbuffers::VOffsetT = 6;
9405        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 8;
9406
9407        #[inline]
9408        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9409            ProjectOp { _tab: table }
9410        }
9411        #[allow(unused_mut)]
9412        pub fn create<
9413            'bldr: 'args,
9414            'args: 'mut_bldr,
9415            'mut_bldr,
9416            A: ::flatbuffers::Allocator + 'bldr,
9417        >(
9418            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9419            args: &'args ProjectOpArgs<'args>,
9420        ) -> ::flatbuffers::WIPOffset<ProjectOp<'bldr>> {
9421            let mut builder = ProjectOpBuilder::new(_fbb);
9422            if let Some(x) = args.schema {
9423                builder.add_schema(x);
9424            }
9425            if let Some(x) = args.exprs {
9426                builder.add_exprs(x);
9427            }
9428            builder.add_input(args.input);
9429            builder.finish()
9430        }
9431
9432        #[inline]
9433        pub fn input(&self) -> u32 {
9434            // Safety:
9435            // Created from valid Table for this object
9436            // which contains a valid value in this slot
9437            unsafe { self._tab.get::<u32>(ProjectOp::VT_INPUT, Some(0)).unwrap() }
9438        }
9439        #[inline]
9440        pub fn exprs(
9441            &self,
9442        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>> {
9443            // Safety:
9444            // Created from valid Table for this object
9445            // which contains a valid value in this slot
9446            unsafe {
9447                self._tab.get::<::flatbuffers::ForwardsUOffset<
9448                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr>>,
9449                >>(ProjectOp::VT_EXPRS, None)
9450            }
9451        }
9452        #[inline]
9453        pub fn schema(
9454            &self,
9455        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
9456            // Safety:
9457            // Created from valid Table for this object
9458            // which contains a valid value in this slot
9459            unsafe {
9460                self._tab.get::<::flatbuffers::ForwardsUOffset<
9461                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
9462                >>(ProjectOp::VT_SCHEMA, None)
9463            }
9464        }
9465    }
9466
9467    impl ::flatbuffers::Verifiable for ProjectOp<'_> {
9468        #[inline]
9469        fn run_verifier(
9470            v: &mut ::flatbuffers::Verifier,
9471            pos: usize,
9472        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
9473            v.visit_table(pos)?
9474                .visit_field::<u32>("input", Self::VT_INPUT, false)?
9475                .visit_field::<::flatbuffers::ForwardsUOffset<
9476                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<Expr>>,
9477                >>("exprs", Self::VT_EXPRS, false)?
9478                .visit_field::<::flatbuffers::ForwardsUOffset<
9479                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
9480                >>("schema", Self::VT_SCHEMA, false)?
9481                .finish();
9482            Ok(())
9483        }
9484    }
9485    pub struct ProjectOpArgs<'a> {
9486        pub input: u32,
9487        pub exprs: Option<
9488            ::flatbuffers::WIPOffset<
9489                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>,
9490            >,
9491        >,
9492        pub schema: Option<
9493            ::flatbuffers::WIPOffset<
9494                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
9495            >,
9496        >,
9497    }
9498    impl<'a> Default for ProjectOpArgs<'a> {
9499        #[inline]
9500        fn default() -> Self {
9501            ProjectOpArgs {
9502                input: 0,
9503                exprs: None,
9504                schema: None,
9505            }
9506        }
9507    }
9508
9509    pub struct ProjectOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
9510        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9511        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
9512    }
9513    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ProjectOpBuilder<'a, 'b, A> {
9514        #[inline]
9515        pub fn add_input(&mut self, input: u32) {
9516            self.fbb_.push_slot::<u32>(ProjectOp::VT_INPUT, input, 0);
9517        }
9518        #[inline]
9519        pub fn add_exprs(
9520            &mut self,
9521            exprs: ::flatbuffers::WIPOffset<
9522                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<Expr<'b>>>,
9523            >,
9524        ) {
9525            self.fbb_
9526                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ProjectOp::VT_EXPRS, exprs);
9527        }
9528        #[inline]
9529        pub fn add_schema(
9530            &mut self,
9531            schema: ::flatbuffers::WIPOffset<
9532                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
9533            >,
9534        ) {
9535            self.fbb_
9536                .push_slot_always::<::flatbuffers::WIPOffset<_>>(ProjectOp::VT_SCHEMA, schema);
9537        }
9538        #[inline]
9539        pub fn new(
9540            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9541        ) -> ProjectOpBuilder<'a, 'b, A> {
9542            let start = _fbb.start_table();
9543            ProjectOpBuilder {
9544                fbb_: _fbb,
9545                start_: start,
9546            }
9547        }
9548        #[inline]
9549        pub fn finish(self) -> ::flatbuffers::WIPOffset<ProjectOp<'a>> {
9550            let o = self.fbb_.end_table(self.start_);
9551            ::flatbuffers::WIPOffset::new(o.value())
9552        }
9553    }
9554
9555    impl ::core::fmt::Debug for ProjectOp<'_> {
9556        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9557            let mut ds = f.debug_struct("ProjectOp");
9558            ds.field("input", &self.input());
9559            ds.field("exprs", &self.exprs());
9560            ds.field("schema", &self.schema());
9561            ds.finish()
9562        }
9563    }
9564    pub enum AggregateOpOffset {}
9565    #[derive(Copy, Clone, PartialEq)]
9566
9567    pub struct AggregateOp<'a> {
9568        pub _tab: ::flatbuffers::Table<'a>,
9569    }
9570
9571    impl<'a> ::flatbuffers::Follow<'a> for AggregateOp<'a> {
9572        type Inner = AggregateOp<'a>;
9573        #[inline]
9574        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9575            Self {
9576                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9577            }
9578        }
9579    }
9580
9581    impl<'a> AggregateOp<'a> {
9582        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9583        pub const VT_KEYS: ::flatbuffers::VOffsetT = 6;
9584        pub const VT_AGGS: ::flatbuffers::VOffsetT = 8;
9585        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
9586
9587        #[inline]
9588        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9589            AggregateOp { _tab: table }
9590        }
9591        #[allow(unused_mut)]
9592        pub fn create<
9593            'bldr: 'args,
9594            'args: 'mut_bldr,
9595            'mut_bldr,
9596            A: ::flatbuffers::Allocator + 'bldr,
9597        >(
9598            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9599            args: &'args AggregateOpArgs<'args>,
9600        ) -> ::flatbuffers::WIPOffset<AggregateOp<'bldr>> {
9601            let mut builder = AggregateOpBuilder::new(_fbb);
9602            if let Some(x) = args.schema {
9603                builder.add_schema(x);
9604            }
9605            if let Some(x) = args.aggs {
9606                builder.add_aggs(x);
9607            }
9608            if let Some(x) = args.keys {
9609                builder.add_keys(x);
9610            }
9611            builder.add_input(args.input);
9612            builder.finish()
9613        }
9614
9615        #[inline]
9616        pub fn input(&self) -> u32 {
9617            // Safety:
9618            // Created from valid Table for this object
9619            // which contains a valid value in this slot
9620            unsafe {
9621                self._tab
9622                    .get::<u32>(AggregateOp::VT_INPUT, Some(0))
9623                    .unwrap()
9624            }
9625        }
9626        #[inline]
9627        pub fn keys(&self) -> Option<::flatbuffers::Vector<'a, u32>> {
9628            // Safety:
9629            // Created from valid Table for this object
9630            // which contains a valid value in this slot
9631            unsafe {
9632                self._tab
9633                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'a, u32>>>(
9634                        AggregateOp::VT_KEYS,
9635                        None,
9636                    )
9637            }
9638        }
9639        #[inline]
9640        pub fn aggs(
9641            &self,
9642        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>> {
9643            // Safety:
9644            // Created from valid Table for this object
9645            // which contains a valid value in this slot
9646            unsafe {
9647                self._tab.get::<::flatbuffers::ForwardsUOffset<
9648                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr>>,
9649                >>(AggregateOp::VT_AGGS, None)
9650            }
9651        }
9652        #[inline]
9653        pub fn schema(
9654            &self,
9655        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
9656            // Safety:
9657            // Created from valid Table for this object
9658            // which contains a valid value in this slot
9659            unsafe {
9660                self._tab.get::<::flatbuffers::ForwardsUOffset<
9661                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
9662                >>(AggregateOp::VT_SCHEMA, None)
9663            }
9664        }
9665    }
9666
9667    impl ::flatbuffers::Verifiable for AggregateOp<'_> {
9668        #[inline]
9669        fn run_verifier(
9670            v: &mut ::flatbuffers::Verifier,
9671            pos: usize,
9672        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
9673            v.visit_table(pos)?
9674                .visit_field::<u32>("input", Self::VT_INPUT, false)?
9675                .visit_field::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'_, u32>>>(
9676                    "keys",
9677                    Self::VT_KEYS,
9678                    false,
9679                )?
9680                .visit_field::<::flatbuffers::ForwardsUOffset<
9681                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<Expr>>,
9682                >>("aggs", Self::VT_AGGS, false)?
9683                .visit_field::<::flatbuffers::ForwardsUOffset<
9684                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
9685                >>("schema", Self::VT_SCHEMA, false)?
9686                .finish();
9687            Ok(())
9688        }
9689    }
9690    pub struct AggregateOpArgs<'a> {
9691        pub input: u32,
9692        pub keys: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, u32>>>,
9693        pub aggs: Option<
9694            ::flatbuffers::WIPOffset<
9695                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<Expr<'a>>>,
9696            >,
9697        >,
9698        pub schema: Option<
9699            ::flatbuffers::WIPOffset<
9700                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
9701            >,
9702        >,
9703    }
9704    impl<'a> Default for AggregateOpArgs<'a> {
9705        #[inline]
9706        fn default() -> Self {
9707            AggregateOpArgs {
9708                input: 0,
9709                keys: None,
9710                aggs: None,
9711                schema: None,
9712            }
9713        }
9714    }
9715
9716    pub struct AggregateOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
9717        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9718        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
9719    }
9720    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> AggregateOpBuilder<'a, 'b, A> {
9721        #[inline]
9722        pub fn add_input(&mut self, input: u32) {
9723            self.fbb_.push_slot::<u32>(AggregateOp::VT_INPUT, input, 0);
9724        }
9725        #[inline]
9726        pub fn add_keys(&mut self, keys: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, u32>>) {
9727            self.fbb_
9728                .push_slot_always::<::flatbuffers::WIPOffset<_>>(AggregateOp::VT_KEYS, keys);
9729        }
9730        #[inline]
9731        pub fn add_aggs(
9732            &mut self,
9733            aggs: ::flatbuffers::WIPOffset<
9734                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<Expr<'b>>>,
9735            >,
9736        ) {
9737            self.fbb_
9738                .push_slot_always::<::flatbuffers::WIPOffset<_>>(AggregateOp::VT_AGGS, aggs);
9739        }
9740        #[inline]
9741        pub fn add_schema(
9742            &mut self,
9743            schema: ::flatbuffers::WIPOffset<
9744                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
9745            >,
9746        ) {
9747            self.fbb_
9748                .push_slot_always::<::flatbuffers::WIPOffset<_>>(AggregateOp::VT_SCHEMA, schema);
9749        }
9750        #[inline]
9751        pub fn new(
9752            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9753        ) -> AggregateOpBuilder<'a, 'b, A> {
9754            let start = _fbb.start_table();
9755            AggregateOpBuilder {
9756                fbb_: _fbb,
9757                start_: start,
9758            }
9759        }
9760        #[inline]
9761        pub fn finish(self) -> ::flatbuffers::WIPOffset<AggregateOp<'a>> {
9762            let o = self.fbb_.end_table(self.start_);
9763            ::flatbuffers::WIPOffset::new(o.value())
9764        }
9765    }
9766
9767    impl ::core::fmt::Debug for AggregateOp<'_> {
9768        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9769            let mut ds = f.debug_struct("AggregateOp");
9770            ds.field("input", &self.input());
9771            ds.field("keys", &self.keys());
9772            ds.field("aggs", &self.aggs());
9773            ds.field("schema", &self.schema());
9774            ds.finish()
9775        }
9776    }
9777    pub enum SortOpOffset {}
9778    #[derive(Copy, Clone, PartialEq)]
9779
9780    pub struct SortOp<'a> {
9781        pub _tab: ::flatbuffers::Table<'a>,
9782    }
9783
9784    impl<'a> ::flatbuffers::Follow<'a> for SortOp<'a> {
9785        type Inner = SortOp<'a>;
9786        #[inline]
9787        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9788            Self {
9789                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9790            }
9791        }
9792    }
9793
9794    impl<'a> SortOp<'a> {
9795        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9796        pub const VT_KEYS: ::flatbuffers::VOffsetT = 6;
9797        pub const VT_DIRS: ::flatbuffers::VOffsetT = 8;
9798
9799        #[inline]
9800        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9801            SortOp { _tab: table }
9802        }
9803        #[allow(unused_mut)]
9804        pub fn create<
9805            'bldr: 'args,
9806            'args: 'mut_bldr,
9807            'mut_bldr,
9808            A: ::flatbuffers::Allocator + 'bldr,
9809        >(
9810            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9811            args: &'args SortOpArgs<'args>,
9812        ) -> ::flatbuffers::WIPOffset<SortOp<'bldr>> {
9813            let mut builder = SortOpBuilder::new(_fbb);
9814            if let Some(x) = args.dirs {
9815                builder.add_dirs(x);
9816            }
9817            if let Some(x) = args.keys {
9818                builder.add_keys(x);
9819            }
9820            builder.add_input(args.input);
9821            builder.finish()
9822        }
9823
9824        #[inline]
9825        pub fn input(&self) -> u32 {
9826            // Safety:
9827            // Created from valid Table for this object
9828            // which contains a valid value in this slot
9829            unsafe { self._tab.get::<u32>(SortOp::VT_INPUT, Some(0)).unwrap() }
9830        }
9831        #[inline]
9832        pub fn keys(&self) -> Option<::flatbuffers::Vector<'a, u32>> {
9833            // Safety:
9834            // Created from valid Table for this object
9835            // which contains a valid value in this slot
9836            unsafe {
9837                self._tab
9838                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'a, u32>>>(
9839                        SortOp::VT_KEYS,
9840                        None,
9841                    )
9842            }
9843        }
9844        #[inline]
9845        pub fn dirs(&self) -> Option<::flatbuffers::Vector<'a, SortDir>> {
9846            // Safety:
9847            // Created from valid Table for this object
9848            // which contains a valid value in this slot
9849            unsafe {
9850                self._tab
9851                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'a, SortDir>>>(
9852                        SortOp::VT_DIRS,
9853                        None,
9854                    )
9855            }
9856        }
9857    }
9858
9859    impl ::flatbuffers::Verifiable for SortOp<'_> {
9860        #[inline]
9861        fn run_verifier(
9862            v: &mut ::flatbuffers::Verifier,
9863            pos: usize,
9864        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
9865            v.visit_table(pos)?
9866                .visit_field::<u32>("input", Self::VT_INPUT, false)?
9867                .visit_field::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'_, u32>>>(
9868                    "keys",
9869                    Self::VT_KEYS,
9870                    false,
9871                )?
9872                .visit_field::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'_, SortDir>>>(
9873                    "dirs",
9874                    Self::VT_DIRS,
9875                    false,
9876                )?
9877                .finish();
9878            Ok(())
9879        }
9880    }
9881    pub struct SortOpArgs<'a> {
9882        pub input: u32,
9883        pub keys: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, u32>>>,
9884        pub dirs: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, SortDir>>>,
9885    }
9886    impl<'a> Default for SortOpArgs<'a> {
9887        #[inline]
9888        fn default() -> Self {
9889            SortOpArgs {
9890                input: 0,
9891                keys: None,
9892                dirs: None,
9893            }
9894        }
9895    }
9896
9897    pub struct SortOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
9898        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9899        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
9900    }
9901    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> SortOpBuilder<'a, 'b, A> {
9902        #[inline]
9903        pub fn add_input(&mut self, input: u32) {
9904            self.fbb_.push_slot::<u32>(SortOp::VT_INPUT, input, 0);
9905        }
9906        #[inline]
9907        pub fn add_keys(&mut self, keys: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, u32>>) {
9908            self.fbb_
9909                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SortOp::VT_KEYS, keys);
9910        }
9911        #[inline]
9912        pub fn add_dirs(
9913            &mut self,
9914            dirs: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, SortDir>>,
9915        ) {
9916            self.fbb_
9917                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SortOp::VT_DIRS, dirs);
9918        }
9919        #[inline]
9920        pub fn new(
9921            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
9922        ) -> SortOpBuilder<'a, 'b, A> {
9923            let start = _fbb.start_table();
9924            SortOpBuilder {
9925                fbb_: _fbb,
9926                start_: start,
9927            }
9928        }
9929        #[inline]
9930        pub fn finish(self) -> ::flatbuffers::WIPOffset<SortOp<'a>> {
9931            let o = self.fbb_.end_table(self.start_);
9932            ::flatbuffers::WIPOffset::new(o.value())
9933        }
9934    }
9935
9936    impl ::core::fmt::Debug for SortOp<'_> {
9937        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9938            let mut ds = f.debug_struct("SortOp");
9939            ds.field("input", &self.input());
9940            ds.field("keys", &self.keys());
9941            ds.field("dirs", &self.dirs());
9942            ds.finish()
9943        }
9944    }
9945    pub enum LimitOpOffset {}
9946    #[derive(Copy, Clone, PartialEq)]
9947
9948    pub struct LimitOp<'a> {
9949        pub _tab: ::flatbuffers::Table<'a>,
9950    }
9951
9952    impl<'a> ::flatbuffers::Follow<'a> for LimitOp<'a> {
9953        type Inner = LimitOp<'a>;
9954        #[inline]
9955        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9956            Self {
9957                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
9958            }
9959        }
9960    }
9961
9962    impl<'a> LimitOp<'a> {
9963        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
9964        pub const VT_COUNT: ::flatbuffers::VOffsetT = 6;
9965        pub const VT_SKIP: ::flatbuffers::VOffsetT = 8;
9966
9967        #[inline]
9968        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9969            LimitOp { _tab: table }
9970        }
9971        #[allow(unused_mut)]
9972        pub fn create<
9973            'bldr: 'args,
9974            'args: 'mut_bldr,
9975            'mut_bldr,
9976            A: ::flatbuffers::Allocator + 'bldr,
9977        >(
9978            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9979            args: &'args LimitOpArgs,
9980        ) -> ::flatbuffers::WIPOffset<LimitOp<'bldr>> {
9981            let mut builder = LimitOpBuilder::new(_fbb);
9982            builder.add_skip(args.skip);
9983            builder.add_count(args.count);
9984            builder.add_input(args.input);
9985            builder.finish()
9986        }
9987
9988        #[inline]
9989        pub fn input(&self) -> u32 {
9990            // Safety:
9991            // Created from valid Table for this object
9992            // which contains a valid value in this slot
9993            unsafe { self._tab.get::<u32>(LimitOp::VT_INPUT, Some(0)).unwrap() }
9994        }
9995        #[inline]
9996        pub fn count(&self) -> i64 {
9997            // Safety:
9998            // Created from valid Table for this object
9999            // which contains a valid value in this slot
10000            unsafe { self._tab.get::<i64>(LimitOp::VT_COUNT, Some(-1)).unwrap() }
10001        }
10002        #[inline]
10003        pub fn skip(&self) -> i64 {
10004            // Safety:
10005            // Created from valid Table for this object
10006            // which contains a valid value in this slot
10007            unsafe { self._tab.get::<i64>(LimitOp::VT_SKIP, Some(0)).unwrap() }
10008        }
10009    }
10010
10011    impl ::flatbuffers::Verifiable for LimitOp<'_> {
10012        #[inline]
10013        fn run_verifier(
10014            v: &mut ::flatbuffers::Verifier,
10015            pos: usize,
10016        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10017            v.visit_table(pos)?
10018                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10019                .visit_field::<i64>("count", Self::VT_COUNT, false)?
10020                .visit_field::<i64>("skip", Self::VT_SKIP, false)?
10021                .finish();
10022            Ok(())
10023        }
10024    }
10025    pub struct LimitOpArgs {
10026        pub input: u32,
10027        pub count: i64,
10028        pub skip: i64,
10029    }
10030    impl<'a> Default for LimitOpArgs {
10031        #[inline]
10032        fn default() -> Self {
10033            LimitOpArgs {
10034                input: 0,
10035                count: -1,
10036                skip: 0,
10037            }
10038        }
10039    }
10040
10041    pub struct LimitOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10042        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10043        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10044    }
10045    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> LimitOpBuilder<'a, 'b, A> {
10046        #[inline]
10047        pub fn add_input(&mut self, input: u32) {
10048            self.fbb_.push_slot::<u32>(LimitOp::VT_INPUT, input, 0);
10049        }
10050        #[inline]
10051        pub fn add_count(&mut self, count: i64) {
10052            self.fbb_.push_slot::<i64>(LimitOp::VT_COUNT, count, -1);
10053        }
10054        #[inline]
10055        pub fn add_skip(&mut self, skip: i64) {
10056            self.fbb_.push_slot::<i64>(LimitOp::VT_SKIP, skip, 0);
10057        }
10058        #[inline]
10059        pub fn new(
10060            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10061        ) -> LimitOpBuilder<'a, 'b, A> {
10062            let start = _fbb.start_table();
10063            LimitOpBuilder {
10064                fbb_: _fbb,
10065                start_: start,
10066            }
10067        }
10068        #[inline]
10069        pub fn finish(self) -> ::flatbuffers::WIPOffset<LimitOp<'a>> {
10070            let o = self.fbb_.end_table(self.start_);
10071            ::flatbuffers::WIPOffset::new(o.value())
10072        }
10073    }
10074
10075    impl ::core::fmt::Debug for LimitOp<'_> {
10076        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10077            let mut ds = f.debug_struct("LimitOp");
10078            ds.field("input", &self.input());
10079            ds.field("count", &self.count());
10080            ds.field("skip", &self.skip());
10081            ds.finish()
10082        }
10083    }
10084    pub enum UnwindOpOffset {}
10085    #[derive(Copy, Clone, PartialEq)]
10086
10087    pub struct UnwindOp<'a> {
10088        pub _tab: ::flatbuffers::Table<'a>,
10089    }
10090
10091    impl<'a> ::flatbuffers::Follow<'a> for UnwindOp<'a> {
10092        type Inner = UnwindOp<'a>;
10093        #[inline]
10094        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10095            Self {
10096                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10097            }
10098        }
10099    }
10100
10101    impl<'a> UnwindOp<'a> {
10102        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10103        pub const VT_LIST_EXPR: ::flatbuffers::VOffsetT = 6;
10104        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 8;
10105        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10106
10107        #[inline]
10108        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10109            UnwindOp { _tab: table }
10110        }
10111        #[allow(unused_mut)]
10112        pub fn create<
10113            'bldr: 'args,
10114            'args: 'mut_bldr,
10115            'mut_bldr,
10116            A: ::flatbuffers::Allocator + 'bldr,
10117        >(
10118            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10119            args: &'args UnwindOpArgs<'args>,
10120        ) -> ::flatbuffers::WIPOffset<UnwindOp<'bldr>> {
10121            let mut builder = UnwindOpBuilder::new(_fbb);
10122            if let Some(x) = args.schema {
10123                builder.add_schema(x);
10124            }
10125            if let Some(x) = args.out_var {
10126                builder.add_out_var(x);
10127            }
10128            if let Some(x) = args.list_expr {
10129                builder.add_list_expr(x);
10130            }
10131            builder.add_input(args.input);
10132            builder.finish()
10133        }
10134
10135        #[inline]
10136        pub fn input(&self) -> u32 {
10137            // Safety:
10138            // Created from valid Table for this object
10139            // which contains a valid value in this slot
10140            unsafe { self._tab.get::<u32>(UnwindOp::VT_INPUT, Some(0)).unwrap() }
10141        }
10142        #[inline]
10143        pub fn list_expr(&self) -> Option<Expr<'a>> {
10144            // Safety:
10145            // Created from valid Table for this object
10146            // which contains a valid value in this slot
10147            unsafe {
10148                self._tab
10149                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(UnwindOp::VT_LIST_EXPR, None)
10150            }
10151        }
10152        #[inline]
10153        pub fn out_var(&self) -> Option<&'a str> {
10154            // Safety:
10155            // Created from valid Table for this object
10156            // which contains a valid value in this slot
10157            unsafe {
10158                self._tab
10159                    .get::<::flatbuffers::ForwardsUOffset<&str>>(UnwindOp::VT_OUT_VAR, None)
10160            }
10161        }
10162        #[inline]
10163        pub fn schema(
10164            &self,
10165        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10166            // Safety:
10167            // Created from valid Table for this object
10168            // which contains a valid value in this slot
10169            unsafe {
10170                self._tab.get::<::flatbuffers::ForwardsUOffset<
10171                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10172                >>(UnwindOp::VT_SCHEMA, None)
10173            }
10174        }
10175    }
10176
10177    impl ::flatbuffers::Verifiable for UnwindOp<'_> {
10178        #[inline]
10179        fn run_verifier(
10180            v: &mut ::flatbuffers::Verifier,
10181            pos: usize,
10182        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10183            v.visit_table(pos)?
10184                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10185                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
10186                    "list_expr",
10187                    Self::VT_LIST_EXPR,
10188                    false,
10189                )?
10190                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
10191                    "out_var",
10192                    Self::VT_OUT_VAR,
10193                    false,
10194                )?
10195                .visit_field::<::flatbuffers::ForwardsUOffset<
10196                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10197                >>("schema", Self::VT_SCHEMA, false)?
10198                .finish();
10199            Ok(())
10200        }
10201    }
10202    pub struct UnwindOpArgs<'a> {
10203        pub input: u32,
10204        pub list_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
10205        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
10206        pub schema: Option<
10207            ::flatbuffers::WIPOffset<
10208                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10209            >,
10210        >,
10211    }
10212    impl<'a> Default for UnwindOpArgs<'a> {
10213        #[inline]
10214        fn default() -> Self {
10215            UnwindOpArgs {
10216                input: 0,
10217                list_expr: None,
10218                out_var: None,
10219                schema: None,
10220            }
10221        }
10222    }
10223
10224    pub struct UnwindOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10225        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10226        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10227    }
10228    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> UnwindOpBuilder<'a, 'b, A> {
10229        #[inline]
10230        pub fn add_input(&mut self, input: u32) {
10231            self.fbb_.push_slot::<u32>(UnwindOp::VT_INPUT, input, 0);
10232        }
10233        #[inline]
10234        pub fn add_list_expr(&mut self, list_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
10235            self.fbb_
10236                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
10237                    UnwindOp::VT_LIST_EXPR,
10238                    list_expr,
10239                );
10240        }
10241        #[inline]
10242        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
10243            self.fbb_
10244                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnwindOp::VT_OUT_VAR, out_var);
10245        }
10246        #[inline]
10247        pub fn add_schema(
10248            &mut self,
10249            schema: ::flatbuffers::WIPOffset<
10250                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10251            >,
10252        ) {
10253            self.fbb_
10254                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnwindOp::VT_SCHEMA, schema);
10255        }
10256        #[inline]
10257        pub fn new(
10258            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10259        ) -> UnwindOpBuilder<'a, 'b, A> {
10260            let start = _fbb.start_table();
10261            UnwindOpBuilder {
10262                fbb_: _fbb,
10263                start_: start,
10264            }
10265        }
10266        #[inline]
10267        pub fn finish(self) -> ::flatbuffers::WIPOffset<UnwindOp<'a>> {
10268            let o = self.fbb_.end_table(self.start_);
10269            ::flatbuffers::WIPOffset::new(o.value())
10270        }
10271    }
10272
10273    impl ::core::fmt::Debug for UnwindOp<'_> {
10274        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10275            let mut ds = f.debug_struct("UnwindOp");
10276            ds.field("input", &self.input());
10277            ds.field("list_expr", &self.list_expr());
10278            ds.field("out_var", &self.out_var());
10279            ds.field("schema", &self.schema());
10280            ds.finish()
10281        }
10282    }
10283    pub enum PathConstructOpOffset {}
10284    #[derive(Copy, Clone, PartialEq)]
10285
10286    pub struct PathConstructOp<'a> {
10287        pub _tab: ::flatbuffers::Table<'a>,
10288    }
10289
10290    impl<'a> ::flatbuffers::Follow<'a> for PathConstructOp<'a> {
10291        type Inner = PathConstructOp<'a>;
10292        #[inline]
10293        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10294            Self {
10295                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10296            }
10297        }
10298    }
10299
10300    impl<'a> PathConstructOp<'a> {
10301        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10302        pub const VT_REL_COLS: ::flatbuffers::VOffsetT = 6;
10303        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 8;
10304
10305        #[inline]
10306        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10307            PathConstructOp { _tab: table }
10308        }
10309        #[allow(unused_mut)]
10310        pub fn create<
10311            'bldr: 'args,
10312            'args: 'mut_bldr,
10313            'mut_bldr,
10314            A: ::flatbuffers::Allocator + 'bldr,
10315        >(
10316            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10317            args: &'args PathConstructOpArgs<'args>,
10318        ) -> ::flatbuffers::WIPOffset<PathConstructOp<'bldr>> {
10319            let mut builder = PathConstructOpBuilder::new(_fbb);
10320            if let Some(x) = args.schema {
10321                builder.add_schema(x);
10322            }
10323            if let Some(x) = args.rel_cols {
10324                builder.add_rel_cols(x);
10325            }
10326            builder.add_input(args.input);
10327            builder.finish()
10328        }
10329
10330        #[inline]
10331        pub fn input(&self) -> u32 {
10332            // Safety:
10333            // Created from valid Table for this object
10334            // which contains a valid value in this slot
10335            unsafe {
10336                self._tab
10337                    .get::<u32>(PathConstructOp::VT_INPUT, Some(0))
10338                    .unwrap()
10339            }
10340        }
10341        #[inline]
10342        pub fn rel_cols(&self) -> Option<::flatbuffers::Vector<'a, u32>> {
10343            // Safety:
10344            // Created from valid Table for this object
10345            // which contains a valid value in this slot
10346            unsafe {
10347                self._tab
10348                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'a, u32>>>(
10349                        PathConstructOp::VT_REL_COLS,
10350                        None,
10351                    )
10352            }
10353        }
10354        #[inline]
10355        pub fn schema(
10356            &self,
10357        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10358            // Safety:
10359            // Created from valid Table for this object
10360            // which contains a valid value in this slot
10361            unsafe {
10362                self._tab.get::<::flatbuffers::ForwardsUOffset<
10363                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10364                >>(PathConstructOp::VT_SCHEMA, None)
10365            }
10366        }
10367    }
10368
10369    impl ::flatbuffers::Verifiable for PathConstructOp<'_> {
10370        #[inline]
10371        fn run_verifier(
10372            v: &mut ::flatbuffers::Verifier,
10373            pos: usize,
10374        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10375            v.visit_table(pos)?
10376                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10377                .visit_field::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'_, u32>>>(
10378                    "rel_cols",
10379                    Self::VT_REL_COLS,
10380                    false,
10381                )?
10382                .visit_field::<::flatbuffers::ForwardsUOffset<
10383                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10384                >>("schema", Self::VT_SCHEMA, false)?
10385                .finish();
10386            Ok(())
10387        }
10388    }
10389    pub struct PathConstructOpArgs<'a> {
10390        pub input: u32,
10391        pub rel_cols: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, u32>>>,
10392        pub schema: Option<
10393            ::flatbuffers::WIPOffset<
10394                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10395            >,
10396        >,
10397    }
10398    impl<'a> Default for PathConstructOpArgs<'a> {
10399        #[inline]
10400        fn default() -> Self {
10401            PathConstructOpArgs {
10402                input: 0,
10403                rel_cols: None,
10404                schema: None,
10405            }
10406        }
10407    }
10408
10409    pub struct PathConstructOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10410        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10411        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10412    }
10413    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PathConstructOpBuilder<'a, 'b, A> {
10414        #[inline]
10415        pub fn add_input(&mut self, input: u32) {
10416            self.fbb_
10417                .push_slot::<u32>(PathConstructOp::VT_INPUT, input, 0);
10418        }
10419        #[inline]
10420        pub fn add_rel_cols(
10421            &mut self,
10422            rel_cols: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, u32>>,
10423        ) {
10424            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
10425                PathConstructOp::VT_REL_COLS,
10426                rel_cols,
10427            );
10428        }
10429        #[inline]
10430        pub fn add_schema(
10431            &mut self,
10432            schema: ::flatbuffers::WIPOffset<
10433                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10434            >,
10435        ) {
10436            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
10437                PathConstructOp::VT_SCHEMA,
10438                schema,
10439            );
10440        }
10441        #[inline]
10442        pub fn new(
10443            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10444        ) -> PathConstructOpBuilder<'a, 'b, A> {
10445            let start = _fbb.start_table();
10446            PathConstructOpBuilder {
10447                fbb_: _fbb,
10448                start_: start,
10449            }
10450        }
10451        #[inline]
10452        pub fn finish(self) -> ::flatbuffers::WIPOffset<PathConstructOp<'a>> {
10453            let o = self.fbb_.end_table(self.start_);
10454            ::flatbuffers::WIPOffset::new(o.value())
10455        }
10456    }
10457
10458    impl ::core::fmt::Debug for PathConstructOp<'_> {
10459        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10460            let mut ds = f.debug_struct("PathConstructOp");
10461            ds.field("input", &self.input());
10462            ds.field("rel_cols", &self.rel_cols());
10463            ds.field("schema", &self.schema());
10464            ds.finish()
10465        }
10466    }
10467    pub enum UnionOpOffset {}
10468    #[derive(Copy, Clone, PartialEq)]
10469
10470    pub struct UnionOp<'a> {
10471        pub _tab: ::flatbuffers::Table<'a>,
10472    }
10473
10474    impl<'a> ::flatbuffers::Follow<'a> for UnionOp<'a> {
10475        type Inner = UnionOp<'a>;
10476        #[inline]
10477        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10478            Self {
10479                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10480            }
10481        }
10482    }
10483
10484    impl<'a> UnionOp<'a> {
10485        pub const VT_LHS: ::flatbuffers::VOffsetT = 4;
10486        pub const VT_RHS: ::flatbuffers::VOffsetT = 6;
10487        pub const VT_ALL: ::flatbuffers::VOffsetT = 8;
10488        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10489
10490        #[inline]
10491        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10492            UnionOp { _tab: table }
10493        }
10494        #[allow(unused_mut)]
10495        pub fn create<
10496            'bldr: 'args,
10497            'args: 'mut_bldr,
10498            'mut_bldr,
10499            A: ::flatbuffers::Allocator + 'bldr,
10500        >(
10501            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10502            args: &'args UnionOpArgs<'args>,
10503        ) -> ::flatbuffers::WIPOffset<UnionOp<'bldr>> {
10504            let mut builder = UnionOpBuilder::new(_fbb);
10505            if let Some(x) = args.schema {
10506                builder.add_schema(x);
10507            }
10508            builder.add_rhs(args.rhs);
10509            builder.add_lhs(args.lhs);
10510            builder.add_all(args.all);
10511            builder.finish()
10512        }
10513
10514        #[inline]
10515        pub fn lhs(&self) -> u32 {
10516            // Safety:
10517            // Created from valid Table for this object
10518            // which contains a valid value in this slot
10519            unsafe { self._tab.get::<u32>(UnionOp::VT_LHS, Some(0)).unwrap() }
10520        }
10521        #[inline]
10522        pub fn rhs(&self) -> u32 {
10523            // Safety:
10524            // Created from valid Table for this object
10525            // which contains a valid value in this slot
10526            unsafe { self._tab.get::<u32>(UnionOp::VT_RHS, Some(0)).unwrap() }
10527        }
10528        #[inline]
10529        pub fn all(&self) -> bool {
10530            // Safety:
10531            // Created from valid Table for this object
10532            // which contains a valid value in this slot
10533            unsafe { self._tab.get::<bool>(UnionOp::VT_ALL, Some(false)).unwrap() }
10534        }
10535        #[inline]
10536        pub fn schema(
10537            &self,
10538        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10539            // Safety:
10540            // Created from valid Table for this object
10541            // which contains a valid value in this slot
10542            unsafe {
10543                self._tab.get::<::flatbuffers::ForwardsUOffset<
10544                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10545                >>(UnionOp::VT_SCHEMA, None)
10546            }
10547        }
10548    }
10549
10550    impl ::flatbuffers::Verifiable for UnionOp<'_> {
10551        #[inline]
10552        fn run_verifier(
10553            v: &mut ::flatbuffers::Verifier,
10554            pos: usize,
10555        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10556            v.visit_table(pos)?
10557                .visit_field::<u32>("lhs", Self::VT_LHS, false)?
10558                .visit_field::<u32>("rhs", Self::VT_RHS, false)?
10559                .visit_field::<bool>("all", Self::VT_ALL, false)?
10560                .visit_field::<::flatbuffers::ForwardsUOffset<
10561                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10562                >>("schema", Self::VT_SCHEMA, false)?
10563                .finish();
10564            Ok(())
10565        }
10566    }
10567    pub struct UnionOpArgs<'a> {
10568        pub lhs: u32,
10569        pub rhs: u32,
10570        pub all: bool,
10571        pub schema: Option<
10572            ::flatbuffers::WIPOffset<
10573                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10574            >,
10575        >,
10576    }
10577    impl<'a> Default for UnionOpArgs<'a> {
10578        #[inline]
10579        fn default() -> Self {
10580            UnionOpArgs {
10581                lhs: 0,
10582                rhs: 0,
10583                all: false,
10584                schema: None,
10585            }
10586        }
10587    }
10588
10589    pub struct UnionOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10590        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10591        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10592    }
10593    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> UnionOpBuilder<'a, 'b, A> {
10594        #[inline]
10595        pub fn add_lhs(&mut self, lhs: u32) {
10596            self.fbb_.push_slot::<u32>(UnionOp::VT_LHS, lhs, 0);
10597        }
10598        #[inline]
10599        pub fn add_rhs(&mut self, rhs: u32) {
10600            self.fbb_.push_slot::<u32>(UnionOp::VT_RHS, rhs, 0);
10601        }
10602        #[inline]
10603        pub fn add_all(&mut self, all: bool) {
10604            self.fbb_.push_slot::<bool>(UnionOp::VT_ALL, all, false);
10605        }
10606        #[inline]
10607        pub fn add_schema(
10608            &mut self,
10609            schema: ::flatbuffers::WIPOffset<
10610                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10611            >,
10612        ) {
10613            self.fbb_
10614                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnionOp::VT_SCHEMA, schema);
10615        }
10616        #[inline]
10617        pub fn new(
10618            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10619        ) -> UnionOpBuilder<'a, 'b, A> {
10620            let start = _fbb.start_table();
10621            UnionOpBuilder {
10622                fbb_: _fbb,
10623                start_: start,
10624            }
10625        }
10626        #[inline]
10627        pub fn finish(self) -> ::flatbuffers::WIPOffset<UnionOp<'a>> {
10628            let o = self.fbb_.end_table(self.start_);
10629            ::flatbuffers::WIPOffset::new(o.value())
10630        }
10631    }
10632
10633    impl ::core::fmt::Debug for UnionOp<'_> {
10634        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10635            let mut ds = f.debug_struct("UnionOp");
10636            ds.field("lhs", &self.lhs());
10637            ds.field("rhs", &self.rhs());
10638            ds.field("all", &self.all());
10639            ds.field("schema", &self.schema());
10640            ds.finish()
10641        }
10642    }
10643    pub enum CreateNodeOpOffset {}
10644    #[derive(Copy, Clone, PartialEq)]
10645
10646    pub struct CreateNodeOp<'a> {
10647        pub _tab: ::flatbuffers::Table<'a>,
10648    }
10649
10650    impl<'a> ::flatbuffers::Follow<'a> for CreateNodeOp<'a> {
10651        type Inner = CreateNodeOp<'a>;
10652        #[inline]
10653        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10654            Self {
10655                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10656            }
10657        }
10658    }
10659
10660    impl<'a> CreateNodeOp<'a> {
10661        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10662        pub const VT_LABELS: ::flatbuffers::VOffsetT = 6;
10663        pub const VT_PROPS: ::flatbuffers::VOffsetT = 8;
10664        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10665        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 12;
10666
10667        #[inline]
10668        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10669            CreateNodeOp { _tab: table }
10670        }
10671        #[allow(unused_mut)]
10672        pub fn create<
10673            'bldr: 'args,
10674            'args: 'mut_bldr,
10675            'mut_bldr,
10676            A: ::flatbuffers::Allocator + 'bldr,
10677        >(
10678            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10679            args: &'args CreateNodeOpArgs<'args>,
10680        ) -> ::flatbuffers::WIPOffset<CreateNodeOp<'bldr>> {
10681            let mut builder = CreateNodeOpBuilder::new(_fbb);
10682            if let Some(x) = args.out_var {
10683                builder.add_out_var(x);
10684            }
10685            if let Some(x) = args.schema {
10686                builder.add_schema(x);
10687            }
10688            if let Some(x) = args.props {
10689                builder.add_props(x);
10690            }
10691            if let Some(x) = args.labels {
10692                builder.add_labels(x);
10693            }
10694            builder.add_input(args.input);
10695            builder.finish()
10696        }
10697
10698        #[inline]
10699        pub fn input(&self) -> u32 {
10700            // Safety:
10701            // Created from valid Table for this object
10702            // which contains a valid value in this slot
10703            unsafe {
10704                self._tab
10705                    .get::<u32>(CreateNodeOp::VT_INPUT, Some(0))
10706                    .unwrap()
10707            }
10708        }
10709        #[inline]
10710        pub fn labels(
10711            &self,
10712        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
10713            // Safety:
10714            // Created from valid Table for this object
10715            // which contains a valid value in this slot
10716            unsafe {
10717                self._tab.get::<::flatbuffers::ForwardsUOffset<
10718                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
10719                >>(CreateNodeOp::VT_LABELS, None)
10720            }
10721        }
10722        #[inline]
10723        pub fn props(&self) -> Option<Expr<'a>> {
10724            // Safety:
10725            // Created from valid Table for this object
10726            // which contains a valid value in this slot
10727            unsafe {
10728                self._tab
10729                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CreateNodeOp::VT_PROPS, None)
10730            }
10731        }
10732        #[inline]
10733        pub fn schema(
10734            &self,
10735        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10736            // Safety:
10737            // Created from valid Table for this object
10738            // which contains a valid value in this slot
10739            unsafe {
10740                self._tab.get::<::flatbuffers::ForwardsUOffset<
10741                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10742                >>(CreateNodeOp::VT_SCHEMA, None)
10743            }
10744        }
10745        #[inline]
10746        pub fn out_var(&self) -> Option<&'a str> {
10747            // Safety:
10748            // Created from valid Table for this object
10749            // which contains a valid value in this slot
10750            unsafe {
10751                self._tab
10752                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateNodeOp::VT_OUT_VAR, None)
10753            }
10754        }
10755    }
10756
10757    impl ::flatbuffers::Verifiable for CreateNodeOp<'_> {
10758        #[inline]
10759        fn run_verifier(
10760            v: &mut ::flatbuffers::Verifier,
10761            pos: usize,
10762        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10763            v.visit_table(pos)?
10764                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10765                .visit_field::<::flatbuffers::ForwardsUOffset<
10766                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
10767                >>("labels", Self::VT_LABELS, false)?
10768                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
10769                    "props",
10770                    Self::VT_PROPS,
10771                    false,
10772                )?
10773                .visit_field::<::flatbuffers::ForwardsUOffset<
10774                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10775                >>("schema", Self::VT_SCHEMA, false)?
10776                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
10777                    "out_var",
10778                    Self::VT_OUT_VAR,
10779                    false,
10780                )?
10781                .finish();
10782            Ok(())
10783        }
10784    }
10785    pub struct CreateNodeOpArgs<'a> {
10786        pub input: u32,
10787        pub labels: Option<
10788            ::flatbuffers::WIPOffset<
10789                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
10790            >,
10791        >,
10792        pub props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
10793        pub schema: Option<
10794            ::flatbuffers::WIPOffset<
10795                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10796            >,
10797        >,
10798        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
10799    }
10800    impl<'a> Default for CreateNodeOpArgs<'a> {
10801        #[inline]
10802        fn default() -> Self {
10803            CreateNodeOpArgs {
10804                input: 0,
10805                labels: None,
10806                props: None,
10807                schema: None,
10808                out_var: None,
10809            }
10810        }
10811    }
10812
10813    pub struct CreateNodeOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10814        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10815        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10816    }
10817    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CreateNodeOpBuilder<'a, 'b, A> {
10818        #[inline]
10819        pub fn add_input(&mut self, input: u32) {
10820            self.fbb_.push_slot::<u32>(CreateNodeOp::VT_INPUT, input, 0);
10821        }
10822        #[inline]
10823        pub fn add_labels(
10824            &mut self,
10825            labels: ::flatbuffers::WIPOffset<
10826                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
10827            >,
10828        ) {
10829            self.fbb_
10830                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_LABELS, labels);
10831        }
10832        #[inline]
10833        pub fn add_props(&mut self, props: ::flatbuffers::WIPOffset<Expr<'b>>) {
10834            self.fbb_
10835                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CreateNodeOp::VT_PROPS, props);
10836        }
10837        #[inline]
10838        pub fn add_schema(
10839            &mut self,
10840            schema: ::flatbuffers::WIPOffset<
10841                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10842            >,
10843        ) {
10844            self.fbb_
10845                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_SCHEMA, schema);
10846        }
10847        #[inline]
10848        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
10849            self.fbb_
10850                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_OUT_VAR, out_var);
10851        }
10852        #[inline]
10853        pub fn new(
10854            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10855        ) -> CreateNodeOpBuilder<'a, 'b, A> {
10856            let start = _fbb.start_table();
10857            CreateNodeOpBuilder {
10858                fbb_: _fbb,
10859                start_: start,
10860            }
10861        }
10862        #[inline]
10863        pub fn finish(self) -> ::flatbuffers::WIPOffset<CreateNodeOp<'a>> {
10864            let o = self.fbb_.end_table(self.start_);
10865            ::flatbuffers::WIPOffset::new(o.value())
10866        }
10867    }
10868
10869    impl ::core::fmt::Debug for CreateNodeOp<'_> {
10870        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10871            let mut ds = f.debug_struct("CreateNodeOp");
10872            ds.field("input", &self.input());
10873            ds.field("labels", &self.labels());
10874            ds.field("props", &self.props());
10875            ds.field("schema", &self.schema());
10876            ds.field("out_var", &self.out_var());
10877            ds.finish()
10878        }
10879    }
10880    pub enum CreateRelOpOffset {}
10881    #[derive(Copy, Clone, PartialEq)]
10882
10883    pub struct CreateRelOp<'a> {
10884        pub _tab: ::flatbuffers::Table<'a>,
10885    }
10886
10887    impl<'a> ::flatbuffers::Follow<'a> for CreateRelOp<'a> {
10888        type Inner = CreateRelOp<'a>;
10889        #[inline]
10890        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10891            Self {
10892                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10893            }
10894        }
10895    }
10896
10897    impl<'a> CreateRelOp<'a> {
10898        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10899        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
10900        pub const VT_DST_COL: ::flatbuffers::VOffsetT = 8;
10901        pub const VT_REL_TYPE: ::flatbuffers::VOffsetT = 10;
10902        pub const VT_PROPS: ::flatbuffers::VOffsetT = 12;
10903        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 14;
10904        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 16;
10905
10906        #[inline]
10907        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10908            CreateRelOp { _tab: table }
10909        }
10910        #[allow(unused_mut)]
10911        pub fn create<
10912            'bldr: 'args,
10913            'args: 'mut_bldr,
10914            'mut_bldr,
10915            A: ::flatbuffers::Allocator + 'bldr,
10916        >(
10917            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10918            args: &'args CreateRelOpArgs<'args>,
10919        ) -> ::flatbuffers::WIPOffset<CreateRelOp<'bldr>> {
10920            let mut builder = CreateRelOpBuilder::new(_fbb);
10921            if let Some(x) = args.out_var {
10922                builder.add_out_var(x);
10923            }
10924            if let Some(x) = args.schema {
10925                builder.add_schema(x);
10926            }
10927            if let Some(x) = args.props {
10928                builder.add_props(x);
10929            }
10930            if let Some(x) = args.rel_type {
10931                builder.add_rel_type(x);
10932            }
10933            builder.add_dst_col(args.dst_col);
10934            builder.add_src_col(args.src_col);
10935            builder.add_input(args.input);
10936            builder.finish()
10937        }
10938
10939        #[inline]
10940        pub fn input(&self) -> u32 {
10941            // Safety:
10942            // Created from valid Table for this object
10943            // which contains a valid value in this slot
10944            unsafe {
10945                self._tab
10946                    .get::<u32>(CreateRelOp::VT_INPUT, Some(0))
10947                    .unwrap()
10948            }
10949        }
10950        #[inline]
10951        pub fn src_col(&self) -> i32 {
10952            // Safety:
10953            // Created from valid Table for this object
10954            // which contains a valid value in this slot
10955            unsafe {
10956                self._tab
10957                    .get::<i32>(CreateRelOp::VT_SRC_COL, Some(0))
10958                    .unwrap()
10959            }
10960        }
10961        #[inline]
10962        pub fn dst_col(&self) -> i32 {
10963            // Safety:
10964            // Created from valid Table for this object
10965            // which contains a valid value in this slot
10966            unsafe {
10967                self._tab
10968                    .get::<i32>(CreateRelOp::VT_DST_COL, Some(0))
10969                    .unwrap()
10970            }
10971        }
10972        #[inline]
10973        pub fn rel_type(&self) -> Option<&'a str> {
10974            // Safety:
10975            // Created from valid Table for this object
10976            // which contains a valid value in this slot
10977            unsafe {
10978                self._tab
10979                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateRelOp::VT_REL_TYPE, None)
10980            }
10981        }
10982        #[inline]
10983        pub fn props(&self) -> Option<Expr<'a>> {
10984            // Safety:
10985            // Created from valid Table for this object
10986            // which contains a valid value in this slot
10987            unsafe {
10988                self._tab
10989                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CreateRelOp::VT_PROPS, None)
10990            }
10991        }
10992        #[inline]
10993        pub fn schema(
10994            &self,
10995        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10996            // Safety:
10997            // Created from valid Table for this object
10998            // which contains a valid value in this slot
10999            unsafe {
11000                self._tab.get::<::flatbuffers::ForwardsUOffset<
11001                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11002                >>(CreateRelOp::VT_SCHEMA, None)
11003            }
11004        }
11005        #[inline]
11006        pub fn out_var(&self) -> Option<&'a str> {
11007            // Safety:
11008            // Created from valid Table for this object
11009            // which contains a valid value in this slot
11010            unsafe {
11011                self._tab
11012                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateRelOp::VT_OUT_VAR, None)
11013            }
11014        }
11015    }
11016
11017    impl ::flatbuffers::Verifiable for CreateRelOp<'_> {
11018        #[inline]
11019        fn run_verifier(
11020            v: &mut ::flatbuffers::Verifier,
11021            pos: usize,
11022        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11023            v.visit_table(pos)?
11024                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11025                .visit_field::<i32>("src_col", Self::VT_SRC_COL, false)?
11026                .visit_field::<i32>("dst_col", Self::VT_DST_COL, false)?
11027                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
11028                    "rel_type",
11029                    Self::VT_REL_TYPE,
11030                    false,
11031                )?
11032                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11033                    "props",
11034                    Self::VT_PROPS,
11035                    false,
11036                )?
11037                .visit_field::<::flatbuffers::ForwardsUOffset<
11038                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11039                >>("schema", Self::VT_SCHEMA, false)?
11040                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
11041                    "out_var",
11042                    Self::VT_OUT_VAR,
11043                    false,
11044                )?
11045                .finish();
11046            Ok(())
11047        }
11048    }
11049    pub struct CreateRelOpArgs<'a> {
11050        pub input: u32,
11051        pub src_col: i32,
11052        pub dst_col: i32,
11053        pub rel_type: Option<::flatbuffers::WIPOffset<&'a str>>,
11054        pub props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11055        pub schema: Option<
11056            ::flatbuffers::WIPOffset<
11057                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11058            >,
11059        >,
11060        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
11061    }
11062    impl<'a> Default for CreateRelOpArgs<'a> {
11063        #[inline]
11064        fn default() -> Self {
11065            CreateRelOpArgs {
11066                input: 0,
11067                src_col: 0,
11068                dst_col: 0,
11069                rel_type: None,
11070                props: None,
11071                schema: None,
11072                out_var: None,
11073            }
11074        }
11075    }
11076
11077    pub struct CreateRelOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11078        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11079        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11080    }
11081    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CreateRelOpBuilder<'a, 'b, A> {
11082        #[inline]
11083        pub fn add_input(&mut self, input: u32) {
11084            self.fbb_.push_slot::<u32>(CreateRelOp::VT_INPUT, input, 0);
11085        }
11086        #[inline]
11087        pub fn add_src_col(&mut self, src_col: i32) {
11088            self.fbb_
11089                .push_slot::<i32>(CreateRelOp::VT_SRC_COL, src_col, 0);
11090        }
11091        #[inline]
11092        pub fn add_dst_col(&mut self, dst_col: i32) {
11093            self.fbb_
11094                .push_slot::<i32>(CreateRelOp::VT_DST_COL, dst_col, 0);
11095        }
11096        #[inline]
11097        pub fn add_rel_type(&mut self, rel_type: ::flatbuffers::WIPOffset<&'b str>) {
11098            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
11099                CreateRelOp::VT_REL_TYPE,
11100                rel_type,
11101            );
11102        }
11103        #[inline]
11104        pub fn add_props(&mut self, props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11105            self.fbb_
11106                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CreateRelOp::VT_PROPS, props);
11107        }
11108        #[inline]
11109        pub fn add_schema(
11110            &mut self,
11111            schema: ::flatbuffers::WIPOffset<
11112                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11113            >,
11114        ) {
11115            self.fbb_
11116                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateRelOp::VT_SCHEMA, schema);
11117        }
11118        #[inline]
11119        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
11120            self.fbb_
11121                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateRelOp::VT_OUT_VAR, out_var);
11122        }
11123        #[inline]
11124        pub fn new(
11125            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11126        ) -> CreateRelOpBuilder<'a, 'b, A> {
11127            let start = _fbb.start_table();
11128            CreateRelOpBuilder {
11129                fbb_: _fbb,
11130                start_: start,
11131            }
11132        }
11133        #[inline]
11134        pub fn finish(self) -> ::flatbuffers::WIPOffset<CreateRelOp<'a>> {
11135            let o = self.fbb_.end_table(self.start_);
11136            ::flatbuffers::WIPOffset::new(o.value())
11137        }
11138    }
11139
11140    impl ::core::fmt::Debug for CreateRelOp<'_> {
11141        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11142            let mut ds = f.debug_struct("CreateRelOp");
11143            ds.field("input", &self.input());
11144            ds.field("src_col", &self.src_col());
11145            ds.field("dst_col", &self.dst_col());
11146            ds.field("rel_type", &self.rel_type());
11147            ds.field("props", &self.props());
11148            ds.field("schema", &self.schema());
11149            ds.field("out_var", &self.out_var());
11150            ds.finish()
11151        }
11152    }
11153    pub enum MergeOpOffset {}
11154    #[derive(Copy, Clone, PartialEq)]
11155
11156    pub struct MergeOp<'a> {
11157        pub _tab: ::flatbuffers::Table<'a>,
11158    }
11159
11160    impl<'a> ::flatbuffers::Follow<'a> for MergeOp<'a> {
11161        type Inner = MergeOp<'a>;
11162        #[inline]
11163        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11164            Self {
11165                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11166            }
11167        }
11168    }
11169
11170    impl<'a> MergeOp<'a> {
11171        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11172        pub const VT_PATTERN: ::flatbuffers::VOffsetT = 6;
11173        pub const VT_ON_CREATE_PROPS: ::flatbuffers::VOffsetT = 8;
11174        pub const VT_ON_MATCH_PROPS: ::flatbuffers::VOffsetT = 10;
11175        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
11176
11177        #[inline]
11178        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11179            MergeOp { _tab: table }
11180        }
11181        #[allow(unused_mut)]
11182        pub fn create<
11183            'bldr: 'args,
11184            'args: 'mut_bldr,
11185            'mut_bldr,
11186            A: ::flatbuffers::Allocator + 'bldr,
11187        >(
11188            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11189            args: &'args MergeOpArgs<'args>,
11190        ) -> ::flatbuffers::WIPOffset<MergeOp<'bldr>> {
11191            let mut builder = MergeOpBuilder::new(_fbb);
11192            if let Some(x) = args.schema {
11193                builder.add_schema(x);
11194            }
11195            if let Some(x) = args.on_match_props {
11196                builder.add_on_match_props(x);
11197            }
11198            if let Some(x) = args.on_create_props {
11199                builder.add_on_create_props(x);
11200            }
11201            if let Some(x) = args.pattern {
11202                builder.add_pattern(x);
11203            }
11204            builder.add_input(args.input);
11205            builder.finish()
11206        }
11207
11208        #[inline]
11209        pub fn input(&self) -> u32 {
11210            // Safety:
11211            // Created from valid Table for this object
11212            // which contains a valid value in this slot
11213            unsafe { self._tab.get::<u32>(MergeOp::VT_INPUT, Some(0)).unwrap() }
11214        }
11215        #[inline]
11216        pub fn pattern(&self) -> Option<Expr<'a>> {
11217            // Safety:
11218            // Created from valid Table for this object
11219            // which contains a valid value in this slot
11220            unsafe {
11221                self._tab
11222                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_PATTERN, None)
11223            }
11224        }
11225        #[inline]
11226        pub fn on_create_props(&self) -> Option<Expr<'a>> {
11227            // Safety:
11228            // Created from valid Table for this object
11229            // which contains a valid value in this slot
11230            unsafe {
11231                self._tab
11232                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_ON_CREATE_PROPS, None)
11233            }
11234        }
11235        #[inline]
11236        pub fn on_match_props(&self) -> Option<Expr<'a>> {
11237            // Safety:
11238            // Created from valid Table for this object
11239            // which contains a valid value in this slot
11240            unsafe {
11241                self._tab
11242                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_ON_MATCH_PROPS, None)
11243            }
11244        }
11245        #[inline]
11246        pub fn schema(
11247            &self,
11248        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11249            // Safety:
11250            // Created from valid Table for this object
11251            // which contains a valid value in this slot
11252            unsafe {
11253                self._tab.get::<::flatbuffers::ForwardsUOffset<
11254                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11255                >>(MergeOp::VT_SCHEMA, None)
11256            }
11257        }
11258    }
11259
11260    impl ::flatbuffers::Verifiable for MergeOp<'_> {
11261        #[inline]
11262        fn run_verifier(
11263            v: &mut ::flatbuffers::Verifier,
11264            pos: usize,
11265        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11266            v.visit_table(pos)?
11267                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11268                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11269                    "pattern",
11270                    Self::VT_PATTERN,
11271                    false,
11272                )?
11273                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11274                    "on_create_props",
11275                    Self::VT_ON_CREATE_PROPS,
11276                    false,
11277                )?
11278                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11279                    "on_match_props",
11280                    Self::VT_ON_MATCH_PROPS,
11281                    false,
11282                )?
11283                .visit_field::<::flatbuffers::ForwardsUOffset<
11284                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11285                >>("schema", Self::VT_SCHEMA, false)?
11286                .finish();
11287            Ok(())
11288        }
11289    }
11290    pub struct MergeOpArgs<'a> {
11291        pub input: u32,
11292        pub pattern: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11293        pub on_create_props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11294        pub on_match_props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11295        pub schema: Option<
11296            ::flatbuffers::WIPOffset<
11297                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11298            >,
11299        >,
11300    }
11301    impl<'a> Default for MergeOpArgs<'a> {
11302        #[inline]
11303        fn default() -> Self {
11304            MergeOpArgs {
11305                input: 0,
11306                pattern: None,
11307                on_create_props: None,
11308                on_match_props: None,
11309                schema: None,
11310            }
11311        }
11312    }
11313
11314    pub struct MergeOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11315        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11316        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11317    }
11318    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> MergeOpBuilder<'a, 'b, A> {
11319        #[inline]
11320        pub fn add_input(&mut self, input: u32) {
11321            self.fbb_.push_slot::<u32>(MergeOp::VT_INPUT, input, 0);
11322        }
11323        #[inline]
11324        pub fn add_pattern(&mut self, pattern: ::flatbuffers::WIPOffset<Expr<'b>>) {
11325            self.fbb_
11326                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(MergeOp::VT_PATTERN, pattern);
11327        }
11328        #[inline]
11329        pub fn add_on_create_props(&mut self, on_create_props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11330            self.fbb_
11331                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11332                    MergeOp::VT_ON_CREATE_PROPS,
11333                    on_create_props,
11334                );
11335        }
11336        #[inline]
11337        pub fn add_on_match_props(&mut self, on_match_props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11338            self.fbb_
11339                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11340                    MergeOp::VT_ON_MATCH_PROPS,
11341                    on_match_props,
11342                );
11343        }
11344        #[inline]
11345        pub fn add_schema(
11346            &mut self,
11347            schema: ::flatbuffers::WIPOffset<
11348                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11349            >,
11350        ) {
11351            self.fbb_
11352                .push_slot_always::<::flatbuffers::WIPOffset<_>>(MergeOp::VT_SCHEMA, schema);
11353        }
11354        #[inline]
11355        pub fn new(
11356            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11357        ) -> MergeOpBuilder<'a, 'b, A> {
11358            let start = _fbb.start_table();
11359            MergeOpBuilder {
11360                fbb_: _fbb,
11361                start_: start,
11362            }
11363        }
11364        #[inline]
11365        pub fn finish(self) -> ::flatbuffers::WIPOffset<MergeOp<'a>> {
11366            let o = self.fbb_.end_table(self.start_);
11367            ::flatbuffers::WIPOffset::new(o.value())
11368        }
11369    }
11370
11371    impl ::core::fmt::Debug for MergeOp<'_> {
11372        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11373            let mut ds = f.debug_struct("MergeOp");
11374            ds.field("input", &self.input());
11375            ds.field("pattern", &self.pattern());
11376            ds.field("on_create_props", &self.on_create_props());
11377            ds.field("on_match_props", &self.on_match_props());
11378            ds.field("schema", &self.schema());
11379            ds.finish()
11380        }
11381    }
11382    pub enum DeleteOpOffset {}
11383    #[derive(Copy, Clone, PartialEq)]
11384
11385    pub struct DeleteOp<'a> {
11386        pub _tab: ::flatbuffers::Table<'a>,
11387    }
11388
11389    impl<'a> ::flatbuffers::Follow<'a> for DeleteOp<'a> {
11390        type Inner = DeleteOp<'a>;
11391        #[inline]
11392        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11393            Self {
11394                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11395            }
11396        }
11397    }
11398
11399    impl<'a> DeleteOp<'a> {
11400        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11401        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11402        pub const VT_DETACH: ::flatbuffers::VOffsetT = 8;
11403        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
11404
11405        #[inline]
11406        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11407            DeleteOp { _tab: table }
11408        }
11409        #[allow(unused_mut)]
11410        pub fn create<
11411            'bldr: 'args,
11412            'args: 'mut_bldr,
11413            'mut_bldr,
11414            A: ::flatbuffers::Allocator + 'bldr,
11415        >(
11416            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11417            args: &'args DeleteOpArgs<'args>,
11418        ) -> ::flatbuffers::WIPOffset<DeleteOp<'bldr>> {
11419            let mut builder = DeleteOpBuilder::new(_fbb);
11420            if let Some(x) = args.schema {
11421                builder.add_schema(x);
11422            }
11423            builder.add_target_col(args.target_col);
11424            builder.add_input(args.input);
11425            builder.add_detach(args.detach);
11426            builder.finish()
11427        }
11428
11429        #[inline]
11430        pub fn input(&self) -> u32 {
11431            // Safety:
11432            // Created from valid Table for this object
11433            // which contains a valid value in this slot
11434            unsafe { self._tab.get::<u32>(DeleteOp::VT_INPUT, Some(0)).unwrap() }
11435        }
11436        #[inline]
11437        pub fn target_col(&self) -> i32 {
11438            // Safety:
11439            // Created from valid Table for this object
11440            // which contains a valid value in this slot
11441            unsafe {
11442                self._tab
11443                    .get::<i32>(DeleteOp::VT_TARGET_COL, Some(0))
11444                    .unwrap()
11445            }
11446        }
11447        #[inline]
11448        pub fn detach(&self) -> bool {
11449            // Safety:
11450            // Created from valid Table for this object
11451            // which contains a valid value in this slot
11452            unsafe {
11453                self._tab
11454                    .get::<bool>(DeleteOp::VT_DETACH, Some(false))
11455                    .unwrap()
11456            }
11457        }
11458        #[inline]
11459        pub fn schema(
11460            &self,
11461        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11462            // Safety:
11463            // Created from valid Table for this object
11464            // which contains a valid value in this slot
11465            unsafe {
11466                self._tab.get::<::flatbuffers::ForwardsUOffset<
11467                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11468                >>(DeleteOp::VT_SCHEMA, None)
11469            }
11470        }
11471    }
11472
11473    impl ::flatbuffers::Verifiable for DeleteOp<'_> {
11474        #[inline]
11475        fn run_verifier(
11476            v: &mut ::flatbuffers::Verifier,
11477            pos: usize,
11478        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11479            v.visit_table(pos)?
11480                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11481                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11482                .visit_field::<bool>("detach", Self::VT_DETACH, false)?
11483                .visit_field::<::flatbuffers::ForwardsUOffset<
11484                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11485                >>("schema", Self::VT_SCHEMA, false)?
11486                .finish();
11487            Ok(())
11488        }
11489    }
11490    pub struct DeleteOpArgs<'a> {
11491        pub input: u32,
11492        pub target_col: i32,
11493        pub detach: bool,
11494        pub schema: Option<
11495            ::flatbuffers::WIPOffset<
11496                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11497            >,
11498        >,
11499    }
11500    impl<'a> Default for DeleteOpArgs<'a> {
11501        #[inline]
11502        fn default() -> Self {
11503            DeleteOpArgs {
11504                input: 0,
11505                target_col: 0,
11506                detach: false,
11507                schema: None,
11508            }
11509        }
11510    }
11511
11512    pub struct DeleteOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11513        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11514        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11515    }
11516    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> DeleteOpBuilder<'a, 'b, A> {
11517        #[inline]
11518        pub fn add_input(&mut self, input: u32) {
11519            self.fbb_.push_slot::<u32>(DeleteOp::VT_INPUT, input, 0);
11520        }
11521        #[inline]
11522        pub fn add_target_col(&mut self, target_col: i32) {
11523            self.fbb_
11524                .push_slot::<i32>(DeleteOp::VT_TARGET_COL, target_col, 0);
11525        }
11526        #[inline]
11527        pub fn add_detach(&mut self, detach: bool) {
11528            self.fbb_
11529                .push_slot::<bool>(DeleteOp::VT_DETACH, detach, false);
11530        }
11531        #[inline]
11532        pub fn add_schema(
11533            &mut self,
11534            schema: ::flatbuffers::WIPOffset<
11535                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11536            >,
11537        ) {
11538            self.fbb_
11539                .push_slot_always::<::flatbuffers::WIPOffset<_>>(DeleteOp::VT_SCHEMA, schema);
11540        }
11541        #[inline]
11542        pub fn new(
11543            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11544        ) -> DeleteOpBuilder<'a, 'b, A> {
11545            let start = _fbb.start_table();
11546            DeleteOpBuilder {
11547                fbb_: _fbb,
11548                start_: start,
11549            }
11550        }
11551        #[inline]
11552        pub fn finish(self) -> ::flatbuffers::WIPOffset<DeleteOp<'a>> {
11553            let o = self.fbb_.end_table(self.start_);
11554            ::flatbuffers::WIPOffset::new(o.value())
11555        }
11556    }
11557
11558    impl ::core::fmt::Debug for DeleteOp<'_> {
11559        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11560            let mut ds = f.debug_struct("DeleteOp");
11561            ds.field("input", &self.input());
11562            ds.field("target_col", &self.target_col());
11563            ds.field("detach", &self.detach());
11564            ds.field("schema", &self.schema());
11565            ds.finish()
11566        }
11567    }
11568    pub enum SetPropertyOpOffset {}
11569    #[derive(Copy, Clone, PartialEq)]
11570
11571    pub struct SetPropertyOp<'a> {
11572        pub _tab: ::flatbuffers::Table<'a>,
11573    }
11574
11575    impl<'a> ::flatbuffers::Follow<'a> for SetPropertyOp<'a> {
11576        type Inner = SetPropertyOp<'a>;
11577        #[inline]
11578        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11579            Self {
11580                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11581            }
11582        }
11583    }
11584
11585    impl<'a> SetPropertyOp<'a> {
11586        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11587        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11588        pub const VT_KEY: ::flatbuffers::VOffsetT = 8;
11589        pub const VT_VALUE_EXPR: ::flatbuffers::VOffsetT = 10;
11590        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
11591
11592        #[inline]
11593        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11594            SetPropertyOp { _tab: table }
11595        }
11596        #[allow(unused_mut)]
11597        pub fn create<
11598            'bldr: 'args,
11599            'args: 'mut_bldr,
11600            'mut_bldr,
11601            A: ::flatbuffers::Allocator + 'bldr,
11602        >(
11603            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11604            args: &'args SetPropertyOpArgs<'args>,
11605        ) -> ::flatbuffers::WIPOffset<SetPropertyOp<'bldr>> {
11606            let mut builder = SetPropertyOpBuilder::new(_fbb);
11607            if let Some(x) = args.schema {
11608                builder.add_schema(x);
11609            }
11610            if let Some(x) = args.value_expr {
11611                builder.add_value_expr(x);
11612            }
11613            if let Some(x) = args.key {
11614                builder.add_key(x);
11615            }
11616            builder.add_target_col(args.target_col);
11617            builder.add_input(args.input);
11618            builder.finish()
11619        }
11620
11621        #[inline]
11622        pub fn input(&self) -> u32 {
11623            // Safety:
11624            // Created from valid Table for this object
11625            // which contains a valid value in this slot
11626            unsafe {
11627                self._tab
11628                    .get::<u32>(SetPropertyOp::VT_INPUT, Some(0))
11629                    .unwrap()
11630            }
11631        }
11632        #[inline]
11633        pub fn target_col(&self) -> i32 {
11634            // Safety:
11635            // Created from valid Table for this object
11636            // which contains a valid value in this slot
11637            unsafe {
11638                self._tab
11639                    .get::<i32>(SetPropertyOp::VT_TARGET_COL, Some(0))
11640                    .unwrap()
11641            }
11642        }
11643        #[inline]
11644        pub fn key(&self) -> Option<&'a str> {
11645            // Safety:
11646            // Created from valid Table for this object
11647            // which contains a valid value in this slot
11648            unsafe {
11649                self._tab
11650                    .get::<::flatbuffers::ForwardsUOffset<&str>>(SetPropertyOp::VT_KEY, None)
11651            }
11652        }
11653        #[inline]
11654        pub fn value_expr(&self) -> Option<Expr<'a>> {
11655            // Safety:
11656            // Created from valid Table for this object
11657            // which contains a valid value in this slot
11658            unsafe {
11659                self._tab
11660                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(SetPropertyOp::VT_VALUE_EXPR, None)
11661            }
11662        }
11663        #[inline]
11664        pub fn schema(
11665            &self,
11666        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11667            // Safety:
11668            // Created from valid Table for this object
11669            // which contains a valid value in this slot
11670            unsafe {
11671                self._tab.get::<::flatbuffers::ForwardsUOffset<
11672                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11673                >>(SetPropertyOp::VT_SCHEMA, None)
11674            }
11675        }
11676    }
11677
11678    impl ::flatbuffers::Verifiable for SetPropertyOp<'_> {
11679        #[inline]
11680        fn run_verifier(
11681            v: &mut ::flatbuffers::Verifier,
11682            pos: usize,
11683        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11684            v.visit_table(pos)?
11685                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11686                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11687                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
11688                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11689                    "value_expr",
11690                    Self::VT_VALUE_EXPR,
11691                    false,
11692                )?
11693                .visit_field::<::flatbuffers::ForwardsUOffset<
11694                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11695                >>("schema", Self::VT_SCHEMA, false)?
11696                .finish();
11697            Ok(())
11698        }
11699    }
11700    pub struct SetPropertyOpArgs<'a> {
11701        pub input: u32,
11702        pub target_col: i32,
11703        pub key: Option<::flatbuffers::WIPOffset<&'a str>>,
11704        pub value_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11705        pub schema: Option<
11706            ::flatbuffers::WIPOffset<
11707                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11708            >,
11709        >,
11710    }
11711    impl<'a> Default for SetPropertyOpArgs<'a> {
11712        #[inline]
11713        fn default() -> Self {
11714            SetPropertyOpArgs {
11715                input: 0,
11716                target_col: 0,
11717                key: None,
11718                value_expr: None,
11719                schema: None,
11720            }
11721        }
11722    }
11723
11724    pub struct SetPropertyOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11725        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11726        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11727    }
11728    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> SetPropertyOpBuilder<'a, 'b, A> {
11729        #[inline]
11730        pub fn add_input(&mut self, input: u32) {
11731            self.fbb_
11732                .push_slot::<u32>(SetPropertyOp::VT_INPUT, input, 0);
11733        }
11734        #[inline]
11735        pub fn add_target_col(&mut self, target_col: i32) {
11736            self.fbb_
11737                .push_slot::<i32>(SetPropertyOp::VT_TARGET_COL, target_col, 0);
11738        }
11739        #[inline]
11740        pub fn add_key(&mut self, key: ::flatbuffers::WIPOffset<&'b str>) {
11741            self.fbb_
11742                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SetPropertyOp::VT_KEY, key);
11743        }
11744        #[inline]
11745        pub fn add_value_expr(&mut self, value_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
11746            self.fbb_
11747                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11748                    SetPropertyOp::VT_VALUE_EXPR,
11749                    value_expr,
11750                );
11751        }
11752        #[inline]
11753        pub fn add_schema(
11754            &mut self,
11755            schema: ::flatbuffers::WIPOffset<
11756                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11757            >,
11758        ) {
11759            self.fbb_
11760                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SetPropertyOp::VT_SCHEMA, schema);
11761        }
11762        #[inline]
11763        pub fn new(
11764            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11765        ) -> SetPropertyOpBuilder<'a, 'b, A> {
11766            let start = _fbb.start_table();
11767            SetPropertyOpBuilder {
11768                fbb_: _fbb,
11769                start_: start,
11770            }
11771        }
11772        #[inline]
11773        pub fn finish(self) -> ::flatbuffers::WIPOffset<SetPropertyOp<'a>> {
11774            let o = self.fbb_.end_table(self.start_);
11775            ::flatbuffers::WIPOffset::new(o.value())
11776        }
11777    }
11778
11779    impl ::core::fmt::Debug for SetPropertyOp<'_> {
11780        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11781            let mut ds = f.debug_struct("SetPropertyOp");
11782            ds.field("input", &self.input());
11783            ds.field("target_col", &self.target_col());
11784            ds.field("key", &self.key());
11785            ds.field("value_expr", &self.value_expr());
11786            ds.field("schema", &self.schema());
11787            ds.finish()
11788        }
11789    }
11790    pub enum RemovePropertyOpOffset {}
11791    #[derive(Copy, Clone, PartialEq)]
11792
11793    pub struct RemovePropertyOp<'a> {
11794        pub _tab: ::flatbuffers::Table<'a>,
11795    }
11796
11797    impl<'a> ::flatbuffers::Follow<'a> for RemovePropertyOp<'a> {
11798        type Inner = RemovePropertyOp<'a>;
11799        #[inline]
11800        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11801            Self {
11802                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11803            }
11804        }
11805    }
11806
11807    impl<'a> RemovePropertyOp<'a> {
11808        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11809        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11810        pub const VT_KEY: ::flatbuffers::VOffsetT = 8;
11811        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
11812
11813        #[inline]
11814        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11815            RemovePropertyOp { _tab: table }
11816        }
11817        #[allow(unused_mut)]
11818        pub fn create<
11819            'bldr: 'args,
11820            'args: 'mut_bldr,
11821            'mut_bldr,
11822            A: ::flatbuffers::Allocator + 'bldr,
11823        >(
11824            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11825            args: &'args RemovePropertyOpArgs<'args>,
11826        ) -> ::flatbuffers::WIPOffset<RemovePropertyOp<'bldr>> {
11827            let mut builder = RemovePropertyOpBuilder::new(_fbb);
11828            if let Some(x) = args.schema {
11829                builder.add_schema(x);
11830            }
11831            if let Some(x) = args.key {
11832                builder.add_key(x);
11833            }
11834            builder.add_target_col(args.target_col);
11835            builder.add_input(args.input);
11836            builder.finish()
11837        }
11838
11839        #[inline]
11840        pub fn input(&self) -> u32 {
11841            // Safety:
11842            // Created from valid Table for this object
11843            // which contains a valid value in this slot
11844            unsafe {
11845                self._tab
11846                    .get::<u32>(RemovePropertyOp::VT_INPUT, Some(0))
11847                    .unwrap()
11848            }
11849        }
11850        #[inline]
11851        pub fn target_col(&self) -> i32 {
11852            // Safety:
11853            // Created from valid Table for this object
11854            // which contains a valid value in this slot
11855            unsafe {
11856                self._tab
11857                    .get::<i32>(RemovePropertyOp::VT_TARGET_COL, Some(0))
11858                    .unwrap()
11859            }
11860        }
11861        #[inline]
11862        pub fn key(&self) -> Option<&'a str> {
11863            // Safety:
11864            // Created from valid Table for this object
11865            // which contains a valid value in this slot
11866            unsafe {
11867                self._tab
11868                    .get::<::flatbuffers::ForwardsUOffset<&str>>(RemovePropertyOp::VT_KEY, None)
11869            }
11870        }
11871        #[inline]
11872        pub fn schema(
11873            &self,
11874        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11875            // Safety:
11876            // Created from valid Table for this object
11877            // which contains a valid value in this slot
11878            unsafe {
11879                self._tab.get::<::flatbuffers::ForwardsUOffset<
11880                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11881                >>(RemovePropertyOp::VT_SCHEMA, None)
11882            }
11883        }
11884    }
11885
11886    impl ::flatbuffers::Verifiable for RemovePropertyOp<'_> {
11887        #[inline]
11888        fn run_verifier(
11889            v: &mut ::flatbuffers::Verifier,
11890            pos: usize,
11891        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11892            v.visit_table(pos)?
11893                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11894                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11895                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
11896                .visit_field::<::flatbuffers::ForwardsUOffset<
11897                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11898                >>("schema", Self::VT_SCHEMA, false)?
11899                .finish();
11900            Ok(())
11901        }
11902    }
11903    pub struct RemovePropertyOpArgs<'a> {
11904        pub input: u32,
11905        pub target_col: i32,
11906        pub key: Option<::flatbuffers::WIPOffset<&'a str>>,
11907        pub schema: Option<
11908            ::flatbuffers::WIPOffset<
11909                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11910            >,
11911        >,
11912    }
11913    impl<'a> Default for RemovePropertyOpArgs<'a> {
11914        #[inline]
11915        fn default() -> Self {
11916            RemovePropertyOpArgs {
11917                input: 0,
11918                target_col: 0,
11919                key: None,
11920                schema: None,
11921            }
11922        }
11923    }
11924
11925    pub struct RemovePropertyOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11926        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11927        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11928    }
11929    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> RemovePropertyOpBuilder<'a, 'b, A> {
11930        #[inline]
11931        pub fn add_input(&mut self, input: u32) {
11932            self.fbb_
11933                .push_slot::<u32>(RemovePropertyOp::VT_INPUT, input, 0);
11934        }
11935        #[inline]
11936        pub fn add_target_col(&mut self, target_col: i32) {
11937            self.fbb_
11938                .push_slot::<i32>(RemovePropertyOp::VT_TARGET_COL, target_col, 0);
11939        }
11940        #[inline]
11941        pub fn add_key(&mut self, key: ::flatbuffers::WIPOffset<&'b str>) {
11942            self.fbb_
11943                .push_slot_always::<::flatbuffers::WIPOffset<_>>(RemovePropertyOp::VT_KEY, key);
11944        }
11945        #[inline]
11946        pub fn add_schema(
11947            &mut self,
11948            schema: ::flatbuffers::WIPOffset<
11949                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11950            >,
11951        ) {
11952            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
11953                RemovePropertyOp::VT_SCHEMA,
11954                schema,
11955            );
11956        }
11957        #[inline]
11958        pub fn new(
11959            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11960        ) -> RemovePropertyOpBuilder<'a, 'b, A> {
11961            let start = _fbb.start_table();
11962            RemovePropertyOpBuilder {
11963                fbb_: _fbb,
11964                start_: start,
11965            }
11966        }
11967        #[inline]
11968        pub fn finish(self) -> ::flatbuffers::WIPOffset<RemovePropertyOp<'a>> {
11969            let o = self.fbb_.end_table(self.start_);
11970            ::flatbuffers::WIPOffset::new(o.value())
11971        }
11972    }
11973
11974    impl ::core::fmt::Debug for RemovePropertyOp<'_> {
11975        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11976            let mut ds = f.debug_struct("RemovePropertyOp");
11977            ds.field("input", &self.input());
11978            ds.field("target_col", &self.target_col());
11979            ds.field("key", &self.key());
11980            ds.field("schema", &self.schema());
11981            ds.finish()
11982        }
11983    }
11984    pub enum VectorScanOpOffset {}
11985    #[derive(Copy, Clone, PartialEq)]
11986
11987    pub struct VectorScanOp<'a> {
11988        pub _tab: ::flatbuffers::Table<'a>,
11989    }
11990
11991    impl<'a> ::flatbuffers::Follow<'a> for VectorScanOp<'a> {
11992        type Inner = VectorScanOp<'a>;
11993        #[inline]
11994        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11995            Self {
11996                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11997            }
11998        }
11999    }
12000
12001    impl<'a> VectorScanOp<'a> {
12002        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12003        pub const VT_COLLECTION: ::flatbuffers::VOffsetT = 6;
12004        pub const VT_QUERY_VECTOR: ::flatbuffers::VOffsetT = 8;
12005        pub const VT_METRIC: ::flatbuffers::VOffsetT = 10;
12006        pub const VT_TOP_K: ::flatbuffers::VOffsetT = 12;
12007        pub const VT_APPROX_HINT: ::flatbuffers::VOffsetT = 14;
12008        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 16;
12009
12010        #[inline]
12011        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12012            VectorScanOp { _tab: table }
12013        }
12014        #[allow(unused_mut)]
12015        pub fn create<
12016            'bldr: 'args,
12017            'args: 'mut_bldr,
12018            'mut_bldr,
12019            A: ::flatbuffers::Allocator + 'bldr,
12020        >(
12021            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12022            args: &'args VectorScanOpArgs<'args>,
12023        ) -> ::flatbuffers::WIPOffset<VectorScanOp<'bldr>> {
12024            let mut builder = VectorScanOpBuilder::new(_fbb);
12025            if let Some(x) = args.schema {
12026                builder.add_schema(x);
12027            }
12028            builder.add_top_k(args.top_k);
12029            if let Some(x) = args.query_vector {
12030                builder.add_query_vector(x);
12031            }
12032            if let Some(x) = args.collection {
12033                builder.add_collection(x);
12034            }
12035            builder.add_input(args.input);
12036            builder.add_approx_hint(args.approx_hint);
12037            builder.add_metric(args.metric);
12038            builder.finish()
12039        }
12040
12041        #[inline]
12042        pub fn input(&self) -> u32 {
12043            // Safety:
12044            // Created from valid Table for this object
12045            // which contains a valid value in this slot
12046            unsafe {
12047                self._tab
12048                    .get::<u32>(VectorScanOp::VT_INPUT, Some(0))
12049                    .unwrap()
12050            }
12051        }
12052        #[inline]
12053        pub fn collection(&self) -> Option<&'a str> {
12054            // Safety:
12055            // Created from valid Table for this object
12056            // which contains a valid value in this slot
12057            unsafe {
12058                self._tab
12059                    .get::<::flatbuffers::ForwardsUOffset<&str>>(VectorScanOp::VT_COLLECTION, None)
12060            }
12061        }
12062        #[inline]
12063        pub fn query_vector(&self) -> Option<Expr<'a>> {
12064            // Safety:
12065            // Created from valid Table for this object
12066            // which contains a valid value in this slot
12067            unsafe {
12068                self._tab.get::<::flatbuffers::ForwardsUOffset<Expr>>(
12069                    VectorScanOp::VT_QUERY_VECTOR,
12070                    None,
12071                )
12072            }
12073        }
12074        #[inline]
12075        pub fn metric(&self) -> VectorMetric {
12076            // Safety:
12077            // Created from valid Table for this object
12078            // which contains a valid value in this slot
12079            unsafe {
12080                self._tab
12081                    .get::<VectorMetric>(VectorScanOp::VT_METRIC, Some(VectorMetric::cosine))
12082                    .unwrap()
12083            }
12084        }
12085        #[inline]
12086        pub fn top_k(&self) -> u32 {
12087            // Safety:
12088            // Created from valid Table for this object
12089            // which contains a valid value in this slot
12090            unsafe {
12091                self._tab
12092                    .get::<u32>(VectorScanOp::VT_TOP_K, Some(0))
12093                    .unwrap()
12094            }
12095        }
12096        #[inline]
12097        pub fn approx_hint(&self) -> bool {
12098            // Safety:
12099            // Created from valid Table for this object
12100            // which contains a valid value in this slot
12101            unsafe {
12102                self._tab
12103                    .get::<bool>(VectorScanOp::VT_APPROX_HINT, Some(true))
12104                    .unwrap()
12105            }
12106        }
12107        #[inline]
12108        pub fn schema(
12109            &self,
12110        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
12111            // Safety:
12112            // Created from valid Table for this object
12113            // which contains a valid value in this slot
12114            unsafe {
12115                self._tab.get::<::flatbuffers::ForwardsUOffset<
12116                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
12117                >>(VectorScanOp::VT_SCHEMA, None)
12118            }
12119        }
12120    }
12121
12122    impl ::flatbuffers::Verifiable for VectorScanOp<'_> {
12123        #[inline]
12124        fn run_verifier(
12125            v: &mut ::flatbuffers::Verifier,
12126            pos: usize,
12127        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12128            v.visit_table(pos)?
12129                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12130                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
12131                    "collection",
12132                    Self::VT_COLLECTION,
12133                    false,
12134                )?
12135                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
12136                    "query_vector",
12137                    Self::VT_QUERY_VECTOR,
12138                    false,
12139                )?
12140                .visit_field::<VectorMetric>("metric", Self::VT_METRIC, false)?
12141                .visit_field::<u32>("top_k", Self::VT_TOP_K, false)?
12142                .visit_field::<bool>("approx_hint", Self::VT_APPROX_HINT, false)?
12143                .visit_field::<::flatbuffers::ForwardsUOffset<
12144                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
12145                >>("schema", Self::VT_SCHEMA, false)?
12146                .finish();
12147            Ok(())
12148        }
12149    }
12150    pub struct VectorScanOpArgs<'a> {
12151        pub input: u32,
12152        pub collection: Option<::flatbuffers::WIPOffset<&'a str>>,
12153        pub query_vector: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
12154        pub metric: VectorMetric,
12155        pub top_k: u32,
12156        pub approx_hint: bool,
12157        pub schema: Option<
12158            ::flatbuffers::WIPOffset<
12159                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
12160            >,
12161        >,
12162    }
12163    impl<'a> Default for VectorScanOpArgs<'a> {
12164        #[inline]
12165        fn default() -> Self {
12166            VectorScanOpArgs {
12167                input: 0,
12168                collection: None,
12169                query_vector: None,
12170                metric: VectorMetric::cosine,
12171                top_k: 0,
12172                approx_hint: true,
12173                schema: None,
12174            }
12175        }
12176    }
12177
12178    pub struct VectorScanOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12179        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12180        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12181    }
12182    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> VectorScanOpBuilder<'a, 'b, A> {
12183        #[inline]
12184        pub fn add_input(&mut self, input: u32) {
12185            self.fbb_.push_slot::<u32>(VectorScanOp::VT_INPUT, input, 0);
12186        }
12187        #[inline]
12188        pub fn add_collection(&mut self, collection: ::flatbuffers::WIPOffset<&'b str>) {
12189            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
12190                VectorScanOp::VT_COLLECTION,
12191                collection,
12192            );
12193        }
12194        #[inline]
12195        pub fn add_query_vector(&mut self, query_vector: ::flatbuffers::WIPOffset<Expr<'b>>) {
12196            self.fbb_
12197                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
12198                    VectorScanOp::VT_QUERY_VECTOR,
12199                    query_vector,
12200                );
12201        }
12202        #[inline]
12203        pub fn add_metric(&mut self, metric: VectorMetric) {
12204            self.fbb_.push_slot::<VectorMetric>(
12205                VectorScanOp::VT_METRIC,
12206                metric,
12207                VectorMetric::cosine,
12208            );
12209        }
12210        #[inline]
12211        pub fn add_top_k(&mut self, top_k: u32) {
12212            self.fbb_.push_slot::<u32>(VectorScanOp::VT_TOP_K, top_k, 0);
12213        }
12214        #[inline]
12215        pub fn add_approx_hint(&mut self, approx_hint: bool) {
12216            self.fbb_
12217                .push_slot::<bool>(VectorScanOp::VT_APPROX_HINT, approx_hint, true);
12218        }
12219        #[inline]
12220        pub fn add_schema(
12221            &mut self,
12222            schema: ::flatbuffers::WIPOffset<
12223                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
12224            >,
12225        ) {
12226            self.fbb_
12227                .push_slot_always::<::flatbuffers::WIPOffset<_>>(VectorScanOp::VT_SCHEMA, schema);
12228        }
12229        #[inline]
12230        pub fn new(
12231            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12232        ) -> VectorScanOpBuilder<'a, 'b, A> {
12233            let start = _fbb.start_table();
12234            VectorScanOpBuilder {
12235                fbb_: _fbb,
12236                start_: start,
12237            }
12238        }
12239        #[inline]
12240        pub fn finish(self) -> ::flatbuffers::WIPOffset<VectorScanOp<'a>> {
12241            let o = self.fbb_.end_table(self.start_);
12242            ::flatbuffers::WIPOffset::new(o.value())
12243        }
12244    }
12245
12246    impl ::core::fmt::Debug for VectorScanOp<'_> {
12247        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12248            let mut ds = f.debug_struct("VectorScanOp");
12249            ds.field("input", &self.input());
12250            ds.field("collection", &self.collection());
12251            ds.field("query_vector", &self.query_vector());
12252            ds.field("metric", &self.metric());
12253            ds.field("top_k", &self.top_k());
12254            ds.field("approx_hint", &self.approx_hint());
12255            ds.field("schema", &self.schema());
12256            ds.finish()
12257        }
12258    }
12259    pub enum RerankOpOffset {}
12260    #[derive(Copy, Clone, PartialEq)]
12261
12262    pub struct RerankOp<'a> {
12263        pub _tab: ::flatbuffers::Table<'a>,
12264    }
12265
12266    impl<'a> ::flatbuffers::Follow<'a> for RerankOp<'a> {
12267        type Inner = RerankOp<'a>;
12268        #[inline]
12269        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12270            Self {
12271                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12272            }
12273        }
12274    }
12275
12276    impl<'a> RerankOp<'a> {
12277        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12278        pub const VT_SCORE_EXPR: ::flatbuffers::VOffsetT = 6;
12279        pub const VT_TOP_K: ::flatbuffers::VOffsetT = 8;
12280        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
12281
12282        #[inline]
12283        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12284            RerankOp { _tab: table }
12285        }
12286        #[allow(unused_mut)]
12287        pub fn create<
12288            'bldr: 'args,
12289            'args: 'mut_bldr,
12290            'mut_bldr,
12291            A: ::flatbuffers::Allocator + 'bldr,
12292        >(
12293            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12294            args: &'args RerankOpArgs<'args>,
12295        ) -> ::flatbuffers::WIPOffset<RerankOp<'bldr>> {
12296            let mut builder = RerankOpBuilder::new(_fbb);
12297            if let Some(x) = args.schema {
12298                builder.add_schema(x);
12299            }
12300            builder.add_top_k(args.top_k);
12301            if let Some(x) = args.score_expr {
12302                builder.add_score_expr(x);
12303            }
12304            builder.add_input(args.input);
12305            builder.finish()
12306        }
12307
12308        #[inline]
12309        pub fn input(&self) -> u32 {
12310            // Safety:
12311            // Created from valid Table for this object
12312            // which contains a valid value in this slot
12313            unsafe { self._tab.get::<u32>(RerankOp::VT_INPUT, Some(0)).unwrap() }
12314        }
12315        #[inline]
12316        pub fn score_expr(&self) -> Option<Expr<'a>> {
12317            // Safety:
12318            // Created from valid Table for this object
12319            // which contains a valid value in this slot
12320            unsafe {
12321                self._tab
12322                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(RerankOp::VT_SCORE_EXPR, None)
12323            }
12324        }
12325        #[inline]
12326        pub fn top_k(&self) -> u32 {
12327            // Safety:
12328            // Created from valid Table for this object
12329            // which contains a valid value in this slot
12330            unsafe { self._tab.get::<u32>(RerankOp::VT_TOP_K, Some(0)).unwrap() }
12331        }
12332        #[inline]
12333        pub fn schema(
12334            &self,
12335        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
12336            // Safety:
12337            // Created from valid Table for this object
12338            // which contains a valid value in this slot
12339            unsafe {
12340                self._tab.get::<::flatbuffers::ForwardsUOffset<
12341                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
12342                >>(RerankOp::VT_SCHEMA, None)
12343            }
12344        }
12345    }
12346
12347    impl ::flatbuffers::Verifiable for RerankOp<'_> {
12348        #[inline]
12349        fn run_verifier(
12350            v: &mut ::flatbuffers::Verifier,
12351            pos: usize,
12352        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12353            v.visit_table(pos)?
12354                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12355                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
12356                    "score_expr",
12357                    Self::VT_SCORE_EXPR,
12358                    false,
12359                )?
12360                .visit_field::<u32>("top_k", Self::VT_TOP_K, false)?
12361                .visit_field::<::flatbuffers::ForwardsUOffset<
12362                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
12363                >>("schema", Self::VT_SCHEMA, false)?
12364                .finish();
12365            Ok(())
12366        }
12367    }
12368    pub struct RerankOpArgs<'a> {
12369        pub input: u32,
12370        pub score_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
12371        pub top_k: u32,
12372        pub schema: Option<
12373            ::flatbuffers::WIPOffset<
12374                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
12375            >,
12376        >,
12377    }
12378    impl<'a> Default for RerankOpArgs<'a> {
12379        #[inline]
12380        fn default() -> Self {
12381            RerankOpArgs {
12382                input: 0,
12383                score_expr: None,
12384                top_k: 0,
12385                schema: None,
12386            }
12387        }
12388    }
12389
12390    pub struct RerankOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12391        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12392        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12393    }
12394    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> RerankOpBuilder<'a, 'b, A> {
12395        #[inline]
12396        pub fn add_input(&mut self, input: u32) {
12397            self.fbb_.push_slot::<u32>(RerankOp::VT_INPUT, input, 0);
12398        }
12399        #[inline]
12400        pub fn add_score_expr(&mut self, score_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
12401            self.fbb_
12402                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
12403                    RerankOp::VT_SCORE_EXPR,
12404                    score_expr,
12405                );
12406        }
12407        #[inline]
12408        pub fn add_top_k(&mut self, top_k: u32) {
12409            self.fbb_.push_slot::<u32>(RerankOp::VT_TOP_K, top_k, 0);
12410        }
12411        #[inline]
12412        pub fn add_schema(
12413            &mut self,
12414            schema: ::flatbuffers::WIPOffset<
12415                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
12416            >,
12417        ) {
12418            self.fbb_
12419                .push_slot_always::<::flatbuffers::WIPOffset<_>>(RerankOp::VT_SCHEMA, schema);
12420        }
12421        #[inline]
12422        pub fn new(
12423            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12424        ) -> RerankOpBuilder<'a, 'b, A> {
12425            let start = _fbb.start_table();
12426            RerankOpBuilder {
12427                fbb_: _fbb,
12428                start_: start,
12429            }
12430        }
12431        #[inline]
12432        pub fn finish(self) -> ::flatbuffers::WIPOffset<RerankOp<'a>> {
12433            let o = self.fbb_.end_table(self.start_);
12434            ::flatbuffers::WIPOffset::new(o.value())
12435        }
12436    }
12437
12438    impl ::core::fmt::Debug for RerankOp<'_> {
12439        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12440            let mut ds = f.debug_struct("RerankOp");
12441            ds.field("input", &self.input());
12442            ds.field("score_expr", &self.score_expr());
12443            ds.field("top_k", &self.top_k());
12444            ds.field("schema", &self.schema());
12445            ds.finish()
12446        }
12447    }
12448    pub enum ReturnOpOffset {}
12449    #[derive(Copy, Clone, PartialEq)]
12450
12451    pub struct ReturnOp<'a> {
12452        pub _tab: ::flatbuffers::Table<'a>,
12453    }
12454
12455    impl<'a> ::flatbuffers::Follow<'a> for ReturnOp<'a> {
12456        type Inner = ReturnOp<'a>;
12457        #[inline]
12458        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12459            Self {
12460                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12461            }
12462        }
12463    }
12464
12465    impl<'a> ReturnOp<'a> {
12466        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12467
12468        #[inline]
12469        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12470            ReturnOp { _tab: table }
12471        }
12472        #[allow(unused_mut)]
12473        pub fn create<
12474            'bldr: 'args,
12475            'args: 'mut_bldr,
12476            'mut_bldr,
12477            A: ::flatbuffers::Allocator + 'bldr,
12478        >(
12479            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12480            args: &'args ReturnOpArgs,
12481        ) -> ::flatbuffers::WIPOffset<ReturnOp<'bldr>> {
12482            let mut builder = ReturnOpBuilder::new(_fbb);
12483            builder.add_input(args.input);
12484            builder.finish()
12485        }
12486
12487        #[inline]
12488        pub fn input(&self) -> u32 {
12489            // Safety:
12490            // Created from valid Table for this object
12491            // which contains a valid value in this slot
12492            unsafe { self._tab.get::<u32>(ReturnOp::VT_INPUT, Some(0)).unwrap() }
12493        }
12494    }
12495
12496    impl ::flatbuffers::Verifiable for ReturnOp<'_> {
12497        #[inline]
12498        fn run_verifier(
12499            v: &mut ::flatbuffers::Verifier,
12500            pos: usize,
12501        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12502            v.visit_table(pos)?
12503                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12504                .finish();
12505            Ok(())
12506        }
12507    }
12508    pub struct ReturnOpArgs {
12509        pub input: u32,
12510    }
12511    impl<'a> Default for ReturnOpArgs {
12512        #[inline]
12513        fn default() -> Self {
12514            ReturnOpArgs { input: 0 }
12515        }
12516    }
12517
12518    pub struct ReturnOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12519        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12520        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12521    }
12522    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ReturnOpBuilder<'a, 'b, A> {
12523        #[inline]
12524        pub fn add_input(&mut self, input: u32) {
12525            self.fbb_.push_slot::<u32>(ReturnOp::VT_INPUT, input, 0);
12526        }
12527        #[inline]
12528        pub fn new(
12529            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12530        ) -> ReturnOpBuilder<'a, 'b, A> {
12531            let start = _fbb.start_table();
12532            ReturnOpBuilder {
12533                fbb_: _fbb,
12534                start_: start,
12535            }
12536        }
12537        #[inline]
12538        pub fn finish(self) -> ::flatbuffers::WIPOffset<ReturnOp<'a>> {
12539            let o = self.fbb_.end_table(self.start_);
12540            ::flatbuffers::WIPOffset::new(o.value())
12541        }
12542    }
12543
12544    impl ::core::fmt::Debug for ReturnOp<'_> {
12545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12546            let mut ds = f.debug_struct("ReturnOp");
12547            ds.field("input", &self.input());
12548            ds.finish()
12549        }
12550    }
12551    pub enum ConstRowOpOffset {}
12552    #[derive(Copy, Clone, PartialEq)]
12553
12554    /// Zero-input source op that emits exactly one empty row.
12555    /// Used as the seed row for standalone CREATE/INSERT without a preceding MATCH.
12556    pub struct ConstRowOp<'a> {
12557        pub _tab: ::flatbuffers::Table<'a>,
12558    }
12559
12560    impl<'a> ::flatbuffers::Follow<'a> for ConstRowOp<'a> {
12561        type Inner = ConstRowOp<'a>;
12562        #[inline]
12563        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12564            Self {
12565                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12566            }
12567        }
12568    }
12569
12570    impl<'a> ConstRowOp<'a> {
12571        #[inline]
12572        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12573            ConstRowOp { _tab: table }
12574        }
12575        #[allow(unused_mut)]
12576        pub fn create<
12577            'bldr: 'args,
12578            'args: 'mut_bldr,
12579            'mut_bldr,
12580            A: ::flatbuffers::Allocator + 'bldr,
12581        >(
12582            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12583            _args: &'args ConstRowOpArgs,
12584        ) -> ::flatbuffers::WIPOffset<ConstRowOp<'bldr>> {
12585            let mut builder = ConstRowOpBuilder::new(_fbb);
12586            builder.finish()
12587        }
12588    }
12589
12590    impl ::flatbuffers::Verifiable for ConstRowOp<'_> {
12591        #[inline]
12592        fn run_verifier(
12593            v: &mut ::flatbuffers::Verifier,
12594            pos: usize,
12595        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12596            v.visit_table(pos)?.finish();
12597            Ok(())
12598        }
12599    }
12600    pub struct ConstRowOpArgs {}
12601    impl<'a> Default for ConstRowOpArgs {
12602        #[inline]
12603        fn default() -> Self {
12604            ConstRowOpArgs {}
12605        }
12606    }
12607
12608    pub struct ConstRowOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12609        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12610        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12611    }
12612    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ConstRowOpBuilder<'a, 'b, A> {
12613        #[inline]
12614        pub fn new(
12615            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12616        ) -> ConstRowOpBuilder<'a, 'b, A> {
12617            let start = _fbb.start_table();
12618            ConstRowOpBuilder {
12619                fbb_: _fbb,
12620                start_: start,
12621            }
12622        }
12623        #[inline]
12624        pub fn finish(self) -> ::flatbuffers::WIPOffset<ConstRowOp<'a>> {
12625            let o = self.fbb_.end_table(self.start_);
12626            ::flatbuffers::WIPOffset::new(o.value())
12627        }
12628    }
12629
12630    impl ::core::fmt::Debug for ConstRowOp<'_> {
12631        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12632            let mut ds = f.debug_struct("ConstRowOp");
12633            ds.finish()
12634        }
12635    }
12636    pub enum PlanOpOffset {}
12637    #[derive(Copy, Clone, PartialEq)]
12638
12639    pub struct PlanOp<'a> {
12640        pub _tab: ::flatbuffers::Table<'a>,
12641    }
12642
12643    impl<'a> ::flatbuffers::Follow<'a> for PlanOp<'a> {
12644        type Inner = PlanOp<'a>;
12645        #[inline]
12646        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12647            Self {
12648                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12649            }
12650        }
12651    }
12652
12653    impl<'a> PlanOp<'a> {
12654        pub const VT_NODE_TYPE: ::flatbuffers::VOffsetT = 4;
12655        pub const VT_NODE: ::flatbuffers::VOffsetT = 6;
12656
12657        #[inline]
12658        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12659            PlanOp { _tab: table }
12660        }
12661        #[allow(unused_mut)]
12662        pub fn create<
12663            'bldr: 'args,
12664            'args: 'mut_bldr,
12665            'mut_bldr,
12666            A: ::flatbuffers::Allocator + 'bldr,
12667        >(
12668            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12669            args: &'args PlanOpArgs,
12670        ) -> ::flatbuffers::WIPOffset<PlanOp<'bldr>> {
12671            let mut builder = PlanOpBuilder::new(_fbb);
12672            if let Some(x) = args.node {
12673                builder.add_node(x);
12674            }
12675            builder.add_node_type(args.node_type);
12676            builder.finish()
12677        }
12678
12679        #[inline]
12680        pub fn node_type(&self) -> OpNode {
12681            // Safety:
12682            // Created from valid Table for this object
12683            // which contains a valid value in this slot
12684            unsafe {
12685                self._tab
12686                    .get::<OpNode>(PlanOp::VT_NODE_TYPE, Some(OpNode::NONE))
12687                    .unwrap()
12688            }
12689        }
12690        #[inline]
12691        pub fn node(&self) -> Option<::flatbuffers::Table<'a>> {
12692            // Safety:
12693            // Created from valid Table for this object
12694            // which contains a valid value in this slot
12695            unsafe {
12696                self._tab
12697                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Table<'a>>>(
12698                        PlanOp::VT_NODE,
12699                        None,
12700                    )
12701            }
12702        }
12703        #[inline]
12704        #[allow(non_snake_case)]
12705        pub fn node_as_scan_nodes_op(&self) -> Option<ScanNodesOp<'a>> {
12706            if self.node_type() == OpNode::ScanNodesOp {
12707                self.node().map(|t| {
12708                    // Safety:
12709                    // Created from a valid Table for this object
12710                    // Which contains a valid union in this slot
12711                    unsafe { ScanNodesOp::init_from_table(t) }
12712                })
12713            } else {
12714                None
12715            }
12716        }
12717
12718        #[inline]
12719        #[allow(non_snake_case)]
12720        pub fn node_as_scan_rels_op(&self) -> Option<ScanRelsOp<'a>> {
12721            if self.node_type() == OpNode::ScanRelsOp {
12722                self.node().map(|t| {
12723                    // Safety:
12724                    // Created from a valid Table for this object
12725                    // Which contains a valid union in this slot
12726                    unsafe { ScanRelsOp::init_from_table(t) }
12727                })
12728            } else {
12729                None
12730            }
12731        }
12732
12733        #[inline]
12734        #[allow(non_snake_case)]
12735        pub fn node_as_expand_op(&self) -> Option<ExpandOp<'a>> {
12736            if self.node_type() == OpNode::ExpandOp {
12737                self.node().map(|t| {
12738                    // Safety:
12739                    // Created from a valid Table for this object
12740                    // Which contains a valid union in this slot
12741                    unsafe { ExpandOp::init_from_table(t) }
12742                })
12743            } else {
12744                None
12745            }
12746        }
12747
12748        #[inline]
12749        #[allow(non_snake_case)]
12750        pub fn node_as_optional_expand_op(&self) -> Option<OptionalExpandOp<'a>> {
12751            if self.node_type() == OpNode::OptionalExpandOp {
12752                self.node().map(|t| {
12753                    // Safety:
12754                    // Created from a valid Table for this object
12755                    // Which contains a valid union in this slot
12756                    unsafe { OptionalExpandOp::init_from_table(t) }
12757                })
12758            } else {
12759                None
12760            }
12761        }
12762
12763        #[inline]
12764        #[allow(non_snake_case)]
12765        pub fn node_as_semi_expand_op(&self) -> Option<SemiExpandOp<'a>> {
12766            if self.node_type() == OpNode::SemiExpandOp {
12767                self.node().map(|t| {
12768                    // Safety:
12769                    // Created from a valid Table for this object
12770                    // Which contains a valid union in this slot
12771                    unsafe { SemiExpandOp::init_from_table(t) }
12772                })
12773            } else {
12774                None
12775            }
12776        }
12777
12778        #[inline]
12779        #[allow(non_snake_case)]
12780        pub fn node_as_expand_var_len_op(&self) -> Option<ExpandVarLenOp<'a>> {
12781            if self.node_type() == OpNode::ExpandVarLenOp {
12782                self.node().map(|t| {
12783                    // Safety:
12784                    // Created from a valid Table for this object
12785                    // Which contains a valid union in this slot
12786                    unsafe { ExpandVarLenOp::init_from_table(t) }
12787                })
12788            } else {
12789                None
12790            }
12791        }
12792
12793        #[inline]
12794        #[allow(non_snake_case)]
12795        pub fn node_as_filter_op(&self) -> Option<FilterOp<'a>> {
12796            if self.node_type() == OpNode::FilterOp {
12797                self.node().map(|t| {
12798                    // Safety:
12799                    // Created from a valid Table for this object
12800                    // Which contains a valid union in this slot
12801                    unsafe { FilterOp::init_from_table(t) }
12802                })
12803            } else {
12804                None
12805            }
12806        }
12807
12808        #[inline]
12809        #[allow(non_snake_case)]
12810        pub fn node_as_block_marker_op(&self) -> Option<BlockMarkerOp<'a>> {
12811            if self.node_type() == OpNode::BlockMarkerOp {
12812                self.node().map(|t| {
12813                    // Safety:
12814                    // Created from a valid Table for this object
12815                    // Which contains a valid union in this slot
12816                    unsafe { BlockMarkerOp::init_from_table(t) }
12817                })
12818            } else {
12819                None
12820            }
12821        }
12822
12823        #[inline]
12824        #[allow(non_snake_case)]
12825        pub fn node_as_project_op(&self) -> Option<ProjectOp<'a>> {
12826            if self.node_type() == OpNode::ProjectOp {
12827                self.node().map(|t| {
12828                    // Safety:
12829                    // Created from a valid Table for this object
12830                    // Which contains a valid union in this slot
12831                    unsafe { ProjectOp::init_from_table(t) }
12832                })
12833            } else {
12834                None
12835            }
12836        }
12837
12838        #[inline]
12839        #[allow(non_snake_case)]
12840        pub fn node_as_aggregate_op(&self) -> Option<AggregateOp<'a>> {
12841            if self.node_type() == OpNode::AggregateOp {
12842                self.node().map(|t| {
12843                    // Safety:
12844                    // Created from a valid Table for this object
12845                    // Which contains a valid union in this slot
12846                    unsafe { AggregateOp::init_from_table(t) }
12847                })
12848            } else {
12849                None
12850            }
12851        }
12852
12853        #[inline]
12854        #[allow(non_snake_case)]
12855        pub fn node_as_sort_op(&self) -> Option<SortOp<'a>> {
12856            if self.node_type() == OpNode::SortOp {
12857                self.node().map(|t| {
12858                    // Safety:
12859                    // Created from a valid Table for this object
12860                    // Which contains a valid union in this slot
12861                    unsafe { SortOp::init_from_table(t) }
12862                })
12863            } else {
12864                None
12865            }
12866        }
12867
12868        #[inline]
12869        #[allow(non_snake_case)]
12870        pub fn node_as_limit_op(&self) -> Option<LimitOp<'a>> {
12871            if self.node_type() == OpNode::LimitOp {
12872                self.node().map(|t| {
12873                    // Safety:
12874                    // Created from a valid Table for this object
12875                    // Which contains a valid union in this slot
12876                    unsafe { LimitOp::init_from_table(t) }
12877                })
12878            } else {
12879                None
12880            }
12881        }
12882
12883        #[inline]
12884        #[allow(non_snake_case)]
12885        pub fn node_as_unwind_op(&self) -> Option<UnwindOp<'a>> {
12886            if self.node_type() == OpNode::UnwindOp {
12887                self.node().map(|t| {
12888                    // Safety:
12889                    // Created from a valid Table for this object
12890                    // Which contains a valid union in this slot
12891                    unsafe { UnwindOp::init_from_table(t) }
12892                })
12893            } else {
12894                None
12895            }
12896        }
12897
12898        #[inline]
12899        #[allow(non_snake_case)]
12900        pub fn node_as_path_construct_op(&self) -> Option<PathConstructOp<'a>> {
12901            if self.node_type() == OpNode::PathConstructOp {
12902                self.node().map(|t| {
12903                    // Safety:
12904                    // Created from a valid Table for this object
12905                    // Which contains a valid union in this slot
12906                    unsafe { PathConstructOp::init_from_table(t) }
12907                })
12908            } else {
12909                None
12910            }
12911        }
12912
12913        #[inline]
12914        #[allow(non_snake_case)]
12915        pub fn node_as_union_op(&self) -> Option<UnionOp<'a>> {
12916            if self.node_type() == OpNode::UnionOp {
12917                self.node().map(|t| {
12918                    // Safety:
12919                    // Created from a valid Table for this object
12920                    // Which contains a valid union in this slot
12921                    unsafe { UnionOp::init_from_table(t) }
12922                })
12923            } else {
12924                None
12925            }
12926        }
12927
12928        #[inline]
12929        #[allow(non_snake_case)]
12930        pub fn node_as_create_node_op(&self) -> Option<CreateNodeOp<'a>> {
12931            if self.node_type() == OpNode::CreateNodeOp {
12932                self.node().map(|t| {
12933                    // Safety:
12934                    // Created from a valid Table for this object
12935                    // Which contains a valid union in this slot
12936                    unsafe { CreateNodeOp::init_from_table(t) }
12937                })
12938            } else {
12939                None
12940            }
12941        }
12942
12943        #[inline]
12944        #[allow(non_snake_case)]
12945        pub fn node_as_create_rel_op(&self) -> Option<CreateRelOp<'a>> {
12946            if self.node_type() == OpNode::CreateRelOp {
12947                self.node().map(|t| {
12948                    // Safety:
12949                    // Created from a valid Table for this object
12950                    // Which contains a valid union in this slot
12951                    unsafe { CreateRelOp::init_from_table(t) }
12952                })
12953            } else {
12954                None
12955            }
12956        }
12957
12958        #[inline]
12959        #[allow(non_snake_case)]
12960        pub fn node_as_merge_op(&self) -> Option<MergeOp<'a>> {
12961            if self.node_type() == OpNode::MergeOp {
12962                self.node().map(|t| {
12963                    // Safety:
12964                    // Created from a valid Table for this object
12965                    // Which contains a valid union in this slot
12966                    unsafe { MergeOp::init_from_table(t) }
12967                })
12968            } else {
12969                None
12970            }
12971        }
12972
12973        #[inline]
12974        #[allow(non_snake_case)]
12975        pub fn node_as_delete_op(&self) -> Option<DeleteOp<'a>> {
12976            if self.node_type() == OpNode::DeleteOp {
12977                self.node().map(|t| {
12978                    // Safety:
12979                    // Created from a valid Table for this object
12980                    // Which contains a valid union in this slot
12981                    unsafe { DeleteOp::init_from_table(t) }
12982                })
12983            } else {
12984                None
12985            }
12986        }
12987
12988        #[inline]
12989        #[allow(non_snake_case)]
12990        pub fn node_as_set_property_op(&self) -> Option<SetPropertyOp<'a>> {
12991            if self.node_type() == OpNode::SetPropertyOp {
12992                self.node().map(|t| {
12993                    // Safety:
12994                    // Created from a valid Table for this object
12995                    // Which contains a valid union in this slot
12996                    unsafe { SetPropertyOp::init_from_table(t) }
12997                })
12998            } else {
12999                None
13000            }
13001        }
13002
13003        #[inline]
13004        #[allow(non_snake_case)]
13005        pub fn node_as_remove_property_op(&self) -> Option<RemovePropertyOp<'a>> {
13006            if self.node_type() == OpNode::RemovePropertyOp {
13007                self.node().map(|t| {
13008                    // Safety:
13009                    // Created from a valid Table for this object
13010                    // Which contains a valid union in this slot
13011                    unsafe { RemovePropertyOp::init_from_table(t) }
13012                })
13013            } else {
13014                None
13015            }
13016        }
13017
13018        #[inline]
13019        #[allow(non_snake_case)]
13020        pub fn node_as_vector_scan_op(&self) -> Option<VectorScanOp<'a>> {
13021            if self.node_type() == OpNode::VectorScanOp {
13022                self.node().map(|t| {
13023                    // Safety:
13024                    // Created from a valid Table for this object
13025                    // Which contains a valid union in this slot
13026                    unsafe { VectorScanOp::init_from_table(t) }
13027                })
13028            } else {
13029                None
13030            }
13031        }
13032
13033        #[inline]
13034        #[allow(non_snake_case)]
13035        pub fn node_as_rerank_op(&self) -> Option<RerankOp<'a>> {
13036            if self.node_type() == OpNode::RerankOp {
13037                self.node().map(|t| {
13038                    // Safety:
13039                    // Created from a valid Table for this object
13040                    // Which contains a valid union in this slot
13041                    unsafe { RerankOp::init_from_table(t) }
13042                })
13043            } else {
13044                None
13045            }
13046        }
13047
13048        #[inline]
13049        #[allow(non_snake_case)]
13050        pub fn node_as_return_op(&self) -> Option<ReturnOp<'a>> {
13051            if self.node_type() == OpNode::ReturnOp {
13052                self.node().map(|t| {
13053                    // Safety:
13054                    // Created from a valid Table for this object
13055                    // Which contains a valid union in this slot
13056                    unsafe { ReturnOp::init_from_table(t) }
13057                })
13058            } else {
13059                None
13060            }
13061        }
13062
13063        #[inline]
13064        #[allow(non_snake_case)]
13065        pub fn node_as_const_row_op(&self) -> Option<ConstRowOp<'a>> {
13066            if self.node_type() == OpNode::ConstRowOp {
13067                self.node().map(|t| {
13068                    // Safety:
13069                    // Created from a valid Table for this object
13070                    // Which contains a valid union in this slot
13071                    unsafe { ConstRowOp::init_from_table(t) }
13072                })
13073            } else {
13074                None
13075            }
13076        }
13077    }
13078
13079    impl ::flatbuffers::Verifiable for PlanOp<'_> {
13080        #[inline]
13081        fn run_verifier(
13082            v: &mut ::flatbuffers::Verifier,
13083            pos: usize,
13084        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
13085            v.visit_table(pos)?
13086     .visit_union::<OpNode, _>("node_type", Self::VT_NODE_TYPE, "node", Self::VT_NODE, false, |key, v, pos| {
13087        match key {
13088          OpNode::ScanNodesOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ScanNodesOp>>("OpNode::ScanNodesOp", pos),
13089          OpNode::ScanRelsOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ScanRelsOp>>("OpNode::ScanRelsOp", pos),
13090          OpNode::ExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ExpandOp>>("OpNode::ExpandOp", pos),
13091          OpNode::OptionalExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<OptionalExpandOp>>("OpNode::OptionalExpandOp", pos),
13092          OpNode::SemiExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SemiExpandOp>>("OpNode::SemiExpandOp", pos),
13093          OpNode::ExpandVarLenOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ExpandVarLenOp>>("OpNode::ExpandVarLenOp", pos),
13094          OpNode::FilterOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<FilterOp>>("OpNode::FilterOp", pos),
13095          OpNode::BlockMarkerOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<BlockMarkerOp>>("OpNode::BlockMarkerOp", pos),
13096          OpNode::ProjectOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ProjectOp>>("OpNode::ProjectOp", pos),
13097          OpNode::AggregateOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<AggregateOp>>("OpNode::AggregateOp", pos),
13098          OpNode::SortOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SortOp>>("OpNode::SortOp", pos),
13099          OpNode::LimitOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<LimitOp>>("OpNode::LimitOp", pos),
13100          OpNode::UnwindOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<UnwindOp>>("OpNode::UnwindOp", pos),
13101          OpNode::PathConstructOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<PathConstructOp>>("OpNode::PathConstructOp", pos),
13102          OpNode::UnionOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<UnionOp>>("OpNode::UnionOp", pos),
13103          OpNode::CreateNodeOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CreateNodeOp>>("OpNode::CreateNodeOp", pos),
13104          OpNode::CreateRelOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CreateRelOp>>("OpNode::CreateRelOp", pos),
13105          OpNode::MergeOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<MergeOp>>("OpNode::MergeOp", pos),
13106          OpNode::DeleteOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<DeleteOp>>("OpNode::DeleteOp", pos),
13107          OpNode::SetPropertyOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SetPropertyOp>>("OpNode::SetPropertyOp", pos),
13108          OpNode::RemovePropertyOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<RemovePropertyOp>>("OpNode::RemovePropertyOp", pos),
13109          OpNode::VectorScanOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<VectorScanOp>>("OpNode::VectorScanOp", pos),
13110          OpNode::RerankOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<RerankOp>>("OpNode::RerankOp", pos),
13111          OpNode::ReturnOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ReturnOp>>("OpNode::ReturnOp", pos),
13112          OpNode::ConstRowOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ConstRowOp>>("OpNode::ConstRowOp", pos),
13113          _ => Ok(()),
13114        }
13115     })?
13116     .finish();
13117            Ok(())
13118        }
13119    }
13120    pub struct PlanOpArgs {
13121        pub node_type: OpNode,
13122        pub node: Option<::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>>,
13123    }
13124    impl<'a> Default for PlanOpArgs {
13125        #[inline]
13126        fn default() -> Self {
13127            PlanOpArgs {
13128                node_type: OpNode::NONE,
13129                node: None,
13130            }
13131        }
13132    }
13133
13134    pub struct PlanOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
13135        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13136        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
13137    }
13138    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PlanOpBuilder<'a, 'b, A> {
13139        #[inline]
13140        pub fn add_node_type(&mut self, node_type: OpNode) {
13141            self.fbb_
13142                .push_slot::<OpNode>(PlanOp::VT_NODE_TYPE, node_type, OpNode::NONE);
13143        }
13144        #[inline]
13145        pub fn add_node(&mut self, node: ::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>) {
13146            self.fbb_
13147                .push_slot_always::<::flatbuffers::WIPOffset<_>>(PlanOp::VT_NODE, node);
13148        }
13149        #[inline]
13150        pub fn new(
13151            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13152        ) -> PlanOpBuilder<'a, 'b, A> {
13153            let start = _fbb.start_table();
13154            PlanOpBuilder {
13155                fbb_: _fbb,
13156                start_: start,
13157            }
13158        }
13159        #[inline]
13160        pub fn finish(self) -> ::flatbuffers::WIPOffset<PlanOp<'a>> {
13161            let o = self.fbb_.end_table(self.start_);
13162            ::flatbuffers::WIPOffset::new(o.value())
13163        }
13164    }
13165
13166    impl ::core::fmt::Debug for PlanOp<'_> {
13167        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13168            let mut ds = f.debug_struct("PlanOp");
13169            ds.field("node_type", &self.node_type());
13170            match self.node_type() {
13171                OpNode::ScanNodesOp => {
13172                    if let Some(x) = self.node_as_scan_nodes_op() {
13173                        ds.field("node", &x)
13174                    } else {
13175                        ds.field(
13176                            "node",
13177                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13178                        )
13179                    }
13180                }
13181                OpNode::ScanRelsOp => {
13182                    if let Some(x) = self.node_as_scan_rels_op() {
13183                        ds.field("node", &x)
13184                    } else {
13185                        ds.field(
13186                            "node",
13187                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13188                        )
13189                    }
13190                }
13191                OpNode::ExpandOp => {
13192                    if let Some(x) = self.node_as_expand_op() {
13193                        ds.field("node", &x)
13194                    } else {
13195                        ds.field(
13196                            "node",
13197                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13198                        )
13199                    }
13200                }
13201                OpNode::OptionalExpandOp => {
13202                    if let Some(x) = self.node_as_optional_expand_op() {
13203                        ds.field("node", &x)
13204                    } else {
13205                        ds.field(
13206                            "node",
13207                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13208                        )
13209                    }
13210                }
13211                OpNode::SemiExpandOp => {
13212                    if let Some(x) = self.node_as_semi_expand_op() {
13213                        ds.field("node", &x)
13214                    } else {
13215                        ds.field(
13216                            "node",
13217                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13218                        )
13219                    }
13220                }
13221                OpNode::ExpandVarLenOp => {
13222                    if let Some(x) = self.node_as_expand_var_len_op() {
13223                        ds.field("node", &x)
13224                    } else {
13225                        ds.field(
13226                            "node",
13227                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13228                        )
13229                    }
13230                }
13231                OpNode::FilterOp => {
13232                    if let Some(x) = self.node_as_filter_op() {
13233                        ds.field("node", &x)
13234                    } else {
13235                        ds.field(
13236                            "node",
13237                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13238                        )
13239                    }
13240                }
13241                OpNode::BlockMarkerOp => {
13242                    if let Some(x) = self.node_as_block_marker_op() {
13243                        ds.field("node", &x)
13244                    } else {
13245                        ds.field(
13246                            "node",
13247                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13248                        )
13249                    }
13250                }
13251                OpNode::ProjectOp => {
13252                    if let Some(x) = self.node_as_project_op() {
13253                        ds.field("node", &x)
13254                    } else {
13255                        ds.field(
13256                            "node",
13257                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13258                        )
13259                    }
13260                }
13261                OpNode::AggregateOp => {
13262                    if let Some(x) = self.node_as_aggregate_op() {
13263                        ds.field("node", &x)
13264                    } else {
13265                        ds.field(
13266                            "node",
13267                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13268                        )
13269                    }
13270                }
13271                OpNode::SortOp => {
13272                    if let Some(x) = self.node_as_sort_op() {
13273                        ds.field("node", &x)
13274                    } else {
13275                        ds.field(
13276                            "node",
13277                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13278                        )
13279                    }
13280                }
13281                OpNode::LimitOp => {
13282                    if let Some(x) = self.node_as_limit_op() {
13283                        ds.field("node", &x)
13284                    } else {
13285                        ds.field(
13286                            "node",
13287                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13288                        )
13289                    }
13290                }
13291                OpNode::UnwindOp => {
13292                    if let Some(x) = self.node_as_unwind_op() {
13293                        ds.field("node", &x)
13294                    } else {
13295                        ds.field(
13296                            "node",
13297                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13298                        )
13299                    }
13300                }
13301                OpNode::PathConstructOp => {
13302                    if let Some(x) = self.node_as_path_construct_op() {
13303                        ds.field("node", &x)
13304                    } else {
13305                        ds.field(
13306                            "node",
13307                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13308                        )
13309                    }
13310                }
13311                OpNode::UnionOp => {
13312                    if let Some(x) = self.node_as_union_op() {
13313                        ds.field("node", &x)
13314                    } else {
13315                        ds.field(
13316                            "node",
13317                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13318                        )
13319                    }
13320                }
13321                OpNode::CreateNodeOp => {
13322                    if let Some(x) = self.node_as_create_node_op() {
13323                        ds.field("node", &x)
13324                    } else {
13325                        ds.field(
13326                            "node",
13327                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13328                        )
13329                    }
13330                }
13331                OpNode::CreateRelOp => {
13332                    if let Some(x) = self.node_as_create_rel_op() {
13333                        ds.field("node", &x)
13334                    } else {
13335                        ds.field(
13336                            "node",
13337                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13338                        )
13339                    }
13340                }
13341                OpNode::MergeOp => {
13342                    if let Some(x) = self.node_as_merge_op() {
13343                        ds.field("node", &x)
13344                    } else {
13345                        ds.field(
13346                            "node",
13347                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13348                        )
13349                    }
13350                }
13351                OpNode::DeleteOp => {
13352                    if let Some(x) = self.node_as_delete_op() {
13353                        ds.field("node", &x)
13354                    } else {
13355                        ds.field(
13356                            "node",
13357                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13358                        )
13359                    }
13360                }
13361                OpNode::SetPropertyOp => {
13362                    if let Some(x) = self.node_as_set_property_op() {
13363                        ds.field("node", &x)
13364                    } else {
13365                        ds.field(
13366                            "node",
13367                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13368                        )
13369                    }
13370                }
13371                OpNode::RemovePropertyOp => {
13372                    if let Some(x) = self.node_as_remove_property_op() {
13373                        ds.field("node", &x)
13374                    } else {
13375                        ds.field(
13376                            "node",
13377                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13378                        )
13379                    }
13380                }
13381                OpNode::VectorScanOp => {
13382                    if let Some(x) = self.node_as_vector_scan_op() {
13383                        ds.field("node", &x)
13384                    } else {
13385                        ds.field(
13386                            "node",
13387                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13388                        )
13389                    }
13390                }
13391                OpNode::RerankOp => {
13392                    if let Some(x) = self.node_as_rerank_op() {
13393                        ds.field("node", &x)
13394                    } else {
13395                        ds.field(
13396                            "node",
13397                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13398                        )
13399                    }
13400                }
13401                OpNode::ReturnOp => {
13402                    if let Some(x) = self.node_as_return_op() {
13403                        ds.field("node", &x)
13404                    } else {
13405                        ds.field(
13406                            "node",
13407                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13408                        )
13409                    }
13410                }
13411                OpNode::ConstRowOp => {
13412                    if let Some(x) = self.node_as_const_row_op() {
13413                        ds.field("node", &x)
13414                    } else {
13415                        ds.field(
13416                            "node",
13417                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13418                        )
13419                    }
13420                }
13421                _ => {
13422                    let x: Option<()> = None;
13423                    ds.field("node", &x)
13424                }
13425            };
13426            ds.finish()
13427        }
13428    }
13429    pub enum PlexusPlanOffset {}
13430    #[derive(Copy, Clone, PartialEq)]
13431
13432    /// Root table for a serialized Plexus query plan.
13433    pub struct PlexusPlan<'a> {
13434        pub _tab: ::flatbuffers::Table<'a>,
13435    }
13436
13437    impl<'a> ::flatbuffers::Follow<'a> for PlexusPlan<'a> {
13438        type Inner = PlexusPlan<'a>;
13439        #[inline]
13440        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13441            Self {
13442                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
13443            }
13444        }
13445    }
13446
13447    impl<'a> PlexusPlan<'a> {
13448        pub const VT_VERSION: ::flatbuffers::VOffsetT = 4;
13449        pub const VT_OPS: ::flatbuffers::VOffsetT = 6;
13450        pub const VT_ROOT_OP: ::flatbuffers::VOffsetT = 8;
13451
13452        #[inline]
13453        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
13454            PlexusPlan { _tab: table }
13455        }
13456        #[allow(unused_mut)]
13457        pub fn create<
13458            'bldr: 'args,
13459            'args: 'mut_bldr,
13460            'mut_bldr,
13461            A: ::flatbuffers::Allocator + 'bldr,
13462        >(
13463            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
13464            args: &'args PlexusPlanArgs<'args>,
13465        ) -> ::flatbuffers::WIPOffset<PlexusPlan<'bldr>> {
13466            let mut builder = PlexusPlanBuilder::new(_fbb);
13467            builder.add_root_op(args.root_op);
13468            if let Some(x) = args.ops {
13469                builder.add_ops(x);
13470            }
13471            if let Some(x) = args.version {
13472                builder.add_version(x);
13473            }
13474            builder.finish()
13475        }
13476
13477        #[inline]
13478        pub fn version(&self) -> Version<'a> {
13479            // Safety:
13480            // Created from valid Table for this object
13481            // which contains a valid value in this slot
13482            unsafe {
13483                self._tab
13484                    .get::<::flatbuffers::ForwardsUOffset<Version>>(PlexusPlan::VT_VERSION, None)
13485                    .unwrap()
13486            }
13487        }
13488        #[inline]
13489        pub fn ops(
13490            &self,
13491        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp<'a>>>> {
13492            // Safety:
13493            // Created from valid Table for this object
13494            // which contains a valid value in this slot
13495            unsafe {
13496                self._tab.get::<::flatbuffers::ForwardsUOffset<
13497                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp>>,
13498                >>(PlexusPlan::VT_OPS, None)
13499            }
13500        }
13501        #[inline]
13502        pub fn root_op(&self) -> u32 {
13503            // Safety:
13504            // Created from valid Table for this object
13505            // which contains a valid value in this slot
13506            unsafe {
13507                self._tab
13508                    .get::<u32>(PlexusPlan::VT_ROOT_OP, Some(0))
13509                    .unwrap()
13510            }
13511        }
13512    }
13513
13514    impl ::flatbuffers::Verifiable for PlexusPlan<'_> {
13515        #[inline]
13516        fn run_verifier(
13517            v: &mut ::flatbuffers::Verifier,
13518            pos: usize,
13519        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
13520            v.visit_table(pos)?
13521                .visit_field::<::flatbuffers::ForwardsUOffset<Version>>(
13522                    "version",
13523                    Self::VT_VERSION,
13524                    true,
13525                )?
13526                .visit_field::<::flatbuffers::ForwardsUOffset<
13527                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<PlanOp>>,
13528                >>("ops", Self::VT_OPS, false)?
13529                .visit_field::<u32>("root_op", Self::VT_ROOT_OP, false)?
13530                .finish();
13531            Ok(())
13532        }
13533    }
13534    pub struct PlexusPlanArgs<'a> {
13535        pub version: Option<::flatbuffers::WIPOffset<Version<'a>>>,
13536        pub ops: Option<
13537            ::flatbuffers::WIPOffset<
13538                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp<'a>>>,
13539            >,
13540        >,
13541        pub root_op: u32,
13542    }
13543    impl<'a> Default for PlexusPlanArgs<'a> {
13544        #[inline]
13545        fn default() -> Self {
13546            PlexusPlanArgs {
13547                version: None, // required field
13548                ops: None,
13549                root_op: 0,
13550            }
13551        }
13552    }
13553
13554    pub struct PlexusPlanBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
13555        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13556        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
13557    }
13558    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PlexusPlanBuilder<'a, 'b, A> {
13559        #[inline]
13560        pub fn add_version(&mut self, version: ::flatbuffers::WIPOffset<Version<'b>>) {
13561            self.fbb_
13562                .push_slot_always::<::flatbuffers::WIPOffset<Version>>(
13563                    PlexusPlan::VT_VERSION,
13564                    version,
13565                );
13566        }
13567        #[inline]
13568        pub fn add_ops(
13569            &mut self,
13570            ops: ::flatbuffers::WIPOffset<
13571                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<PlanOp<'b>>>,
13572            >,
13573        ) {
13574            self.fbb_
13575                .push_slot_always::<::flatbuffers::WIPOffset<_>>(PlexusPlan::VT_OPS, ops);
13576        }
13577        #[inline]
13578        pub fn add_root_op(&mut self, root_op: u32) {
13579            self.fbb_
13580                .push_slot::<u32>(PlexusPlan::VT_ROOT_OP, root_op, 0);
13581        }
13582        #[inline]
13583        pub fn new(
13584            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13585        ) -> PlexusPlanBuilder<'a, 'b, A> {
13586            let start = _fbb.start_table();
13587            PlexusPlanBuilder {
13588                fbb_: _fbb,
13589                start_: start,
13590            }
13591        }
13592        #[inline]
13593        pub fn finish(self) -> ::flatbuffers::WIPOffset<PlexusPlan<'a>> {
13594            let o = self.fbb_.end_table(self.start_);
13595            self.fbb_.required(o, PlexusPlan::VT_VERSION, "version");
13596            ::flatbuffers::WIPOffset::new(o.value())
13597        }
13598    }
13599
13600    impl ::core::fmt::Debug for PlexusPlan<'_> {
13601        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13602            let mut ds = f.debug_struct("PlexusPlan");
13603            ds.field("version", &self.version());
13604            ds.field("ops", &self.ops());
13605            ds.field("root_op", &self.root_op());
13606            ds.finish()
13607        }
13608    }
13609    #[inline]
13610    /// Verifies that a buffer of bytes contains a `PlexusPlan`
13611    /// and returns it.
13612    /// Note that verification is still experimental and may not
13613    /// catch every error, or be maximally performant. For the
13614    /// previous, unchecked, behavior use
13615    /// `root_as_plexus_plan_unchecked`.
13616    pub fn root_as_plexus_plan(
13617        buf: &[u8],
13618    ) -> Result<PlexusPlan<'_>, ::flatbuffers::InvalidFlatbuffer> {
13619        ::flatbuffers::root::<PlexusPlan>(buf)
13620    }
13621    #[inline]
13622    /// Verifies that a buffer of bytes contains a size prefixed
13623    /// `PlexusPlan` and returns it.
13624    /// Note that verification is still experimental and may not
13625    /// catch every error, or be maximally performant. For the
13626    /// previous, unchecked, behavior use
13627    /// `size_prefixed_root_as_plexus_plan_unchecked`.
13628    pub fn size_prefixed_root_as_plexus_plan(
13629        buf: &[u8],
13630    ) -> Result<PlexusPlan<'_>, ::flatbuffers::InvalidFlatbuffer> {
13631        ::flatbuffers::size_prefixed_root::<PlexusPlan>(buf)
13632    }
13633    #[inline]
13634    /// Verifies, with the given options, that a buffer of bytes
13635    /// contains a `PlexusPlan` and returns it.
13636    /// Note that verification is still experimental and may not
13637    /// catch every error, or be maximally performant. For the
13638    /// previous, unchecked, behavior use
13639    /// `root_as_plexus_plan_unchecked`.
13640    pub fn root_as_plexus_plan_with_opts<'b, 'o>(
13641        opts: &'o ::flatbuffers::VerifierOptions,
13642        buf: &'b [u8],
13643    ) -> Result<PlexusPlan<'b>, ::flatbuffers::InvalidFlatbuffer> {
13644        ::flatbuffers::root_with_opts::<PlexusPlan<'b>>(opts, buf)
13645    }
13646    #[inline]
13647    /// Verifies, with the given verifier options, that a buffer of
13648    /// bytes contains a size prefixed `PlexusPlan` and returns
13649    /// it. Note that verification is still experimental and may not
13650    /// catch every error, or be maximally performant. For the
13651    /// previous, unchecked, behavior use
13652    /// `root_as_plexus_plan_unchecked`.
13653    pub fn size_prefixed_root_as_plexus_plan_with_opts<'b, 'o>(
13654        opts: &'o ::flatbuffers::VerifierOptions,
13655        buf: &'b [u8],
13656    ) -> Result<PlexusPlan<'b>, ::flatbuffers::InvalidFlatbuffer> {
13657        ::flatbuffers::size_prefixed_root_with_opts::<PlexusPlan<'b>>(opts, buf)
13658    }
13659    #[inline]
13660    /// Assumes, without verification, that a buffer of bytes contains a PlexusPlan and returns it.
13661    /// # Safety
13662    /// Callers must trust the given bytes do indeed contain a valid `PlexusPlan`.
13663    pub unsafe fn root_as_plexus_plan_unchecked(buf: &[u8]) -> PlexusPlan<'_> {
13664        unsafe { ::flatbuffers::root_unchecked::<PlexusPlan>(buf) }
13665    }
13666    #[inline]
13667    /// Assumes, without verification, that a buffer of bytes contains a size prefixed PlexusPlan and returns it.
13668    /// # Safety
13669    /// Callers must trust the given bytes do indeed contain a valid size prefixed `PlexusPlan`.
13670    pub unsafe fn size_prefixed_root_as_plexus_plan_unchecked(buf: &[u8]) -> PlexusPlan<'_> {
13671        unsafe { ::flatbuffers::size_prefixed_root_unchecked::<PlexusPlan>(buf) }
13672    }
13673    pub const PLEXUS_PLAN_IDENTIFIER: &str = "PLXS";
13674
13675    #[inline]
13676    pub fn plexus_plan_buffer_has_identifier(buf: &[u8]) -> bool {
13677        ::flatbuffers::buffer_has_identifier(buf, PLEXUS_PLAN_IDENTIFIER, false)
13678    }
13679
13680    #[inline]
13681    pub fn plexus_plan_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
13682        ::flatbuffers::buffer_has_identifier(buf, PLEXUS_PLAN_IDENTIFIER, true)
13683    }
13684
13685    pub const PLEXUS_PLAN_EXTENSION: &str = "plexus";
13686
13687    #[inline]
13688    pub fn finish_plexus_plan_buffer<'a, 'b, A: ::flatbuffers::Allocator + 'a>(
13689        fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13690        root: ::flatbuffers::WIPOffset<PlexusPlan<'a>>,
13691    ) {
13692        fbb.finish(root, Some(PLEXUS_PLAN_IDENTIFIER));
13693    }
13694
13695    #[inline]
13696    pub fn finish_size_prefixed_plexus_plan_buffer<'a, 'b, A: ::flatbuffers::Allocator + 'a>(
13697        fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13698        root: ::flatbuffers::WIPOffset<PlexusPlan<'a>>,
13699    ) {
13700        fbb.finish_size_prefixed(root, Some(PLEXUS_PLAN_IDENTIFIER));
13701    }
13702} // pub mod plexus