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        pub const VT_CURSOR: ::flatbuffers::VOffsetT = 10;
9967        pub const VT_EMIT_CURSOR: ::flatbuffers::VOffsetT = 12;
9968
9969        #[inline]
9970        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
9971            LimitOp { _tab: table }
9972        }
9973        #[allow(unused_mut)]
9974        pub fn create<
9975            'bldr: 'args,
9976            'args: 'mut_bldr,
9977            'mut_bldr,
9978            A: ::flatbuffers::Allocator + 'bldr,
9979        >(
9980            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
9981            args: &'args LimitOpArgs<'args>,
9982        ) -> ::flatbuffers::WIPOffset<LimitOp<'bldr>> {
9983            let mut builder = LimitOpBuilder::new(_fbb);
9984            builder.add_skip(args.skip);
9985            builder.add_count(args.count);
9986            if let Some(x) = args.cursor {
9987                builder.add_cursor(x);
9988            }
9989            builder.add_input(args.input);
9990            builder.add_emit_cursor(args.emit_cursor);
9991            builder.finish()
9992        }
9993
9994        #[inline]
9995        pub fn input(&self) -> u32 {
9996            // Safety:
9997            // Created from valid Table for this object
9998            // which contains a valid value in this slot
9999            unsafe { self._tab.get::<u32>(LimitOp::VT_INPUT, Some(0)).unwrap() }
10000        }
10001        #[inline]
10002        pub fn count(&self) -> i64 {
10003            // Safety:
10004            // Created from valid Table for this object
10005            // which contains a valid value in this slot
10006            unsafe { self._tab.get::<i64>(LimitOp::VT_COUNT, Some(-1)).unwrap() }
10007        }
10008        #[inline]
10009        pub fn skip(&self) -> i64 {
10010            // Safety:
10011            // Created from valid Table for this object
10012            // which contains a valid value in this slot
10013            unsafe { self._tab.get::<i64>(LimitOp::VT_SKIP, Some(0)).unwrap() }
10014        }
10015        #[inline]
10016        pub fn cursor(&self) -> Option<::flatbuffers::Vector<'a, i8>> {
10017            // Safety:
10018            // Created from valid Table for this object
10019            // which contains a valid value in this slot
10020            unsafe {
10021                self._tab.get::<::flatbuffers::ForwardsUOffset<
10022                    ::flatbuffers::Vector<'a, i8>,
10023                >>(LimitOp::VT_CURSOR, None)
10024            }
10025        }
10026        #[inline]
10027        pub fn emit_cursor(&self) -> bool {
10028            // Safety:
10029            // Created from valid Table for this object
10030            // which contains a valid value in this slot
10031            unsafe {
10032                self._tab
10033                    .get::<bool>(LimitOp::VT_EMIT_CURSOR, Some(false))
10034                    .unwrap()
10035            }
10036        }
10037    }
10038
10039    impl ::flatbuffers::Verifiable for LimitOp<'_> {
10040        #[inline]
10041        fn run_verifier(
10042            v: &mut ::flatbuffers::Verifier,
10043            pos: usize,
10044        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10045            v.visit_table(pos)?
10046                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10047                .visit_field::<i64>("count", Self::VT_COUNT, false)?
10048                .visit_field::<i64>("skip", Self::VT_SKIP, false)?
10049                .visit_field::<::flatbuffers::ForwardsUOffset<
10050                    ::flatbuffers::Vector<'_, i8>,
10051                >>("cursor", Self::VT_CURSOR, false)?
10052                .visit_field::<bool>("emit_cursor", Self::VT_EMIT_CURSOR, false)?
10053                .finish();
10054            Ok(())
10055        }
10056    }
10057    pub struct LimitOpArgs<'a> {
10058        pub input: u32,
10059        pub count: i64,
10060        pub skip: i64,
10061        pub cursor: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, i8>>>,
10062        pub emit_cursor: bool,
10063    }
10064    impl<'a> Default for LimitOpArgs<'a> {
10065        #[inline]
10066        fn default() -> Self {
10067            LimitOpArgs {
10068                input: 0,
10069                count: -1,
10070                skip: 0,
10071                cursor: None,
10072                emit_cursor: false,
10073            }
10074        }
10075    }
10076
10077    pub struct LimitOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10078        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10079        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10080    }
10081    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> LimitOpBuilder<'a, 'b, A> {
10082        #[inline]
10083        pub fn add_input(&mut self, input: u32) {
10084            self.fbb_.push_slot::<u32>(LimitOp::VT_INPUT, input, 0);
10085        }
10086        #[inline]
10087        pub fn add_count(&mut self, count: i64) {
10088            self.fbb_.push_slot::<i64>(LimitOp::VT_COUNT, count, -1);
10089        }
10090        #[inline]
10091        pub fn add_skip(&mut self, skip: i64) {
10092            self.fbb_.push_slot::<i64>(LimitOp::VT_SKIP, skip, 0);
10093        }
10094        #[inline]
10095        pub fn add_cursor(
10096            &mut self,
10097            cursor: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, i8>>,
10098        ) {
10099            self.fbb_
10100                .push_slot_always::<::flatbuffers::WIPOffset<_>>(LimitOp::VT_CURSOR, cursor);
10101        }
10102        #[inline]
10103        pub fn add_emit_cursor(&mut self, emit_cursor: bool) {
10104            self.fbb_
10105                .push_slot::<bool>(LimitOp::VT_EMIT_CURSOR, emit_cursor, false);
10106        }
10107        #[inline]
10108        pub fn new(
10109            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10110        ) -> LimitOpBuilder<'a, 'b, A> {
10111            let start = _fbb.start_table();
10112            LimitOpBuilder {
10113                fbb_: _fbb,
10114                start_: start,
10115            }
10116        }
10117        #[inline]
10118        pub fn finish(self) -> ::flatbuffers::WIPOffset<LimitOp<'a>> {
10119            let o = self.fbb_.end_table(self.start_);
10120            ::flatbuffers::WIPOffset::new(o.value())
10121        }
10122    }
10123
10124    impl ::core::fmt::Debug for LimitOp<'_> {
10125        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10126            let mut ds = f.debug_struct("LimitOp");
10127            ds.field("input", &self.input());
10128            ds.field("count", &self.count());
10129            ds.field("skip", &self.skip());
10130            ds.field("cursor", &self.cursor());
10131            ds.field("emit_cursor", &self.emit_cursor());
10132            ds.finish()
10133        }
10134    }
10135    pub enum UnwindOpOffset {}
10136    #[derive(Copy, Clone, PartialEq)]
10137
10138    pub struct UnwindOp<'a> {
10139        pub _tab: ::flatbuffers::Table<'a>,
10140    }
10141
10142    impl<'a> ::flatbuffers::Follow<'a> for UnwindOp<'a> {
10143        type Inner = UnwindOp<'a>;
10144        #[inline]
10145        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10146            Self {
10147                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10148            }
10149        }
10150    }
10151
10152    impl<'a> UnwindOp<'a> {
10153        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10154        pub const VT_LIST_EXPR: ::flatbuffers::VOffsetT = 6;
10155        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 8;
10156        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10157
10158        #[inline]
10159        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10160            UnwindOp { _tab: table }
10161        }
10162        #[allow(unused_mut)]
10163        pub fn create<
10164            'bldr: 'args,
10165            'args: 'mut_bldr,
10166            'mut_bldr,
10167            A: ::flatbuffers::Allocator + 'bldr,
10168        >(
10169            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10170            args: &'args UnwindOpArgs<'args>,
10171        ) -> ::flatbuffers::WIPOffset<UnwindOp<'bldr>> {
10172            let mut builder = UnwindOpBuilder::new(_fbb);
10173            if let Some(x) = args.schema {
10174                builder.add_schema(x);
10175            }
10176            if let Some(x) = args.out_var {
10177                builder.add_out_var(x);
10178            }
10179            if let Some(x) = args.list_expr {
10180                builder.add_list_expr(x);
10181            }
10182            builder.add_input(args.input);
10183            builder.finish()
10184        }
10185
10186        #[inline]
10187        pub fn input(&self) -> u32 {
10188            // Safety:
10189            // Created from valid Table for this object
10190            // which contains a valid value in this slot
10191            unsafe { self._tab.get::<u32>(UnwindOp::VT_INPUT, Some(0)).unwrap() }
10192        }
10193        #[inline]
10194        pub fn list_expr(&self) -> Option<Expr<'a>> {
10195            // Safety:
10196            // Created from valid Table for this object
10197            // which contains a valid value in this slot
10198            unsafe {
10199                self._tab
10200                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(UnwindOp::VT_LIST_EXPR, None)
10201            }
10202        }
10203        #[inline]
10204        pub fn out_var(&self) -> Option<&'a str> {
10205            // Safety:
10206            // Created from valid Table for this object
10207            // which contains a valid value in this slot
10208            unsafe {
10209                self._tab
10210                    .get::<::flatbuffers::ForwardsUOffset<&str>>(UnwindOp::VT_OUT_VAR, None)
10211            }
10212        }
10213        #[inline]
10214        pub fn schema(
10215            &self,
10216        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10217            // Safety:
10218            // Created from valid Table for this object
10219            // which contains a valid value in this slot
10220            unsafe {
10221                self._tab.get::<::flatbuffers::ForwardsUOffset<
10222                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10223                >>(UnwindOp::VT_SCHEMA, None)
10224            }
10225        }
10226    }
10227
10228    impl ::flatbuffers::Verifiable for UnwindOp<'_> {
10229        #[inline]
10230        fn run_verifier(
10231            v: &mut ::flatbuffers::Verifier,
10232            pos: usize,
10233        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10234            v.visit_table(pos)?
10235                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10236                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
10237                    "list_expr",
10238                    Self::VT_LIST_EXPR,
10239                    false,
10240                )?
10241                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
10242                    "out_var",
10243                    Self::VT_OUT_VAR,
10244                    false,
10245                )?
10246                .visit_field::<::flatbuffers::ForwardsUOffset<
10247                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10248                >>("schema", Self::VT_SCHEMA, false)?
10249                .finish();
10250            Ok(())
10251        }
10252    }
10253    pub struct UnwindOpArgs<'a> {
10254        pub input: u32,
10255        pub list_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
10256        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
10257        pub schema: Option<
10258            ::flatbuffers::WIPOffset<
10259                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10260            >,
10261        >,
10262    }
10263    impl<'a> Default for UnwindOpArgs<'a> {
10264        #[inline]
10265        fn default() -> Self {
10266            UnwindOpArgs {
10267                input: 0,
10268                list_expr: None,
10269                out_var: None,
10270                schema: None,
10271            }
10272        }
10273    }
10274
10275    pub struct UnwindOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10276        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10277        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10278    }
10279    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> UnwindOpBuilder<'a, 'b, A> {
10280        #[inline]
10281        pub fn add_input(&mut self, input: u32) {
10282            self.fbb_.push_slot::<u32>(UnwindOp::VT_INPUT, input, 0);
10283        }
10284        #[inline]
10285        pub fn add_list_expr(&mut self, list_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
10286            self.fbb_
10287                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
10288                    UnwindOp::VT_LIST_EXPR,
10289                    list_expr,
10290                );
10291        }
10292        #[inline]
10293        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
10294            self.fbb_
10295                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnwindOp::VT_OUT_VAR, out_var);
10296        }
10297        #[inline]
10298        pub fn add_schema(
10299            &mut self,
10300            schema: ::flatbuffers::WIPOffset<
10301                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10302            >,
10303        ) {
10304            self.fbb_
10305                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnwindOp::VT_SCHEMA, schema);
10306        }
10307        #[inline]
10308        pub fn new(
10309            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10310        ) -> UnwindOpBuilder<'a, 'b, A> {
10311            let start = _fbb.start_table();
10312            UnwindOpBuilder {
10313                fbb_: _fbb,
10314                start_: start,
10315            }
10316        }
10317        #[inline]
10318        pub fn finish(self) -> ::flatbuffers::WIPOffset<UnwindOp<'a>> {
10319            let o = self.fbb_.end_table(self.start_);
10320            ::flatbuffers::WIPOffset::new(o.value())
10321        }
10322    }
10323
10324    impl ::core::fmt::Debug for UnwindOp<'_> {
10325        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10326            let mut ds = f.debug_struct("UnwindOp");
10327            ds.field("input", &self.input());
10328            ds.field("list_expr", &self.list_expr());
10329            ds.field("out_var", &self.out_var());
10330            ds.field("schema", &self.schema());
10331            ds.finish()
10332        }
10333    }
10334    pub enum PathConstructOpOffset {}
10335    #[derive(Copy, Clone, PartialEq)]
10336
10337    pub struct PathConstructOp<'a> {
10338        pub _tab: ::flatbuffers::Table<'a>,
10339    }
10340
10341    impl<'a> ::flatbuffers::Follow<'a> for PathConstructOp<'a> {
10342        type Inner = PathConstructOp<'a>;
10343        #[inline]
10344        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10345            Self {
10346                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10347            }
10348        }
10349    }
10350
10351    impl<'a> PathConstructOp<'a> {
10352        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10353        pub const VT_REL_COLS: ::flatbuffers::VOffsetT = 6;
10354        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 8;
10355
10356        #[inline]
10357        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10358            PathConstructOp { _tab: table }
10359        }
10360        #[allow(unused_mut)]
10361        pub fn create<
10362            'bldr: 'args,
10363            'args: 'mut_bldr,
10364            'mut_bldr,
10365            A: ::flatbuffers::Allocator + 'bldr,
10366        >(
10367            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10368            args: &'args PathConstructOpArgs<'args>,
10369        ) -> ::flatbuffers::WIPOffset<PathConstructOp<'bldr>> {
10370            let mut builder = PathConstructOpBuilder::new(_fbb);
10371            if let Some(x) = args.schema {
10372                builder.add_schema(x);
10373            }
10374            if let Some(x) = args.rel_cols {
10375                builder.add_rel_cols(x);
10376            }
10377            builder.add_input(args.input);
10378            builder.finish()
10379        }
10380
10381        #[inline]
10382        pub fn input(&self) -> u32 {
10383            // Safety:
10384            // Created from valid Table for this object
10385            // which contains a valid value in this slot
10386            unsafe {
10387                self._tab
10388                    .get::<u32>(PathConstructOp::VT_INPUT, Some(0))
10389                    .unwrap()
10390            }
10391        }
10392        #[inline]
10393        pub fn rel_cols(&self) -> Option<::flatbuffers::Vector<'a, u32>> {
10394            // Safety:
10395            // Created from valid Table for this object
10396            // which contains a valid value in this slot
10397            unsafe {
10398                self._tab
10399                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'a, u32>>>(
10400                        PathConstructOp::VT_REL_COLS,
10401                        None,
10402                    )
10403            }
10404        }
10405        #[inline]
10406        pub fn schema(
10407            &self,
10408        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10409            // Safety:
10410            // Created from valid Table for this object
10411            // which contains a valid value in this slot
10412            unsafe {
10413                self._tab.get::<::flatbuffers::ForwardsUOffset<
10414                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10415                >>(PathConstructOp::VT_SCHEMA, None)
10416            }
10417        }
10418    }
10419
10420    impl ::flatbuffers::Verifiable for PathConstructOp<'_> {
10421        #[inline]
10422        fn run_verifier(
10423            v: &mut ::flatbuffers::Verifier,
10424            pos: usize,
10425        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10426            v.visit_table(pos)?
10427                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10428                .visit_field::<::flatbuffers::ForwardsUOffset<::flatbuffers::Vector<'_, u32>>>(
10429                    "rel_cols",
10430                    Self::VT_REL_COLS,
10431                    false,
10432                )?
10433                .visit_field::<::flatbuffers::ForwardsUOffset<
10434                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10435                >>("schema", Self::VT_SCHEMA, false)?
10436                .finish();
10437            Ok(())
10438        }
10439    }
10440    pub struct PathConstructOpArgs<'a> {
10441        pub input: u32,
10442        pub rel_cols: Option<::flatbuffers::WIPOffset<::flatbuffers::Vector<'a, u32>>>,
10443        pub schema: Option<
10444            ::flatbuffers::WIPOffset<
10445                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10446            >,
10447        >,
10448    }
10449    impl<'a> Default for PathConstructOpArgs<'a> {
10450        #[inline]
10451        fn default() -> Self {
10452            PathConstructOpArgs {
10453                input: 0,
10454                rel_cols: None,
10455                schema: None,
10456            }
10457        }
10458    }
10459
10460    pub struct PathConstructOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10461        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10462        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10463    }
10464    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PathConstructOpBuilder<'a, 'b, A> {
10465        #[inline]
10466        pub fn add_input(&mut self, input: u32) {
10467            self.fbb_
10468                .push_slot::<u32>(PathConstructOp::VT_INPUT, input, 0);
10469        }
10470        #[inline]
10471        pub fn add_rel_cols(
10472            &mut self,
10473            rel_cols: ::flatbuffers::WIPOffset<::flatbuffers::Vector<'b, u32>>,
10474        ) {
10475            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
10476                PathConstructOp::VT_REL_COLS,
10477                rel_cols,
10478            );
10479        }
10480        #[inline]
10481        pub fn add_schema(
10482            &mut self,
10483            schema: ::flatbuffers::WIPOffset<
10484                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10485            >,
10486        ) {
10487            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
10488                PathConstructOp::VT_SCHEMA,
10489                schema,
10490            );
10491        }
10492        #[inline]
10493        pub fn new(
10494            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10495        ) -> PathConstructOpBuilder<'a, 'b, A> {
10496            let start = _fbb.start_table();
10497            PathConstructOpBuilder {
10498                fbb_: _fbb,
10499                start_: start,
10500            }
10501        }
10502        #[inline]
10503        pub fn finish(self) -> ::flatbuffers::WIPOffset<PathConstructOp<'a>> {
10504            let o = self.fbb_.end_table(self.start_);
10505            ::flatbuffers::WIPOffset::new(o.value())
10506        }
10507    }
10508
10509    impl ::core::fmt::Debug for PathConstructOp<'_> {
10510        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10511            let mut ds = f.debug_struct("PathConstructOp");
10512            ds.field("input", &self.input());
10513            ds.field("rel_cols", &self.rel_cols());
10514            ds.field("schema", &self.schema());
10515            ds.finish()
10516        }
10517    }
10518    pub enum UnionOpOffset {}
10519    #[derive(Copy, Clone, PartialEq)]
10520
10521    pub struct UnionOp<'a> {
10522        pub _tab: ::flatbuffers::Table<'a>,
10523    }
10524
10525    impl<'a> ::flatbuffers::Follow<'a> for UnionOp<'a> {
10526        type Inner = UnionOp<'a>;
10527        #[inline]
10528        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10529            Self {
10530                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10531            }
10532        }
10533    }
10534
10535    impl<'a> UnionOp<'a> {
10536        pub const VT_LHS: ::flatbuffers::VOffsetT = 4;
10537        pub const VT_RHS: ::flatbuffers::VOffsetT = 6;
10538        pub const VT_ALL: ::flatbuffers::VOffsetT = 8;
10539        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10540
10541        #[inline]
10542        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10543            UnionOp { _tab: table }
10544        }
10545        #[allow(unused_mut)]
10546        pub fn create<
10547            'bldr: 'args,
10548            'args: 'mut_bldr,
10549            'mut_bldr,
10550            A: ::flatbuffers::Allocator + 'bldr,
10551        >(
10552            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10553            args: &'args UnionOpArgs<'args>,
10554        ) -> ::flatbuffers::WIPOffset<UnionOp<'bldr>> {
10555            let mut builder = UnionOpBuilder::new(_fbb);
10556            if let Some(x) = args.schema {
10557                builder.add_schema(x);
10558            }
10559            builder.add_rhs(args.rhs);
10560            builder.add_lhs(args.lhs);
10561            builder.add_all(args.all);
10562            builder.finish()
10563        }
10564
10565        #[inline]
10566        pub fn lhs(&self) -> u32 {
10567            // Safety:
10568            // Created from valid Table for this object
10569            // which contains a valid value in this slot
10570            unsafe { self._tab.get::<u32>(UnionOp::VT_LHS, Some(0)).unwrap() }
10571        }
10572        #[inline]
10573        pub fn rhs(&self) -> u32 {
10574            // Safety:
10575            // Created from valid Table for this object
10576            // which contains a valid value in this slot
10577            unsafe { self._tab.get::<u32>(UnionOp::VT_RHS, Some(0)).unwrap() }
10578        }
10579        #[inline]
10580        pub fn all(&self) -> bool {
10581            // Safety:
10582            // Created from valid Table for this object
10583            // which contains a valid value in this slot
10584            unsafe { self._tab.get::<bool>(UnionOp::VT_ALL, Some(false)).unwrap() }
10585        }
10586        #[inline]
10587        pub fn schema(
10588            &self,
10589        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10590            // Safety:
10591            // Created from valid Table for this object
10592            // which contains a valid value in this slot
10593            unsafe {
10594                self._tab.get::<::flatbuffers::ForwardsUOffset<
10595                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10596                >>(UnionOp::VT_SCHEMA, None)
10597            }
10598        }
10599    }
10600
10601    impl ::flatbuffers::Verifiable for UnionOp<'_> {
10602        #[inline]
10603        fn run_verifier(
10604            v: &mut ::flatbuffers::Verifier,
10605            pos: usize,
10606        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10607            v.visit_table(pos)?
10608                .visit_field::<u32>("lhs", Self::VT_LHS, false)?
10609                .visit_field::<u32>("rhs", Self::VT_RHS, false)?
10610                .visit_field::<bool>("all", Self::VT_ALL, false)?
10611                .visit_field::<::flatbuffers::ForwardsUOffset<
10612                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10613                >>("schema", Self::VT_SCHEMA, false)?
10614                .finish();
10615            Ok(())
10616        }
10617    }
10618    pub struct UnionOpArgs<'a> {
10619        pub lhs: u32,
10620        pub rhs: u32,
10621        pub all: bool,
10622        pub schema: Option<
10623            ::flatbuffers::WIPOffset<
10624                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10625            >,
10626        >,
10627    }
10628    impl<'a> Default for UnionOpArgs<'a> {
10629        #[inline]
10630        fn default() -> Self {
10631            UnionOpArgs {
10632                lhs: 0,
10633                rhs: 0,
10634                all: false,
10635                schema: None,
10636            }
10637        }
10638    }
10639
10640    pub struct UnionOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10641        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10642        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10643    }
10644    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> UnionOpBuilder<'a, 'b, A> {
10645        #[inline]
10646        pub fn add_lhs(&mut self, lhs: u32) {
10647            self.fbb_.push_slot::<u32>(UnionOp::VT_LHS, lhs, 0);
10648        }
10649        #[inline]
10650        pub fn add_rhs(&mut self, rhs: u32) {
10651            self.fbb_.push_slot::<u32>(UnionOp::VT_RHS, rhs, 0);
10652        }
10653        #[inline]
10654        pub fn add_all(&mut self, all: bool) {
10655            self.fbb_.push_slot::<bool>(UnionOp::VT_ALL, all, false);
10656        }
10657        #[inline]
10658        pub fn add_schema(
10659            &mut self,
10660            schema: ::flatbuffers::WIPOffset<
10661                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10662            >,
10663        ) {
10664            self.fbb_
10665                .push_slot_always::<::flatbuffers::WIPOffset<_>>(UnionOp::VT_SCHEMA, schema);
10666        }
10667        #[inline]
10668        pub fn new(
10669            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10670        ) -> UnionOpBuilder<'a, 'b, A> {
10671            let start = _fbb.start_table();
10672            UnionOpBuilder {
10673                fbb_: _fbb,
10674                start_: start,
10675            }
10676        }
10677        #[inline]
10678        pub fn finish(self) -> ::flatbuffers::WIPOffset<UnionOp<'a>> {
10679            let o = self.fbb_.end_table(self.start_);
10680            ::flatbuffers::WIPOffset::new(o.value())
10681        }
10682    }
10683
10684    impl ::core::fmt::Debug for UnionOp<'_> {
10685        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10686            let mut ds = f.debug_struct("UnionOp");
10687            ds.field("lhs", &self.lhs());
10688            ds.field("rhs", &self.rhs());
10689            ds.field("all", &self.all());
10690            ds.field("schema", &self.schema());
10691            ds.finish()
10692        }
10693    }
10694    pub enum CreateNodeOpOffset {}
10695    #[derive(Copy, Clone, PartialEq)]
10696
10697    pub struct CreateNodeOp<'a> {
10698        pub _tab: ::flatbuffers::Table<'a>,
10699    }
10700
10701    impl<'a> ::flatbuffers::Follow<'a> for CreateNodeOp<'a> {
10702        type Inner = CreateNodeOp<'a>;
10703        #[inline]
10704        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10705            Self {
10706                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10707            }
10708        }
10709    }
10710
10711    impl<'a> CreateNodeOp<'a> {
10712        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10713        pub const VT_LABELS: ::flatbuffers::VOffsetT = 6;
10714        pub const VT_PROPS: ::flatbuffers::VOffsetT = 8;
10715        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
10716        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 12;
10717
10718        #[inline]
10719        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10720            CreateNodeOp { _tab: table }
10721        }
10722        #[allow(unused_mut)]
10723        pub fn create<
10724            'bldr: 'args,
10725            'args: 'mut_bldr,
10726            'mut_bldr,
10727            A: ::flatbuffers::Allocator + 'bldr,
10728        >(
10729            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10730            args: &'args CreateNodeOpArgs<'args>,
10731        ) -> ::flatbuffers::WIPOffset<CreateNodeOp<'bldr>> {
10732            let mut builder = CreateNodeOpBuilder::new(_fbb);
10733            if let Some(x) = args.out_var {
10734                builder.add_out_var(x);
10735            }
10736            if let Some(x) = args.schema {
10737                builder.add_schema(x);
10738            }
10739            if let Some(x) = args.props {
10740                builder.add_props(x);
10741            }
10742            if let Some(x) = args.labels {
10743                builder.add_labels(x);
10744            }
10745            builder.add_input(args.input);
10746            builder.finish()
10747        }
10748
10749        #[inline]
10750        pub fn input(&self) -> u32 {
10751            // Safety:
10752            // Created from valid Table for this object
10753            // which contains a valid value in this slot
10754            unsafe {
10755                self._tab
10756                    .get::<u32>(CreateNodeOp::VT_INPUT, Some(0))
10757                    .unwrap()
10758            }
10759        }
10760        #[inline]
10761        pub fn labels(
10762            &self,
10763        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>> {
10764            // Safety:
10765            // Created from valid Table for this object
10766            // which contains a valid value in this slot
10767            unsafe {
10768                self._tab.get::<::flatbuffers::ForwardsUOffset<
10769                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
10770                >>(CreateNodeOp::VT_LABELS, None)
10771            }
10772        }
10773        #[inline]
10774        pub fn props(&self) -> Option<Expr<'a>> {
10775            // Safety:
10776            // Created from valid Table for this object
10777            // which contains a valid value in this slot
10778            unsafe {
10779                self._tab
10780                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CreateNodeOp::VT_PROPS, None)
10781            }
10782        }
10783        #[inline]
10784        pub fn schema(
10785            &self,
10786        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
10787            // Safety:
10788            // Created from valid Table for this object
10789            // which contains a valid value in this slot
10790            unsafe {
10791                self._tab.get::<::flatbuffers::ForwardsUOffset<
10792                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
10793                >>(CreateNodeOp::VT_SCHEMA, None)
10794            }
10795        }
10796        #[inline]
10797        pub fn out_var(&self) -> Option<&'a str> {
10798            // Safety:
10799            // Created from valid Table for this object
10800            // which contains a valid value in this slot
10801            unsafe {
10802                self._tab
10803                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateNodeOp::VT_OUT_VAR, None)
10804            }
10805        }
10806    }
10807
10808    impl ::flatbuffers::Verifiable for CreateNodeOp<'_> {
10809        #[inline]
10810        fn run_verifier(
10811            v: &mut ::flatbuffers::Verifier,
10812            pos: usize,
10813        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
10814            v.visit_table(pos)?
10815                .visit_field::<u32>("input", Self::VT_INPUT, false)?
10816                .visit_field::<::flatbuffers::ForwardsUOffset<
10817                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<&'_ str>>,
10818                >>("labels", Self::VT_LABELS, false)?
10819                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
10820                    "props",
10821                    Self::VT_PROPS,
10822                    false,
10823                )?
10824                .visit_field::<::flatbuffers::ForwardsUOffset<
10825                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
10826                >>("schema", Self::VT_SCHEMA, false)?
10827                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
10828                    "out_var",
10829                    Self::VT_OUT_VAR,
10830                    false,
10831                )?
10832                .finish();
10833            Ok(())
10834        }
10835    }
10836    pub struct CreateNodeOpArgs<'a> {
10837        pub input: u32,
10838        pub labels: Option<
10839            ::flatbuffers::WIPOffset<
10840                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<&'a str>>,
10841            >,
10842        >,
10843        pub props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
10844        pub schema: Option<
10845            ::flatbuffers::WIPOffset<
10846                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
10847            >,
10848        >,
10849        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
10850    }
10851    impl<'a> Default for CreateNodeOpArgs<'a> {
10852        #[inline]
10853        fn default() -> Self {
10854            CreateNodeOpArgs {
10855                input: 0,
10856                labels: None,
10857                props: None,
10858                schema: None,
10859                out_var: None,
10860            }
10861        }
10862    }
10863
10864    pub struct CreateNodeOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
10865        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10866        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
10867    }
10868    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CreateNodeOpBuilder<'a, 'b, A> {
10869        #[inline]
10870        pub fn add_input(&mut self, input: u32) {
10871            self.fbb_.push_slot::<u32>(CreateNodeOp::VT_INPUT, input, 0);
10872        }
10873        #[inline]
10874        pub fn add_labels(
10875            &mut self,
10876            labels: ::flatbuffers::WIPOffset<
10877                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<&'b str>>,
10878            >,
10879        ) {
10880            self.fbb_
10881                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_LABELS, labels);
10882        }
10883        #[inline]
10884        pub fn add_props(&mut self, props: ::flatbuffers::WIPOffset<Expr<'b>>) {
10885            self.fbb_
10886                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CreateNodeOp::VT_PROPS, props);
10887        }
10888        #[inline]
10889        pub fn add_schema(
10890            &mut self,
10891            schema: ::flatbuffers::WIPOffset<
10892                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
10893            >,
10894        ) {
10895            self.fbb_
10896                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_SCHEMA, schema);
10897        }
10898        #[inline]
10899        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
10900            self.fbb_
10901                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateNodeOp::VT_OUT_VAR, out_var);
10902        }
10903        #[inline]
10904        pub fn new(
10905            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
10906        ) -> CreateNodeOpBuilder<'a, 'b, A> {
10907            let start = _fbb.start_table();
10908            CreateNodeOpBuilder {
10909                fbb_: _fbb,
10910                start_: start,
10911            }
10912        }
10913        #[inline]
10914        pub fn finish(self) -> ::flatbuffers::WIPOffset<CreateNodeOp<'a>> {
10915            let o = self.fbb_.end_table(self.start_);
10916            ::flatbuffers::WIPOffset::new(o.value())
10917        }
10918    }
10919
10920    impl ::core::fmt::Debug for CreateNodeOp<'_> {
10921        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10922            let mut ds = f.debug_struct("CreateNodeOp");
10923            ds.field("input", &self.input());
10924            ds.field("labels", &self.labels());
10925            ds.field("props", &self.props());
10926            ds.field("schema", &self.schema());
10927            ds.field("out_var", &self.out_var());
10928            ds.finish()
10929        }
10930    }
10931    pub enum CreateRelOpOffset {}
10932    #[derive(Copy, Clone, PartialEq)]
10933
10934    pub struct CreateRelOp<'a> {
10935        pub _tab: ::flatbuffers::Table<'a>,
10936    }
10937
10938    impl<'a> ::flatbuffers::Follow<'a> for CreateRelOp<'a> {
10939        type Inner = CreateRelOp<'a>;
10940        #[inline]
10941        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10942            Self {
10943                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
10944            }
10945        }
10946    }
10947
10948    impl<'a> CreateRelOp<'a> {
10949        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
10950        pub const VT_SRC_COL: ::flatbuffers::VOffsetT = 6;
10951        pub const VT_DST_COL: ::flatbuffers::VOffsetT = 8;
10952        pub const VT_REL_TYPE: ::flatbuffers::VOffsetT = 10;
10953        pub const VT_PROPS: ::flatbuffers::VOffsetT = 12;
10954        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 14;
10955        pub const VT_OUT_VAR: ::flatbuffers::VOffsetT = 16;
10956
10957        #[inline]
10958        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
10959            CreateRelOp { _tab: table }
10960        }
10961        #[allow(unused_mut)]
10962        pub fn create<
10963            'bldr: 'args,
10964            'args: 'mut_bldr,
10965            'mut_bldr,
10966            A: ::flatbuffers::Allocator + 'bldr,
10967        >(
10968            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
10969            args: &'args CreateRelOpArgs<'args>,
10970        ) -> ::flatbuffers::WIPOffset<CreateRelOp<'bldr>> {
10971            let mut builder = CreateRelOpBuilder::new(_fbb);
10972            if let Some(x) = args.out_var {
10973                builder.add_out_var(x);
10974            }
10975            if let Some(x) = args.schema {
10976                builder.add_schema(x);
10977            }
10978            if let Some(x) = args.props {
10979                builder.add_props(x);
10980            }
10981            if let Some(x) = args.rel_type {
10982                builder.add_rel_type(x);
10983            }
10984            builder.add_dst_col(args.dst_col);
10985            builder.add_src_col(args.src_col);
10986            builder.add_input(args.input);
10987            builder.finish()
10988        }
10989
10990        #[inline]
10991        pub fn input(&self) -> u32 {
10992            // Safety:
10993            // Created from valid Table for this object
10994            // which contains a valid value in this slot
10995            unsafe {
10996                self._tab
10997                    .get::<u32>(CreateRelOp::VT_INPUT, Some(0))
10998                    .unwrap()
10999            }
11000        }
11001        #[inline]
11002        pub fn src_col(&self) -> i32 {
11003            // Safety:
11004            // Created from valid Table for this object
11005            // which contains a valid value in this slot
11006            unsafe {
11007                self._tab
11008                    .get::<i32>(CreateRelOp::VT_SRC_COL, Some(0))
11009                    .unwrap()
11010            }
11011        }
11012        #[inline]
11013        pub fn dst_col(&self) -> i32 {
11014            // Safety:
11015            // Created from valid Table for this object
11016            // which contains a valid value in this slot
11017            unsafe {
11018                self._tab
11019                    .get::<i32>(CreateRelOp::VT_DST_COL, Some(0))
11020                    .unwrap()
11021            }
11022        }
11023        #[inline]
11024        pub fn rel_type(&self) -> Option<&'a str> {
11025            // Safety:
11026            // Created from valid Table for this object
11027            // which contains a valid value in this slot
11028            unsafe {
11029                self._tab
11030                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateRelOp::VT_REL_TYPE, None)
11031            }
11032        }
11033        #[inline]
11034        pub fn props(&self) -> Option<Expr<'a>> {
11035            // Safety:
11036            // Created from valid Table for this object
11037            // which contains a valid value in this slot
11038            unsafe {
11039                self._tab
11040                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(CreateRelOp::VT_PROPS, None)
11041            }
11042        }
11043        #[inline]
11044        pub fn schema(
11045            &self,
11046        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11047            // Safety:
11048            // Created from valid Table for this object
11049            // which contains a valid value in this slot
11050            unsafe {
11051                self._tab.get::<::flatbuffers::ForwardsUOffset<
11052                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11053                >>(CreateRelOp::VT_SCHEMA, None)
11054            }
11055        }
11056        #[inline]
11057        pub fn out_var(&self) -> Option<&'a str> {
11058            // Safety:
11059            // Created from valid Table for this object
11060            // which contains a valid value in this slot
11061            unsafe {
11062                self._tab
11063                    .get::<::flatbuffers::ForwardsUOffset<&str>>(CreateRelOp::VT_OUT_VAR, None)
11064            }
11065        }
11066    }
11067
11068    impl ::flatbuffers::Verifiable for CreateRelOp<'_> {
11069        #[inline]
11070        fn run_verifier(
11071            v: &mut ::flatbuffers::Verifier,
11072            pos: usize,
11073        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11074            v.visit_table(pos)?
11075                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11076                .visit_field::<i32>("src_col", Self::VT_SRC_COL, false)?
11077                .visit_field::<i32>("dst_col", Self::VT_DST_COL, false)?
11078                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
11079                    "rel_type",
11080                    Self::VT_REL_TYPE,
11081                    false,
11082                )?
11083                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11084                    "props",
11085                    Self::VT_PROPS,
11086                    false,
11087                )?
11088                .visit_field::<::flatbuffers::ForwardsUOffset<
11089                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11090                >>("schema", Self::VT_SCHEMA, false)?
11091                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
11092                    "out_var",
11093                    Self::VT_OUT_VAR,
11094                    false,
11095                )?
11096                .finish();
11097            Ok(())
11098        }
11099    }
11100    pub struct CreateRelOpArgs<'a> {
11101        pub input: u32,
11102        pub src_col: i32,
11103        pub dst_col: i32,
11104        pub rel_type: Option<::flatbuffers::WIPOffset<&'a str>>,
11105        pub props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11106        pub schema: Option<
11107            ::flatbuffers::WIPOffset<
11108                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11109            >,
11110        >,
11111        pub out_var: Option<::flatbuffers::WIPOffset<&'a str>>,
11112    }
11113    impl<'a> Default for CreateRelOpArgs<'a> {
11114        #[inline]
11115        fn default() -> Self {
11116            CreateRelOpArgs {
11117                input: 0,
11118                src_col: 0,
11119                dst_col: 0,
11120                rel_type: None,
11121                props: None,
11122                schema: None,
11123                out_var: None,
11124            }
11125        }
11126    }
11127
11128    pub struct CreateRelOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11129        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11130        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11131    }
11132    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> CreateRelOpBuilder<'a, 'b, A> {
11133        #[inline]
11134        pub fn add_input(&mut self, input: u32) {
11135            self.fbb_.push_slot::<u32>(CreateRelOp::VT_INPUT, input, 0);
11136        }
11137        #[inline]
11138        pub fn add_src_col(&mut self, src_col: i32) {
11139            self.fbb_
11140                .push_slot::<i32>(CreateRelOp::VT_SRC_COL, src_col, 0);
11141        }
11142        #[inline]
11143        pub fn add_dst_col(&mut self, dst_col: i32) {
11144            self.fbb_
11145                .push_slot::<i32>(CreateRelOp::VT_DST_COL, dst_col, 0);
11146        }
11147        #[inline]
11148        pub fn add_rel_type(&mut self, rel_type: ::flatbuffers::WIPOffset<&'b str>) {
11149            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
11150                CreateRelOp::VT_REL_TYPE,
11151                rel_type,
11152            );
11153        }
11154        #[inline]
11155        pub fn add_props(&mut self, props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11156            self.fbb_
11157                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(CreateRelOp::VT_PROPS, props);
11158        }
11159        #[inline]
11160        pub fn add_schema(
11161            &mut self,
11162            schema: ::flatbuffers::WIPOffset<
11163                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11164            >,
11165        ) {
11166            self.fbb_
11167                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateRelOp::VT_SCHEMA, schema);
11168        }
11169        #[inline]
11170        pub fn add_out_var(&mut self, out_var: ::flatbuffers::WIPOffset<&'b str>) {
11171            self.fbb_
11172                .push_slot_always::<::flatbuffers::WIPOffset<_>>(CreateRelOp::VT_OUT_VAR, out_var);
11173        }
11174        #[inline]
11175        pub fn new(
11176            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11177        ) -> CreateRelOpBuilder<'a, 'b, A> {
11178            let start = _fbb.start_table();
11179            CreateRelOpBuilder {
11180                fbb_: _fbb,
11181                start_: start,
11182            }
11183        }
11184        #[inline]
11185        pub fn finish(self) -> ::flatbuffers::WIPOffset<CreateRelOp<'a>> {
11186            let o = self.fbb_.end_table(self.start_);
11187            ::flatbuffers::WIPOffset::new(o.value())
11188        }
11189    }
11190
11191    impl ::core::fmt::Debug for CreateRelOp<'_> {
11192        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11193            let mut ds = f.debug_struct("CreateRelOp");
11194            ds.field("input", &self.input());
11195            ds.field("src_col", &self.src_col());
11196            ds.field("dst_col", &self.dst_col());
11197            ds.field("rel_type", &self.rel_type());
11198            ds.field("props", &self.props());
11199            ds.field("schema", &self.schema());
11200            ds.field("out_var", &self.out_var());
11201            ds.finish()
11202        }
11203    }
11204    pub enum MergeOpOffset {}
11205    #[derive(Copy, Clone, PartialEq)]
11206
11207    pub struct MergeOp<'a> {
11208        pub _tab: ::flatbuffers::Table<'a>,
11209    }
11210
11211    impl<'a> ::flatbuffers::Follow<'a> for MergeOp<'a> {
11212        type Inner = MergeOp<'a>;
11213        #[inline]
11214        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11215            Self {
11216                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11217            }
11218        }
11219    }
11220
11221    impl<'a> MergeOp<'a> {
11222        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11223        pub const VT_PATTERN: ::flatbuffers::VOffsetT = 6;
11224        pub const VT_ON_CREATE_PROPS: ::flatbuffers::VOffsetT = 8;
11225        pub const VT_ON_MATCH_PROPS: ::flatbuffers::VOffsetT = 10;
11226        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
11227
11228        #[inline]
11229        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11230            MergeOp { _tab: table }
11231        }
11232        #[allow(unused_mut)]
11233        pub fn create<
11234            'bldr: 'args,
11235            'args: 'mut_bldr,
11236            'mut_bldr,
11237            A: ::flatbuffers::Allocator + 'bldr,
11238        >(
11239            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11240            args: &'args MergeOpArgs<'args>,
11241        ) -> ::flatbuffers::WIPOffset<MergeOp<'bldr>> {
11242            let mut builder = MergeOpBuilder::new(_fbb);
11243            if let Some(x) = args.schema {
11244                builder.add_schema(x);
11245            }
11246            if let Some(x) = args.on_match_props {
11247                builder.add_on_match_props(x);
11248            }
11249            if let Some(x) = args.on_create_props {
11250                builder.add_on_create_props(x);
11251            }
11252            if let Some(x) = args.pattern {
11253                builder.add_pattern(x);
11254            }
11255            builder.add_input(args.input);
11256            builder.finish()
11257        }
11258
11259        #[inline]
11260        pub fn input(&self) -> u32 {
11261            // Safety:
11262            // Created from valid Table for this object
11263            // which contains a valid value in this slot
11264            unsafe { self._tab.get::<u32>(MergeOp::VT_INPUT, Some(0)).unwrap() }
11265        }
11266        #[inline]
11267        pub fn pattern(&self) -> Option<Expr<'a>> {
11268            // Safety:
11269            // Created from valid Table for this object
11270            // which contains a valid value in this slot
11271            unsafe {
11272                self._tab
11273                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_PATTERN, None)
11274            }
11275        }
11276        #[inline]
11277        pub fn on_create_props(&self) -> Option<Expr<'a>> {
11278            // Safety:
11279            // Created from valid Table for this object
11280            // which contains a valid value in this slot
11281            unsafe {
11282                self._tab
11283                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_ON_CREATE_PROPS, None)
11284            }
11285        }
11286        #[inline]
11287        pub fn on_match_props(&self) -> Option<Expr<'a>> {
11288            // Safety:
11289            // Created from valid Table for this object
11290            // which contains a valid value in this slot
11291            unsafe {
11292                self._tab
11293                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(MergeOp::VT_ON_MATCH_PROPS, None)
11294            }
11295        }
11296        #[inline]
11297        pub fn schema(
11298            &self,
11299        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11300            // Safety:
11301            // Created from valid Table for this object
11302            // which contains a valid value in this slot
11303            unsafe {
11304                self._tab.get::<::flatbuffers::ForwardsUOffset<
11305                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11306                >>(MergeOp::VT_SCHEMA, None)
11307            }
11308        }
11309    }
11310
11311    impl ::flatbuffers::Verifiable for MergeOp<'_> {
11312        #[inline]
11313        fn run_verifier(
11314            v: &mut ::flatbuffers::Verifier,
11315            pos: usize,
11316        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11317            v.visit_table(pos)?
11318                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11319                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11320                    "pattern",
11321                    Self::VT_PATTERN,
11322                    false,
11323                )?
11324                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11325                    "on_create_props",
11326                    Self::VT_ON_CREATE_PROPS,
11327                    false,
11328                )?
11329                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11330                    "on_match_props",
11331                    Self::VT_ON_MATCH_PROPS,
11332                    false,
11333                )?
11334                .visit_field::<::flatbuffers::ForwardsUOffset<
11335                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11336                >>("schema", Self::VT_SCHEMA, false)?
11337                .finish();
11338            Ok(())
11339        }
11340    }
11341    pub struct MergeOpArgs<'a> {
11342        pub input: u32,
11343        pub pattern: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11344        pub on_create_props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11345        pub on_match_props: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11346        pub schema: Option<
11347            ::flatbuffers::WIPOffset<
11348                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11349            >,
11350        >,
11351    }
11352    impl<'a> Default for MergeOpArgs<'a> {
11353        #[inline]
11354        fn default() -> Self {
11355            MergeOpArgs {
11356                input: 0,
11357                pattern: None,
11358                on_create_props: None,
11359                on_match_props: None,
11360                schema: None,
11361            }
11362        }
11363    }
11364
11365    pub struct MergeOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11366        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11367        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11368    }
11369    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> MergeOpBuilder<'a, 'b, A> {
11370        #[inline]
11371        pub fn add_input(&mut self, input: u32) {
11372            self.fbb_.push_slot::<u32>(MergeOp::VT_INPUT, input, 0);
11373        }
11374        #[inline]
11375        pub fn add_pattern(&mut self, pattern: ::flatbuffers::WIPOffset<Expr<'b>>) {
11376            self.fbb_
11377                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(MergeOp::VT_PATTERN, pattern);
11378        }
11379        #[inline]
11380        pub fn add_on_create_props(&mut self, on_create_props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11381            self.fbb_
11382                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11383                    MergeOp::VT_ON_CREATE_PROPS,
11384                    on_create_props,
11385                );
11386        }
11387        #[inline]
11388        pub fn add_on_match_props(&mut self, on_match_props: ::flatbuffers::WIPOffset<Expr<'b>>) {
11389            self.fbb_
11390                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11391                    MergeOp::VT_ON_MATCH_PROPS,
11392                    on_match_props,
11393                );
11394        }
11395        #[inline]
11396        pub fn add_schema(
11397            &mut self,
11398            schema: ::flatbuffers::WIPOffset<
11399                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11400            >,
11401        ) {
11402            self.fbb_
11403                .push_slot_always::<::flatbuffers::WIPOffset<_>>(MergeOp::VT_SCHEMA, schema);
11404        }
11405        #[inline]
11406        pub fn new(
11407            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11408        ) -> MergeOpBuilder<'a, 'b, A> {
11409            let start = _fbb.start_table();
11410            MergeOpBuilder {
11411                fbb_: _fbb,
11412                start_: start,
11413            }
11414        }
11415        #[inline]
11416        pub fn finish(self) -> ::flatbuffers::WIPOffset<MergeOp<'a>> {
11417            let o = self.fbb_.end_table(self.start_);
11418            ::flatbuffers::WIPOffset::new(o.value())
11419        }
11420    }
11421
11422    impl ::core::fmt::Debug for MergeOp<'_> {
11423        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11424            let mut ds = f.debug_struct("MergeOp");
11425            ds.field("input", &self.input());
11426            ds.field("pattern", &self.pattern());
11427            ds.field("on_create_props", &self.on_create_props());
11428            ds.field("on_match_props", &self.on_match_props());
11429            ds.field("schema", &self.schema());
11430            ds.finish()
11431        }
11432    }
11433    pub enum DeleteOpOffset {}
11434    #[derive(Copy, Clone, PartialEq)]
11435
11436    pub struct DeleteOp<'a> {
11437        pub _tab: ::flatbuffers::Table<'a>,
11438    }
11439
11440    impl<'a> ::flatbuffers::Follow<'a> for DeleteOp<'a> {
11441        type Inner = DeleteOp<'a>;
11442        #[inline]
11443        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11444            Self {
11445                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11446            }
11447        }
11448    }
11449
11450    impl<'a> DeleteOp<'a> {
11451        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11452        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11453        pub const VT_DETACH: ::flatbuffers::VOffsetT = 8;
11454        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
11455
11456        #[inline]
11457        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11458            DeleteOp { _tab: table }
11459        }
11460        #[allow(unused_mut)]
11461        pub fn create<
11462            'bldr: 'args,
11463            'args: 'mut_bldr,
11464            'mut_bldr,
11465            A: ::flatbuffers::Allocator + 'bldr,
11466        >(
11467            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11468            args: &'args DeleteOpArgs<'args>,
11469        ) -> ::flatbuffers::WIPOffset<DeleteOp<'bldr>> {
11470            let mut builder = DeleteOpBuilder::new(_fbb);
11471            if let Some(x) = args.schema {
11472                builder.add_schema(x);
11473            }
11474            builder.add_target_col(args.target_col);
11475            builder.add_input(args.input);
11476            builder.add_detach(args.detach);
11477            builder.finish()
11478        }
11479
11480        #[inline]
11481        pub fn input(&self) -> u32 {
11482            // Safety:
11483            // Created from valid Table for this object
11484            // which contains a valid value in this slot
11485            unsafe { self._tab.get::<u32>(DeleteOp::VT_INPUT, Some(0)).unwrap() }
11486        }
11487        #[inline]
11488        pub fn target_col(&self) -> i32 {
11489            // Safety:
11490            // Created from valid Table for this object
11491            // which contains a valid value in this slot
11492            unsafe {
11493                self._tab
11494                    .get::<i32>(DeleteOp::VT_TARGET_COL, Some(0))
11495                    .unwrap()
11496            }
11497        }
11498        #[inline]
11499        pub fn detach(&self) -> bool {
11500            // Safety:
11501            // Created from valid Table for this object
11502            // which contains a valid value in this slot
11503            unsafe {
11504                self._tab
11505                    .get::<bool>(DeleteOp::VT_DETACH, Some(false))
11506                    .unwrap()
11507            }
11508        }
11509        #[inline]
11510        pub fn schema(
11511            &self,
11512        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11513            // Safety:
11514            // Created from valid Table for this object
11515            // which contains a valid value in this slot
11516            unsafe {
11517                self._tab.get::<::flatbuffers::ForwardsUOffset<
11518                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11519                >>(DeleteOp::VT_SCHEMA, None)
11520            }
11521        }
11522    }
11523
11524    impl ::flatbuffers::Verifiable for DeleteOp<'_> {
11525        #[inline]
11526        fn run_verifier(
11527            v: &mut ::flatbuffers::Verifier,
11528            pos: usize,
11529        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11530            v.visit_table(pos)?
11531                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11532                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11533                .visit_field::<bool>("detach", Self::VT_DETACH, false)?
11534                .visit_field::<::flatbuffers::ForwardsUOffset<
11535                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11536                >>("schema", Self::VT_SCHEMA, false)?
11537                .finish();
11538            Ok(())
11539        }
11540    }
11541    pub struct DeleteOpArgs<'a> {
11542        pub input: u32,
11543        pub target_col: i32,
11544        pub detach: bool,
11545        pub schema: Option<
11546            ::flatbuffers::WIPOffset<
11547                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11548            >,
11549        >,
11550    }
11551    impl<'a> Default for DeleteOpArgs<'a> {
11552        #[inline]
11553        fn default() -> Self {
11554            DeleteOpArgs {
11555                input: 0,
11556                target_col: 0,
11557                detach: false,
11558                schema: None,
11559            }
11560        }
11561    }
11562
11563    pub struct DeleteOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11564        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11565        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11566    }
11567    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> DeleteOpBuilder<'a, 'b, A> {
11568        #[inline]
11569        pub fn add_input(&mut self, input: u32) {
11570            self.fbb_.push_slot::<u32>(DeleteOp::VT_INPUT, input, 0);
11571        }
11572        #[inline]
11573        pub fn add_target_col(&mut self, target_col: i32) {
11574            self.fbb_
11575                .push_slot::<i32>(DeleteOp::VT_TARGET_COL, target_col, 0);
11576        }
11577        #[inline]
11578        pub fn add_detach(&mut self, detach: bool) {
11579            self.fbb_
11580                .push_slot::<bool>(DeleteOp::VT_DETACH, detach, false);
11581        }
11582        #[inline]
11583        pub fn add_schema(
11584            &mut self,
11585            schema: ::flatbuffers::WIPOffset<
11586                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11587            >,
11588        ) {
11589            self.fbb_
11590                .push_slot_always::<::flatbuffers::WIPOffset<_>>(DeleteOp::VT_SCHEMA, schema);
11591        }
11592        #[inline]
11593        pub fn new(
11594            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11595        ) -> DeleteOpBuilder<'a, 'b, A> {
11596            let start = _fbb.start_table();
11597            DeleteOpBuilder {
11598                fbb_: _fbb,
11599                start_: start,
11600            }
11601        }
11602        #[inline]
11603        pub fn finish(self) -> ::flatbuffers::WIPOffset<DeleteOp<'a>> {
11604            let o = self.fbb_.end_table(self.start_);
11605            ::flatbuffers::WIPOffset::new(o.value())
11606        }
11607    }
11608
11609    impl ::core::fmt::Debug for DeleteOp<'_> {
11610        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11611            let mut ds = f.debug_struct("DeleteOp");
11612            ds.field("input", &self.input());
11613            ds.field("target_col", &self.target_col());
11614            ds.field("detach", &self.detach());
11615            ds.field("schema", &self.schema());
11616            ds.finish()
11617        }
11618    }
11619    pub enum SetPropertyOpOffset {}
11620    #[derive(Copy, Clone, PartialEq)]
11621
11622    pub struct SetPropertyOp<'a> {
11623        pub _tab: ::flatbuffers::Table<'a>,
11624    }
11625
11626    impl<'a> ::flatbuffers::Follow<'a> for SetPropertyOp<'a> {
11627        type Inner = SetPropertyOp<'a>;
11628        #[inline]
11629        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11630            Self {
11631                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11632            }
11633        }
11634    }
11635
11636    impl<'a> SetPropertyOp<'a> {
11637        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11638        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11639        pub const VT_KEY: ::flatbuffers::VOffsetT = 8;
11640        pub const VT_VALUE_EXPR: ::flatbuffers::VOffsetT = 10;
11641        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 12;
11642
11643        #[inline]
11644        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11645            SetPropertyOp { _tab: table }
11646        }
11647        #[allow(unused_mut)]
11648        pub fn create<
11649            'bldr: 'args,
11650            'args: 'mut_bldr,
11651            'mut_bldr,
11652            A: ::flatbuffers::Allocator + 'bldr,
11653        >(
11654            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11655            args: &'args SetPropertyOpArgs<'args>,
11656        ) -> ::flatbuffers::WIPOffset<SetPropertyOp<'bldr>> {
11657            let mut builder = SetPropertyOpBuilder::new(_fbb);
11658            if let Some(x) = args.schema {
11659                builder.add_schema(x);
11660            }
11661            if let Some(x) = args.value_expr {
11662                builder.add_value_expr(x);
11663            }
11664            if let Some(x) = args.key {
11665                builder.add_key(x);
11666            }
11667            builder.add_target_col(args.target_col);
11668            builder.add_input(args.input);
11669            builder.finish()
11670        }
11671
11672        #[inline]
11673        pub fn input(&self) -> u32 {
11674            // Safety:
11675            // Created from valid Table for this object
11676            // which contains a valid value in this slot
11677            unsafe {
11678                self._tab
11679                    .get::<u32>(SetPropertyOp::VT_INPUT, Some(0))
11680                    .unwrap()
11681            }
11682        }
11683        #[inline]
11684        pub fn target_col(&self) -> i32 {
11685            // Safety:
11686            // Created from valid Table for this object
11687            // which contains a valid value in this slot
11688            unsafe {
11689                self._tab
11690                    .get::<i32>(SetPropertyOp::VT_TARGET_COL, Some(0))
11691                    .unwrap()
11692            }
11693        }
11694        #[inline]
11695        pub fn key(&self) -> Option<&'a str> {
11696            // Safety:
11697            // Created from valid Table for this object
11698            // which contains a valid value in this slot
11699            unsafe {
11700                self._tab
11701                    .get::<::flatbuffers::ForwardsUOffset<&str>>(SetPropertyOp::VT_KEY, None)
11702            }
11703        }
11704        #[inline]
11705        pub fn value_expr(&self) -> Option<Expr<'a>> {
11706            // Safety:
11707            // Created from valid Table for this object
11708            // which contains a valid value in this slot
11709            unsafe {
11710                self._tab
11711                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(SetPropertyOp::VT_VALUE_EXPR, None)
11712            }
11713        }
11714        #[inline]
11715        pub fn schema(
11716            &self,
11717        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11718            // Safety:
11719            // Created from valid Table for this object
11720            // which contains a valid value in this slot
11721            unsafe {
11722                self._tab.get::<::flatbuffers::ForwardsUOffset<
11723                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11724                >>(SetPropertyOp::VT_SCHEMA, None)
11725            }
11726        }
11727    }
11728
11729    impl ::flatbuffers::Verifiable for SetPropertyOp<'_> {
11730        #[inline]
11731        fn run_verifier(
11732            v: &mut ::flatbuffers::Verifier,
11733            pos: usize,
11734        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11735            v.visit_table(pos)?
11736                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11737                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11738                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
11739                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
11740                    "value_expr",
11741                    Self::VT_VALUE_EXPR,
11742                    false,
11743                )?
11744                .visit_field::<::flatbuffers::ForwardsUOffset<
11745                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11746                >>("schema", Self::VT_SCHEMA, false)?
11747                .finish();
11748            Ok(())
11749        }
11750    }
11751    pub struct SetPropertyOpArgs<'a> {
11752        pub input: u32,
11753        pub target_col: i32,
11754        pub key: Option<::flatbuffers::WIPOffset<&'a str>>,
11755        pub value_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
11756        pub schema: Option<
11757            ::flatbuffers::WIPOffset<
11758                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11759            >,
11760        >,
11761    }
11762    impl<'a> Default for SetPropertyOpArgs<'a> {
11763        #[inline]
11764        fn default() -> Self {
11765            SetPropertyOpArgs {
11766                input: 0,
11767                target_col: 0,
11768                key: None,
11769                value_expr: None,
11770                schema: None,
11771            }
11772        }
11773    }
11774
11775    pub struct SetPropertyOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11776        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11777        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11778    }
11779    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> SetPropertyOpBuilder<'a, 'b, A> {
11780        #[inline]
11781        pub fn add_input(&mut self, input: u32) {
11782            self.fbb_
11783                .push_slot::<u32>(SetPropertyOp::VT_INPUT, input, 0);
11784        }
11785        #[inline]
11786        pub fn add_target_col(&mut self, target_col: i32) {
11787            self.fbb_
11788                .push_slot::<i32>(SetPropertyOp::VT_TARGET_COL, target_col, 0);
11789        }
11790        #[inline]
11791        pub fn add_key(&mut self, key: ::flatbuffers::WIPOffset<&'b str>) {
11792            self.fbb_
11793                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SetPropertyOp::VT_KEY, key);
11794        }
11795        #[inline]
11796        pub fn add_value_expr(&mut self, value_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
11797            self.fbb_
11798                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
11799                    SetPropertyOp::VT_VALUE_EXPR,
11800                    value_expr,
11801                );
11802        }
11803        #[inline]
11804        pub fn add_schema(
11805            &mut self,
11806            schema: ::flatbuffers::WIPOffset<
11807                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
11808            >,
11809        ) {
11810            self.fbb_
11811                .push_slot_always::<::flatbuffers::WIPOffset<_>>(SetPropertyOp::VT_SCHEMA, schema);
11812        }
11813        #[inline]
11814        pub fn new(
11815            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11816        ) -> SetPropertyOpBuilder<'a, 'b, A> {
11817            let start = _fbb.start_table();
11818            SetPropertyOpBuilder {
11819                fbb_: _fbb,
11820                start_: start,
11821            }
11822        }
11823        #[inline]
11824        pub fn finish(self) -> ::flatbuffers::WIPOffset<SetPropertyOp<'a>> {
11825            let o = self.fbb_.end_table(self.start_);
11826            ::flatbuffers::WIPOffset::new(o.value())
11827        }
11828    }
11829
11830    impl ::core::fmt::Debug for SetPropertyOp<'_> {
11831        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11832            let mut ds = f.debug_struct("SetPropertyOp");
11833            ds.field("input", &self.input());
11834            ds.field("target_col", &self.target_col());
11835            ds.field("key", &self.key());
11836            ds.field("value_expr", &self.value_expr());
11837            ds.field("schema", &self.schema());
11838            ds.finish()
11839        }
11840    }
11841    pub enum RemovePropertyOpOffset {}
11842    #[derive(Copy, Clone, PartialEq)]
11843
11844    pub struct RemovePropertyOp<'a> {
11845        pub _tab: ::flatbuffers::Table<'a>,
11846    }
11847
11848    impl<'a> ::flatbuffers::Follow<'a> for RemovePropertyOp<'a> {
11849        type Inner = RemovePropertyOp<'a>;
11850        #[inline]
11851        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11852            Self {
11853                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
11854            }
11855        }
11856    }
11857
11858    impl<'a> RemovePropertyOp<'a> {
11859        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
11860        pub const VT_TARGET_COL: ::flatbuffers::VOffsetT = 6;
11861        pub const VT_KEY: ::flatbuffers::VOffsetT = 8;
11862        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
11863
11864        #[inline]
11865        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
11866            RemovePropertyOp { _tab: table }
11867        }
11868        #[allow(unused_mut)]
11869        pub fn create<
11870            'bldr: 'args,
11871            'args: 'mut_bldr,
11872            'mut_bldr,
11873            A: ::flatbuffers::Allocator + 'bldr,
11874        >(
11875            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
11876            args: &'args RemovePropertyOpArgs<'args>,
11877        ) -> ::flatbuffers::WIPOffset<RemovePropertyOp<'bldr>> {
11878            let mut builder = RemovePropertyOpBuilder::new(_fbb);
11879            if let Some(x) = args.schema {
11880                builder.add_schema(x);
11881            }
11882            if let Some(x) = args.key {
11883                builder.add_key(x);
11884            }
11885            builder.add_target_col(args.target_col);
11886            builder.add_input(args.input);
11887            builder.finish()
11888        }
11889
11890        #[inline]
11891        pub fn input(&self) -> u32 {
11892            // Safety:
11893            // Created from valid Table for this object
11894            // which contains a valid value in this slot
11895            unsafe {
11896                self._tab
11897                    .get::<u32>(RemovePropertyOp::VT_INPUT, Some(0))
11898                    .unwrap()
11899            }
11900        }
11901        #[inline]
11902        pub fn target_col(&self) -> i32 {
11903            // Safety:
11904            // Created from valid Table for this object
11905            // which contains a valid value in this slot
11906            unsafe {
11907                self._tab
11908                    .get::<i32>(RemovePropertyOp::VT_TARGET_COL, Some(0))
11909                    .unwrap()
11910            }
11911        }
11912        #[inline]
11913        pub fn key(&self) -> Option<&'a str> {
11914            // Safety:
11915            // Created from valid Table for this object
11916            // which contains a valid value in this slot
11917            unsafe {
11918                self._tab
11919                    .get::<::flatbuffers::ForwardsUOffset<&str>>(RemovePropertyOp::VT_KEY, None)
11920            }
11921        }
11922        #[inline]
11923        pub fn schema(
11924            &self,
11925        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
11926            // Safety:
11927            // Created from valid Table for this object
11928            // which contains a valid value in this slot
11929            unsafe {
11930                self._tab.get::<::flatbuffers::ForwardsUOffset<
11931                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
11932                >>(RemovePropertyOp::VT_SCHEMA, None)
11933            }
11934        }
11935    }
11936
11937    impl ::flatbuffers::Verifiable for RemovePropertyOp<'_> {
11938        #[inline]
11939        fn run_verifier(
11940            v: &mut ::flatbuffers::Verifier,
11941            pos: usize,
11942        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
11943            v.visit_table(pos)?
11944                .visit_field::<u32>("input", Self::VT_INPUT, false)?
11945                .visit_field::<i32>("target_col", Self::VT_TARGET_COL, false)?
11946                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
11947                .visit_field::<::flatbuffers::ForwardsUOffset<
11948                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
11949                >>("schema", Self::VT_SCHEMA, false)?
11950                .finish();
11951            Ok(())
11952        }
11953    }
11954    pub struct RemovePropertyOpArgs<'a> {
11955        pub input: u32,
11956        pub target_col: i32,
11957        pub key: Option<::flatbuffers::WIPOffset<&'a str>>,
11958        pub schema: Option<
11959            ::flatbuffers::WIPOffset<
11960                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
11961            >,
11962        >,
11963    }
11964    impl<'a> Default for RemovePropertyOpArgs<'a> {
11965        #[inline]
11966        fn default() -> Self {
11967            RemovePropertyOpArgs {
11968                input: 0,
11969                target_col: 0,
11970                key: None,
11971                schema: None,
11972            }
11973        }
11974    }
11975
11976    pub struct RemovePropertyOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
11977        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
11978        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
11979    }
11980    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> RemovePropertyOpBuilder<'a, 'b, A> {
11981        #[inline]
11982        pub fn add_input(&mut self, input: u32) {
11983            self.fbb_
11984                .push_slot::<u32>(RemovePropertyOp::VT_INPUT, input, 0);
11985        }
11986        #[inline]
11987        pub fn add_target_col(&mut self, target_col: i32) {
11988            self.fbb_
11989                .push_slot::<i32>(RemovePropertyOp::VT_TARGET_COL, target_col, 0);
11990        }
11991        #[inline]
11992        pub fn add_key(&mut self, key: ::flatbuffers::WIPOffset<&'b str>) {
11993            self.fbb_
11994                .push_slot_always::<::flatbuffers::WIPOffset<_>>(RemovePropertyOp::VT_KEY, key);
11995        }
11996        #[inline]
11997        pub fn add_schema(
11998            &mut self,
11999            schema: ::flatbuffers::WIPOffset<
12000                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
12001            >,
12002        ) {
12003            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
12004                RemovePropertyOp::VT_SCHEMA,
12005                schema,
12006            );
12007        }
12008        #[inline]
12009        pub fn new(
12010            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12011        ) -> RemovePropertyOpBuilder<'a, 'b, A> {
12012            let start = _fbb.start_table();
12013            RemovePropertyOpBuilder {
12014                fbb_: _fbb,
12015                start_: start,
12016            }
12017        }
12018        #[inline]
12019        pub fn finish(self) -> ::flatbuffers::WIPOffset<RemovePropertyOp<'a>> {
12020            let o = self.fbb_.end_table(self.start_);
12021            ::flatbuffers::WIPOffset::new(o.value())
12022        }
12023    }
12024
12025    impl ::core::fmt::Debug for RemovePropertyOp<'_> {
12026        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12027            let mut ds = f.debug_struct("RemovePropertyOp");
12028            ds.field("input", &self.input());
12029            ds.field("target_col", &self.target_col());
12030            ds.field("key", &self.key());
12031            ds.field("schema", &self.schema());
12032            ds.finish()
12033        }
12034    }
12035    pub enum VectorScanOpOffset {}
12036    #[derive(Copy, Clone, PartialEq)]
12037
12038    pub struct VectorScanOp<'a> {
12039        pub _tab: ::flatbuffers::Table<'a>,
12040    }
12041
12042    impl<'a> ::flatbuffers::Follow<'a> for VectorScanOp<'a> {
12043        type Inner = VectorScanOp<'a>;
12044        #[inline]
12045        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12046            Self {
12047                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12048            }
12049        }
12050    }
12051
12052    impl<'a> VectorScanOp<'a> {
12053        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12054        pub const VT_COLLECTION: ::flatbuffers::VOffsetT = 6;
12055        pub const VT_QUERY_VECTOR: ::flatbuffers::VOffsetT = 8;
12056        pub const VT_METRIC: ::flatbuffers::VOffsetT = 10;
12057        pub const VT_TOP_K: ::flatbuffers::VOffsetT = 12;
12058        pub const VT_APPROX_HINT: ::flatbuffers::VOffsetT = 14;
12059        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 16;
12060
12061        #[inline]
12062        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12063            VectorScanOp { _tab: table }
12064        }
12065        #[allow(unused_mut)]
12066        pub fn create<
12067            'bldr: 'args,
12068            'args: 'mut_bldr,
12069            'mut_bldr,
12070            A: ::flatbuffers::Allocator + 'bldr,
12071        >(
12072            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12073            args: &'args VectorScanOpArgs<'args>,
12074        ) -> ::flatbuffers::WIPOffset<VectorScanOp<'bldr>> {
12075            let mut builder = VectorScanOpBuilder::new(_fbb);
12076            if let Some(x) = args.schema {
12077                builder.add_schema(x);
12078            }
12079            builder.add_top_k(args.top_k);
12080            if let Some(x) = args.query_vector {
12081                builder.add_query_vector(x);
12082            }
12083            if let Some(x) = args.collection {
12084                builder.add_collection(x);
12085            }
12086            builder.add_input(args.input);
12087            builder.add_approx_hint(args.approx_hint);
12088            builder.add_metric(args.metric);
12089            builder.finish()
12090        }
12091
12092        #[inline]
12093        pub fn input(&self) -> u32 {
12094            // Safety:
12095            // Created from valid Table for this object
12096            // which contains a valid value in this slot
12097            unsafe {
12098                self._tab
12099                    .get::<u32>(VectorScanOp::VT_INPUT, Some(0))
12100                    .unwrap()
12101            }
12102        }
12103        #[inline]
12104        pub fn collection(&self) -> Option<&'a str> {
12105            // Safety:
12106            // Created from valid Table for this object
12107            // which contains a valid value in this slot
12108            unsafe {
12109                self._tab
12110                    .get::<::flatbuffers::ForwardsUOffset<&str>>(VectorScanOp::VT_COLLECTION, None)
12111            }
12112        }
12113        #[inline]
12114        pub fn query_vector(&self) -> Option<Expr<'a>> {
12115            // Safety:
12116            // Created from valid Table for this object
12117            // which contains a valid value in this slot
12118            unsafe {
12119                self._tab.get::<::flatbuffers::ForwardsUOffset<Expr>>(
12120                    VectorScanOp::VT_QUERY_VECTOR,
12121                    None,
12122                )
12123            }
12124        }
12125        #[inline]
12126        pub fn metric(&self) -> VectorMetric {
12127            // Safety:
12128            // Created from valid Table for this object
12129            // which contains a valid value in this slot
12130            unsafe {
12131                self._tab
12132                    .get::<VectorMetric>(VectorScanOp::VT_METRIC, Some(VectorMetric::cosine))
12133                    .unwrap()
12134            }
12135        }
12136        #[inline]
12137        pub fn top_k(&self) -> u32 {
12138            // Safety:
12139            // Created from valid Table for this object
12140            // which contains a valid value in this slot
12141            unsafe {
12142                self._tab
12143                    .get::<u32>(VectorScanOp::VT_TOP_K, Some(0))
12144                    .unwrap()
12145            }
12146        }
12147        #[inline]
12148        pub fn approx_hint(&self) -> bool {
12149            // Safety:
12150            // Created from valid Table for this object
12151            // which contains a valid value in this slot
12152            unsafe {
12153                self._tab
12154                    .get::<bool>(VectorScanOp::VT_APPROX_HINT, Some(true))
12155                    .unwrap()
12156            }
12157        }
12158        #[inline]
12159        pub fn schema(
12160            &self,
12161        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
12162            // Safety:
12163            // Created from valid Table for this object
12164            // which contains a valid value in this slot
12165            unsafe {
12166                self._tab.get::<::flatbuffers::ForwardsUOffset<
12167                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
12168                >>(VectorScanOp::VT_SCHEMA, None)
12169            }
12170        }
12171    }
12172
12173    impl ::flatbuffers::Verifiable for VectorScanOp<'_> {
12174        #[inline]
12175        fn run_verifier(
12176            v: &mut ::flatbuffers::Verifier,
12177            pos: usize,
12178        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12179            v.visit_table(pos)?
12180                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12181                .visit_field::<::flatbuffers::ForwardsUOffset<&str>>(
12182                    "collection",
12183                    Self::VT_COLLECTION,
12184                    false,
12185                )?
12186                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
12187                    "query_vector",
12188                    Self::VT_QUERY_VECTOR,
12189                    false,
12190                )?
12191                .visit_field::<VectorMetric>("metric", Self::VT_METRIC, false)?
12192                .visit_field::<u32>("top_k", Self::VT_TOP_K, false)?
12193                .visit_field::<bool>("approx_hint", Self::VT_APPROX_HINT, false)?
12194                .visit_field::<::flatbuffers::ForwardsUOffset<
12195                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
12196                >>("schema", Self::VT_SCHEMA, false)?
12197                .finish();
12198            Ok(())
12199        }
12200    }
12201    pub struct VectorScanOpArgs<'a> {
12202        pub input: u32,
12203        pub collection: Option<::flatbuffers::WIPOffset<&'a str>>,
12204        pub query_vector: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
12205        pub metric: VectorMetric,
12206        pub top_k: u32,
12207        pub approx_hint: bool,
12208        pub schema: Option<
12209            ::flatbuffers::WIPOffset<
12210                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
12211            >,
12212        >,
12213    }
12214    impl<'a> Default for VectorScanOpArgs<'a> {
12215        #[inline]
12216        fn default() -> Self {
12217            VectorScanOpArgs {
12218                input: 0,
12219                collection: None,
12220                query_vector: None,
12221                metric: VectorMetric::cosine,
12222                top_k: 0,
12223                approx_hint: true,
12224                schema: None,
12225            }
12226        }
12227    }
12228
12229    pub struct VectorScanOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12230        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12231        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12232    }
12233    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> VectorScanOpBuilder<'a, 'b, A> {
12234        #[inline]
12235        pub fn add_input(&mut self, input: u32) {
12236            self.fbb_.push_slot::<u32>(VectorScanOp::VT_INPUT, input, 0);
12237        }
12238        #[inline]
12239        pub fn add_collection(&mut self, collection: ::flatbuffers::WIPOffset<&'b str>) {
12240            self.fbb_.push_slot_always::<::flatbuffers::WIPOffset<_>>(
12241                VectorScanOp::VT_COLLECTION,
12242                collection,
12243            );
12244        }
12245        #[inline]
12246        pub fn add_query_vector(&mut self, query_vector: ::flatbuffers::WIPOffset<Expr<'b>>) {
12247            self.fbb_
12248                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
12249                    VectorScanOp::VT_QUERY_VECTOR,
12250                    query_vector,
12251                );
12252        }
12253        #[inline]
12254        pub fn add_metric(&mut self, metric: VectorMetric) {
12255            self.fbb_.push_slot::<VectorMetric>(
12256                VectorScanOp::VT_METRIC,
12257                metric,
12258                VectorMetric::cosine,
12259            );
12260        }
12261        #[inline]
12262        pub fn add_top_k(&mut self, top_k: u32) {
12263            self.fbb_.push_slot::<u32>(VectorScanOp::VT_TOP_K, top_k, 0);
12264        }
12265        #[inline]
12266        pub fn add_approx_hint(&mut self, approx_hint: bool) {
12267            self.fbb_
12268                .push_slot::<bool>(VectorScanOp::VT_APPROX_HINT, approx_hint, true);
12269        }
12270        #[inline]
12271        pub fn add_schema(
12272            &mut self,
12273            schema: ::flatbuffers::WIPOffset<
12274                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
12275            >,
12276        ) {
12277            self.fbb_
12278                .push_slot_always::<::flatbuffers::WIPOffset<_>>(VectorScanOp::VT_SCHEMA, schema);
12279        }
12280        #[inline]
12281        pub fn new(
12282            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12283        ) -> VectorScanOpBuilder<'a, 'b, A> {
12284            let start = _fbb.start_table();
12285            VectorScanOpBuilder {
12286                fbb_: _fbb,
12287                start_: start,
12288            }
12289        }
12290        #[inline]
12291        pub fn finish(self) -> ::flatbuffers::WIPOffset<VectorScanOp<'a>> {
12292            let o = self.fbb_.end_table(self.start_);
12293            ::flatbuffers::WIPOffset::new(o.value())
12294        }
12295    }
12296
12297    impl ::core::fmt::Debug for VectorScanOp<'_> {
12298        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12299            let mut ds = f.debug_struct("VectorScanOp");
12300            ds.field("input", &self.input());
12301            ds.field("collection", &self.collection());
12302            ds.field("query_vector", &self.query_vector());
12303            ds.field("metric", &self.metric());
12304            ds.field("top_k", &self.top_k());
12305            ds.field("approx_hint", &self.approx_hint());
12306            ds.field("schema", &self.schema());
12307            ds.finish()
12308        }
12309    }
12310    pub enum RerankOpOffset {}
12311    #[derive(Copy, Clone, PartialEq)]
12312
12313    pub struct RerankOp<'a> {
12314        pub _tab: ::flatbuffers::Table<'a>,
12315    }
12316
12317    impl<'a> ::flatbuffers::Follow<'a> for RerankOp<'a> {
12318        type Inner = RerankOp<'a>;
12319        #[inline]
12320        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12321            Self {
12322                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12323            }
12324        }
12325    }
12326
12327    impl<'a> RerankOp<'a> {
12328        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12329        pub const VT_SCORE_EXPR: ::flatbuffers::VOffsetT = 6;
12330        pub const VT_TOP_K: ::flatbuffers::VOffsetT = 8;
12331        pub const VT_SCHEMA: ::flatbuffers::VOffsetT = 10;
12332
12333        #[inline]
12334        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12335            RerankOp { _tab: table }
12336        }
12337        #[allow(unused_mut)]
12338        pub fn create<
12339            'bldr: 'args,
12340            'args: 'mut_bldr,
12341            'mut_bldr,
12342            A: ::flatbuffers::Allocator + 'bldr,
12343        >(
12344            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12345            args: &'args RerankOpArgs<'args>,
12346        ) -> ::flatbuffers::WIPOffset<RerankOp<'bldr>> {
12347            let mut builder = RerankOpBuilder::new(_fbb);
12348            if let Some(x) = args.schema {
12349                builder.add_schema(x);
12350            }
12351            builder.add_top_k(args.top_k);
12352            if let Some(x) = args.score_expr {
12353                builder.add_score_expr(x);
12354            }
12355            builder.add_input(args.input);
12356            builder.finish()
12357        }
12358
12359        #[inline]
12360        pub fn input(&self) -> u32 {
12361            // Safety:
12362            // Created from valid Table for this object
12363            // which contains a valid value in this slot
12364            unsafe { self._tab.get::<u32>(RerankOp::VT_INPUT, Some(0)).unwrap() }
12365        }
12366        #[inline]
12367        pub fn score_expr(&self) -> Option<Expr<'a>> {
12368            // Safety:
12369            // Created from valid Table for this object
12370            // which contains a valid value in this slot
12371            unsafe {
12372                self._tab
12373                    .get::<::flatbuffers::ForwardsUOffset<Expr>>(RerankOp::VT_SCORE_EXPR, None)
12374            }
12375        }
12376        #[inline]
12377        pub fn top_k(&self) -> u32 {
12378            // Safety:
12379            // Created from valid Table for this object
12380            // which contains a valid value in this slot
12381            unsafe { self._tab.get::<u32>(RerankOp::VT_TOP_K, Some(0)).unwrap() }
12382        }
12383        #[inline]
12384        pub fn schema(
12385            &self,
12386        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>> {
12387            // Safety:
12388            // Created from valid Table for this object
12389            // which contains a valid value in this slot
12390            unsafe {
12391                self._tab.get::<::flatbuffers::ForwardsUOffset<
12392                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef>>,
12393                >>(RerankOp::VT_SCHEMA, None)
12394            }
12395        }
12396    }
12397
12398    impl ::flatbuffers::Verifiable for RerankOp<'_> {
12399        #[inline]
12400        fn run_verifier(
12401            v: &mut ::flatbuffers::Verifier,
12402            pos: usize,
12403        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12404            v.visit_table(pos)?
12405                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12406                .visit_field::<::flatbuffers::ForwardsUOffset<Expr>>(
12407                    "score_expr",
12408                    Self::VT_SCORE_EXPR,
12409                    false,
12410                )?
12411                .visit_field::<u32>("top_k", Self::VT_TOP_K, false)?
12412                .visit_field::<::flatbuffers::ForwardsUOffset<
12413                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<ColDef>>,
12414                >>("schema", Self::VT_SCHEMA, false)?
12415                .finish();
12416            Ok(())
12417        }
12418    }
12419    pub struct RerankOpArgs<'a> {
12420        pub input: u32,
12421        pub score_expr: Option<::flatbuffers::WIPOffset<Expr<'a>>>,
12422        pub top_k: u32,
12423        pub schema: Option<
12424            ::flatbuffers::WIPOffset<
12425                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<ColDef<'a>>>,
12426            >,
12427        >,
12428    }
12429    impl<'a> Default for RerankOpArgs<'a> {
12430        #[inline]
12431        fn default() -> Self {
12432            RerankOpArgs {
12433                input: 0,
12434                score_expr: None,
12435                top_k: 0,
12436                schema: None,
12437            }
12438        }
12439    }
12440
12441    pub struct RerankOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12442        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12443        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12444    }
12445    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> RerankOpBuilder<'a, 'b, A> {
12446        #[inline]
12447        pub fn add_input(&mut self, input: u32) {
12448            self.fbb_.push_slot::<u32>(RerankOp::VT_INPUT, input, 0);
12449        }
12450        #[inline]
12451        pub fn add_score_expr(&mut self, score_expr: ::flatbuffers::WIPOffset<Expr<'b>>) {
12452            self.fbb_
12453                .push_slot_always::<::flatbuffers::WIPOffset<Expr>>(
12454                    RerankOp::VT_SCORE_EXPR,
12455                    score_expr,
12456                );
12457        }
12458        #[inline]
12459        pub fn add_top_k(&mut self, top_k: u32) {
12460            self.fbb_.push_slot::<u32>(RerankOp::VT_TOP_K, top_k, 0);
12461        }
12462        #[inline]
12463        pub fn add_schema(
12464            &mut self,
12465            schema: ::flatbuffers::WIPOffset<
12466                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<ColDef<'b>>>,
12467            >,
12468        ) {
12469            self.fbb_
12470                .push_slot_always::<::flatbuffers::WIPOffset<_>>(RerankOp::VT_SCHEMA, schema);
12471        }
12472        #[inline]
12473        pub fn new(
12474            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12475        ) -> RerankOpBuilder<'a, 'b, A> {
12476            let start = _fbb.start_table();
12477            RerankOpBuilder {
12478                fbb_: _fbb,
12479                start_: start,
12480            }
12481        }
12482        #[inline]
12483        pub fn finish(self) -> ::flatbuffers::WIPOffset<RerankOp<'a>> {
12484            let o = self.fbb_.end_table(self.start_);
12485            ::flatbuffers::WIPOffset::new(o.value())
12486        }
12487    }
12488
12489    impl ::core::fmt::Debug for RerankOp<'_> {
12490        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12491            let mut ds = f.debug_struct("RerankOp");
12492            ds.field("input", &self.input());
12493            ds.field("score_expr", &self.score_expr());
12494            ds.field("top_k", &self.top_k());
12495            ds.field("schema", &self.schema());
12496            ds.finish()
12497        }
12498    }
12499    pub enum ReturnOpOffset {}
12500    #[derive(Copy, Clone, PartialEq)]
12501
12502    pub struct ReturnOp<'a> {
12503        pub _tab: ::flatbuffers::Table<'a>,
12504    }
12505
12506    impl<'a> ::flatbuffers::Follow<'a> for ReturnOp<'a> {
12507        type Inner = ReturnOp<'a>;
12508        #[inline]
12509        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12510            Self {
12511                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12512            }
12513        }
12514    }
12515
12516    impl<'a> ReturnOp<'a> {
12517        pub const VT_INPUT: ::flatbuffers::VOffsetT = 4;
12518
12519        #[inline]
12520        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12521            ReturnOp { _tab: table }
12522        }
12523        #[allow(unused_mut)]
12524        pub fn create<
12525            'bldr: 'args,
12526            'args: 'mut_bldr,
12527            'mut_bldr,
12528            A: ::flatbuffers::Allocator + 'bldr,
12529        >(
12530            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12531            args: &'args ReturnOpArgs,
12532        ) -> ::flatbuffers::WIPOffset<ReturnOp<'bldr>> {
12533            let mut builder = ReturnOpBuilder::new(_fbb);
12534            builder.add_input(args.input);
12535            builder.finish()
12536        }
12537
12538        #[inline]
12539        pub fn input(&self) -> u32 {
12540            // Safety:
12541            // Created from valid Table for this object
12542            // which contains a valid value in this slot
12543            unsafe { self._tab.get::<u32>(ReturnOp::VT_INPUT, Some(0)).unwrap() }
12544        }
12545    }
12546
12547    impl ::flatbuffers::Verifiable for ReturnOp<'_> {
12548        #[inline]
12549        fn run_verifier(
12550            v: &mut ::flatbuffers::Verifier,
12551            pos: usize,
12552        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12553            v.visit_table(pos)?
12554                .visit_field::<u32>("input", Self::VT_INPUT, false)?
12555                .finish();
12556            Ok(())
12557        }
12558    }
12559    pub struct ReturnOpArgs {
12560        pub input: u32,
12561    }
12562    impl<'a> Default for ReturnOpArgs {
12563        #[inline]
12564        fn default() -> Self {
12565            ReturnOpArgs { input: 0 }
12566        }
12567    }
12568
12569    pub struct ReturnOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12570        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12571        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12572    }
12573    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ReturnOpBuilder<'a, 'b, A> {
12574        #[inline]
12575        pub fn add_input(&mut self, input: u32) {
12576            self.fbb_.push_slot::<u32>(ReturnOp::VT_INPUT, input, 0);
12577        }
12578        #[inline]
12579        pub fn new(
12580            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12581        ) -> ReturnOpBuilder<'a, 'b, A> {
12582            let start = _fbb.start_table();
12583            ReturnOpBuilder {
12584                fbb_: _fbb,
12585                start_: start,
12586            }
12587        }
12588        #[inline]
12589        pub fn finish(self) -> ::flatbuffers::WIPOffset<ReturnOp<'a>> {
12590            let o = self.fbb_.end_table(self.start_);
12591            ::flatbuffers::WIPOffset::new(o.value())
12592        }
12593    }
12594
12595    impl ::core::fmt::Debug for ReturnOp<'_> {
12596        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12597            let mut ds = f.debug_struct("ReturnOp");
12598            ds.field("input", &self.input());
12599            ds.finish()
12600        }
12601    }
12602    pub enum ConstRowOpOffset {}
12603    #[derive(Copy, Clone, PartialEq)]
12604
12605    /// Zero-input source op that emits exactly one empty row.
12606    /// Used as the seed row for standalone CREATE/INSERT without a preceding MATCH.
12607    pub struct ConstRowOp<'a> {
12608        pub _tab: ::flatbuffers::Table<'a>,
12609    }
12610
12611    impl<'a> ::flatbuffers::Follow<'a> for ConstRowOp<'a> {
12612        type Inner = ConstRowOp<'a>;
12613        #[inline]
12614        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12615            Self {
12616                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12617            }
12618        }
12619    }
12620
12621    impl<'a> ConstRowOp<'a> {
12622        #[inline]
12623        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12624            ConstRowOp { _tab: table }
12625        }
12626        #[allow(unused_mut)]
12627        pub fn create<
12628            'bldr: 'args,
12629            'args: 'mut_bldr,
12630            'mut_bldr,
12631            A: ::flatbuffers::Allocator + 'bldr,
12632        >(
12633            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12634            _args: &'args ConstRowOpArgs,
12635        ) -> ::flatbuffers::WIPOffset<ConstRowOp<'bldr>> {
12636            let mut builder = ConstRowOpBuilder::new(_fbb);
12637            builder.finish()
12638        }
12639    }
12640
12641    impl ::flatbuffers::Verifiable for ConstRowOp<'_> {
12642        #[inline]
12643        fn run_verifier(
12644            v: &mut ::flatbuffers::Verifier,
12645            pos: usize,
12646        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
12647            v.visit_table(pos)?.finish();
12648            Ok(())
12649        }
12650    }
12651    pub struct ConstRowOpArgs {}
12652    impl<'a> Default for ConstRowOpArgs {
12653        #[inline]
12654        fn default() -> Self {
12655            ConstRowOpArgs {}
12656        }
12657    }
12658
12659    pub struct ConstRowOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
12660        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12661        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
12662    }
12663    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> ConstRowOpBuilder<'a, 'b, A> {
12664        #[inline]
12665        pub fn new(
12666            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
12667        ) -> ConstRowOpBuilder<'a, 'b, A> {
12668            let start = _fbb.start_table();
12669            ConstRowOpBuilder {
12670                fbb_: _fbb,
12671                start_: start,
12672            }
12673        }
12674        #[inline]
12675        pub fn finish(self) -> ::flatbuffers::WIPOffset<ConstRowOp<'a>> {
12676            let o = self.fbb_.end_table(self.start_);
12677            ::flatbuffers::WIPOffset::new(o.value())
12678        }
12679    }
12680
12681    impl ::core::fmt::Debug for ConstRowOp<'_> {
12682        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12683            let mut ds = f.debug_struct("ConstRowOp");
12684            ds.finish()
12685        }
12686    }
12687    pub enum PlanOpOffset {}
12688    #[derive(Copy, Clone, PartialEq)]
12689
12690    pub struct PlanOp<'a> {
12691        pub _tab: ::flatbuffers::Table<'a>,
12692    }
12693
12694    impl<'a> ::flatbuffers::Follow<'a> for PlanOp<'a> {
12695        type Inner = PlanOp<'a>;
12696        #[inline]
12697        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12698            Self {
12699                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
12700            }
12701        }
12702    }
12703
12704    impl<'a> PlanOp<'a> {
12705        pub const VT_NODE_TYPE: ::flatbuffers::VOffsetT = 4;
12706        pub const VT_NODE: ::flatbuffers::VOffsetT = 6;
12707
12708        #[inline]
12709        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
12710            PlanOp { _tab: table }
12711        }
12712        #[allow(unused_mut)]
12713        pub fn create<
12714            'bldr: 'args,
12715            'args: 'mut_bldr,
12716            'mut_bldr,
12717            A: ::flatbuffers::Allocator + 'bldr,
12718        >(
12719            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
12720            args: &'args PlanOpArgs,
12721        ) -> ::flatbuffers::WIPOffset<PlanOp<'bldr>> {
12722            let mut builder = PlanOpBuilder::new(_fbb);
12723            if let Some(x) = args.node {
12724                builder.add_node(x);
12725            }
12726            builder.add_node_type(args.node_type);
12727            builder.finish()
12728        }
12729
12730        #[inline]
12731        pub fn node_type(&self) -> OpNode {
12732            // Safety:
12733            // Created from valid Table for this object
12734            // which contains a valid value in this slot
12735            unsafe {
12736                self._tab
12737                    .get::<OpNode>(PlanOp::VT_NODE_TYPE, Some(OpNode::NONE))
12738                    .unwrap()
12739            }
12740        }
12741        #[inline]
12742        pub fn node(&self) -> Option<::flatbuffers::Table<'a>> {
12743            // Safety:
12744            // Created from valid Table for this object
12745            // which contains a valid value in this slot
12746            unsafe {
12747                self._tab
12748                    .get::<::flatbuffers::ForwardsUOffset<::flatbuffers::Table<'a>>>(
12749                        PlanOp::VT_NODE,
12750                        None,
12751                    )
12752            }
12753        }
12754        #[inline]
12755        #[allow(non_snake_case)]
12756        pub fn node_as_scan_nodes_op(&self) -> Option<ScanNodesOp<'a>> {
12757            if self.node_type() == OpNode::ScanNodesOp {
12758                self.node().map(|t| {
12759                    // Safety:
12760                    // Created from a valid Table for this object
12761                    // Which contains a valid union in this slot
12762                    unsafe { ScanNodesOp::init_from_table(t) }
12763                })
12764            } else {
12765                None
12766            }
12767        }
12768
12769        #[inline]
12770        #[allow(non_snake_case)]
12771        pub fn node_as_scan_rels_op(&self) -> Option<ScanRelsOp<'a>> {
12772            if self.node_type() == OpNode::ScanRelsOp {
12773                self.node().map(|t| {
12774                    // Safety:
12775                    // Created from a valid Table for this object
12776                    // Which contains a valid union in this slot
12777                    unsafe { ScanRelsOp::init_from_table(t) }
12778                })
12779            } else {
12780                None
12781            }
12782        }
12783
12784        #[inline]
12785        #[allow(non_snake_case)]
12786        pub fn node_as_expand_op(&self) -> Option<ExpandOp<'a>> {
12787            if self.node_type() == OpNode::ExpandOp {
12788                self.node().map(|t| {
12789                    // Safety:
12790                    // Created from a valid Table for this object
12791                    // Which contains a valid union in this slot
12792                    unsafe { ExpandOp::init_from_table(t) }
12793                })
12794            } else {
12795                None
12796            }
12797        }
12798
12799        #[inline]
12800        #[allow(non_snake_case)]
12801        pub fn node_as_optional_expand_op(&self) -> Option<OptionalExpandOp<'a>> {
12802            if self.node_type() == OpNode::OptionalExpandOp {
12803                self.node().map(|t| {
12804                    // Safety:
12805                    // Created from a valid Table for this object
12806                    // Which contains a valid union in this slot
12807                    unsafe { OptionalExpandOp::init_from_table(t) }
12808                })
12809            } else {
12810                None
12811            }
12812        }
12813
12814        #[inline]
12815        #[allow(non_snake_case)]
12816        pub fn node_as_semi_expand_op(&self) -> Option<SemiExpandOp<'a>> {
12817            if self.node_type() == OpNode::SemiExpandOp {
12818                self.node().map(|t| {
12819                    // Safety:
12820                    // Created from a valid Table for this object
12821                    // Which contains a valid union in this slot
12822                    unsafe { SemiExpandOp::init_from_table(t) }
12823                })
12824            } else {
12825                None
12826            }
12827        }
12828
12829        #[inline]
12830        #[allow(non_snake_case)]
12831        pub fn node_as_expand_var_len_op(&self) -> Option<ExpandVarLenOp<'a>> {
12832            if self.node_type() == OpNode::ExpandVarLenOp {
12833                self.node().map(|t| {
12834                    // Safety:
12835                    // Created from a valid Table for this object
12836                    // Which contains a valid union in this slot
12837                    unsafe { ExpandVarLenOp::init_from_table(t) }
12838                })
12839            } else {
12840                None
12841            }
12842        }
12843
12844        #[inline]
12845        #[allow(non_snake_case)]
12846        pub fn node_as_filter_op(&self) -> Option<FilterOp<'a>> {
12847            if self.node_type() == OpNode::FilterOp {
12848                self.node().map(|t| {
12849                    // Safety:
12850                    // Created from a valid Table for this object
12851                    // Which contains a valid union in this slot
12852                    unsafe { FilterOp::init_from_table(t) }
12853                })
12854            } else {
12855                None
12856            }
12857        }
12858
12859        #[inline]
12860        #[allow(non_snake_case)]
12861        pub fn node_as_block_marker_op(&self) -> Option<BlockMarkerOp<'a>> {
12862            if self.node_type() == OpNode::BlockMarkerOp {
12863                self.node().map(|t| {
12864                    // Safety:
12865                    // Created from a valid Table for this object
12866                    // Which contains a valid union in this slot
12867                    unsafe { BlockMarkerOp::init_from_table(t) }
12868                })
12869            } else {
12870                None
12871            }
12872        }
12873
12874        #[inline]
12875        #[allow(non_snake_case)]
12876        pub fn node_as_project_op(&self) -> Option<ProjectOp<'a>> {
12877            if self.node_type() == OpNode::ProjectOp {
12878                self.node().map(|t| {
12879                    // Safety:
12880                    // Created from a valid Table for this object
12881                    // Which contains a valid union in this slot
12882                    unsafe { ProjectOp::init_from_table(t) }
12883                })
12884            } else {
12885                None
12886            }
12887        }
12888
12889        #[inline]
12890        #[allow(non_snake_case)]
12891        pub fn node_as_aggregate_op(&self) -> Option<AggregateOp<'a>> {
12892            if self.node_type() == OpNode::AggregateOp {
12893                self.node().map(|t| {
12894                    // Safety:
12895                    // Created from a valid Table for this object
12896                    // Which contains a valid union in this slot
12897                    unsafe { AggregateOp::init_from_table(t) }
12898                })
12899            } else {
12900                None
12901            }
12902        }
12903
12904        #[inline]
12905        #[allow(non_snake_case)]
12906        pub fn node_as_sort_op(&self) -> Option<SortOp<'a>> {
12907            if self.node_type() == OpNode::SortOp {
12908                self.node().map(|t| {
12909                    // Safety:
12910                    // Created from a valid Table for this object
12911                    // Which contains a valid union in this slot
12912                    unsafe { SortOp::init_from_table(t) }
12913                })
12914            } else {
12915                None
12916            }
12917        }
12918
12919        #[inline]
12920        #[allow(non_snake_case)]
12921        pub fn node_as_limit_op(&self) -> Option<LimitOp<'a>> {
12922            if self.node_type() == OpNode::LimitOp {
12923                self.node().map(|t| {
12924                    // Safety:
12925                    // Created from a valid Table for this object
12926                    // Which contains a valid union in this slot
12927                    unsafe { LimitOp::init_from_table(t) }
12928                })
12929            } else {
12930                None
12931            }
12932        }
12933
12934        #[inline]
12935        #[allow(non_snake_case)]
12936        pub fn node_as_unwind_op(&self) -> Option<UnwindOp<'a>> {
12937            if self.node_type() == OpNode::UnwindOp {
12938                self.node().map(|t| {
12939                    // Safety:
12940                    // Created from a valid Table for this object
12941                    // Which contains a valid union in this slot
12942                    unsafe { UnwindOp::init_from_table(t) }
12943                })
12944            } else {
12945                None
12946            }
12947        }
12948
12949        #[inline]
12950        #[allow(non_snake_case)]
12951        pub fn node_as_path_construct_op(&self) -> Option<PathConstructOp<'a>> {
12952            if self.node_type() == OpNode::PathConstructOp {
12953                self.node().map(|t| {
12954                    // Safety:
12955                    // Created from a valid Table for this object
12956                    // Which contains a valid union in this slot
12957                    unsafe { PathConstructOp::init_from_table(t) }
12958                })
12959            } else {
12960                None
12961            }
12962        }
12963
12964        #[inline]
12965        #[allow(non_snake_case)]
12966        pub fn node_as_union_op(&self) -> Option<UnionOp<'a>> {
12967            if self.node_type() == OpNode::UnionOp {
12968                self.node().map(|t| {
12969                    // Safety:
12970                    // Created from a valid Table for this object
12971                    // Which contains a valid union in this slot
12972                    unsafe { UnionOp::init_from_table(t) }
12973                })
12974            } else {
12975                None
12976            }
12977        }
12978
12979        #[inline]
12980        #[allow(non_snake_case)]
12981        pub fn node_as_create_node_op(&self) -> Option<CreateNodeOp<'a>> {
12982            if self.node_type() == OpNode::CreateNodeOp {
12983                self.node().map(|t| {
12984                    // Safety:
12985                    // Created from a valid Table for this object
12986                    // Which contains a valid union in this slot
12987                    unsafe { CreateNodeOp::init_from_table(t) }
12988                })
12989            } else {
12990                None
12991            }
12992        }
12993
12994        #[inline]
12995        #[allow(non_snake_case)]
12996        pub fn node_as_create_rel_op(&self) -> Option<CreateRelOp<'a>> {
12997            if self.node_type() == OpNode::CreateRelOp {
12998                self.node().map(|t| {
12999                    // Safety:
13000                    // Created from a valid Table for this object
13001                    // Which contains a valid union in this slot
13002                    unsafe { CreateRelOp::init_from_table(t) }
13003                })
13004            } else {
13005                None
13006            }
13007        }
13008
13009        #[inline]
13010        #[allow(non_snake_case)]
13011        pub fn node_as_merge_op(&self) -> Option<MergeOp<'a>> {
13012            if self.node_type() == OpNode::MergeOp {
13013                self.node().map(|t| {
13014                    // Safety:
13015                    // Created from a valid Table for this object
13016                    // Which contains a valid union in this slot
13017                    unsafe { MergeOp::init_from_table(t) }
13018                })
13019            } else {
13020                None
13021            }
13022        }
13023
13024        #[inline]
13025        #[allow(non_snake_case)]
13026        pub fn node_as_delete_op(&self) -> Option<DeleteOp<'a>> {
13027            if self.node_type() == OpNode::DeleteOp {
13028                self.node().map(|t| {
13029                    // Safety:
13030                    // Created from a valid Table for this object
13031                    // Which contains a valid union in this slot
13032                    unsafe { DeleteOp::init_from_table(t) }
13033                })
13034            } else {
13035                None
13036            }
13037        }
13038
13039        #[inline]
13040        #[allow(non_snake_case)]
13041        pub fn node_as_set_property_op(&self) -> Option<SetPropertyOp<'a>> {
13042            if self.node_type() == OpNode::SetPropertyOp {
13043                self.node().map(|t| {
13044                    // Safety:
13045                    // Created from a valid Table for this object
13046                    // Which contains a valid union in this slot
13047                    unsafe { SetPropertyOp::init_from_table(t) }
13048                })
13049            } else {
13050                None
13051            }
13052        }
13053
13054        #[inline]
13055        #[allow(non_snake_case)]
13056        pub fn node_as_remove_property_op(&self) -> Option<RemovePropertyOp<'a>> {
13057            if self.node_type() == OpNode::RemovePropertyOp {
13058                self.node().map(|t| {
13059                    // Safety:
13060                    // Created from a valid Table for this object
13061                    // Which contains a valid union in this slot
13062                    unsafe { RemovePropertyOp::init_from_table(t) }
13063                })
13064            } else {
13065                None
13066            }
13067        }
13068
13069        #[inline]
13070        #[allow(non_snake_case)]
13071        pub fn node_as_vector_scan_op(&self) -> Option<VectorScanOp<'a>> {
13072            if self.node_type() == OpNode::VectorScanOp {
13073                self.node().map(|t| {
13074                    // Safety:
13075                    // Created from a valid Table for this object
13076                    // Which contains a valid union in this slot
13077                    unsafe { VectorScanOp::init_from_table(t) }
13078                })
13079            } else {
13080                None
13081            }
13082        }
13083
13084        #[inline]
13085        #[allow(non_snake_case)]
13086        pub fn node_as_rerank_op(&self) -> Option<RerankOp<'a>> {
13087            if self.node_type() == OpNode::RerankOp {
13088                self.node().map(|t| {
13089                    // Safety:
13090                    // Created from a valid Table for this object
13091                    // Which contains a valid union in this slot
13092                    unsafe { RerankOp::init_from_table(t) }
13093                })
13094            } else {
13095                None
13096            }
13097        }
13098
13099        #[inline]
13100        #[allow(non_snake_case)]
13101        pub fn node_as_return_op(&self) -> Option<ReturnOp<'a>> {
13102            if self.node_type() == OpNode::ReturnOp {
13103                self.node().map(|t| {
13104                    // Safety:
13105                    // Created from a valid Table for this object
13106                    // Which contains a valid union in this slot
13107                    unsafe { ReturnOp::init_from_table(t) }
13108                })
13109            } else {
13110                None
13111            }
13112        }
13113
13114        #[inline]
13115        #[allow(non_snake_case)]
13116        pub fn node_as_const_row_op(&self) -> Option<ConstRowOp<'a>> {
13117            if self.node_type() == OpNode::ConstRowOp {
13118                self.node().map(|t| {
13119                    // Safety:
13120                    // Created from a valid Table for this object
13121                    // Which contains a valid union in this slot
13122                    unsafe { ConstRowOp::init_from_table(t) }
13123                })
13124            } else {
13125                None
13126            }
13127        }
13128    }
13129
13130    impl ::flatbuffers::Verifiable for PlanOp<'_> {
13131        #[inline]
13132        fn run_verifier(
13133            v: &mut ::flatbuffers::Verifier,
13134            pos: usize,
13135        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
13136            v.visit_table(pos)?
13137     .visit_union::<OpNode, _>("node_type", Self::VT_NODE_TYPE, "node", Self::VT_NODE, false, |key, v, pos| {
13138        match key {
13139          OpNode::ScanNodesOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ScanNodesOp>>("OpNode::ScanNodesOp", pos),
13140          OpNode::ScanRelsOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ScanRelsOp>>("OpNode::ScanRelsOp", pos),
13141          OpNode::ExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ExpandOp>>("OpNode::ExpandOp", pos),
13142          OpNode::OptionalExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<OptionalExpandOp>>("OpNode::OptionalExpandOp", pos),
13143          OpNode::SemiExpandOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SemiExpandOp>>("OpNode::SemiExpandOp", pos),
13144          OpNode::ExpandVarLenOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ExpandVarLenOp>>("OpNode::ExpandVarLenOp", pos),
13145          OpNode::FilterOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<FilterOp>>("OpNode::FilterOp", pos),
13146          OpNode::BlockMarkerOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<BlockMarkerOp>>("OpNode::BlockMarkerOp", pos),
13147          OpNode::ProjectOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ProjectOp>>("OpNode::ProjectOp", pos),
13148          OpNode::AggregateOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<AggregateOp>>("OpNode::AggregateOp", pos),
13149          OpNode::SortOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SortOp>>("OpNode::SortOp", pos),
13150          OpNode::LimitOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<LimitOp>>("OpNode::LimitOp", pos),
13151          OpNode::UnwindOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<UnwindOp>>("OpNode::UnwindOp", pos),
13152          OpNode::PathConstructOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<PathConstructOp>>("OpNode::PathConstructOp", pos),
13153          OpNode::UnionOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<UnionOp>>("OpNode::UnionOp", pos),
13154          OpNode::CreateNodeOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CreateNodeOp>>("OpNode::CreateNodeOp", pos),
13155          OpNode::CreateRelOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<CreateRelOp>>("OpNode::CreateRelOp", pos),
13156          OpNode::MergeOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<MergeOp>>("OpNode::MergeOp", pos),
13157          OpNode::DeleteOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<DeleteOp>>("OpNode::DeleteOp", pos),
13158          OpNode::SetPropertyOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<SetPropertyOp>>("OpNode::SetPropertyOp", pos),
13159          OpNode::RemovePropertyOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<RemovePropertyOp>>("OpNode::RemovePropertyOp", pos),
13160          OpNode::VectorScanOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<VectorScanOp>>("OpNode::VectorScanOp", pos),
13161          OpNode::RerankOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<RerankOp>>("OpNode::RerankOp", pos),
13162          OpNode::ReturnOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ReturnOp>>("OpNode::ReturnOp", pos),
13163          OpNode::ConstRowOp => v.verify_union_variant::<::flatbuffers::ForwardsUOffset<ConstRowOp>>("OpNode::ConstRowOp", pos),
13164          _ => Ok(()),
13165        }
13166     })?
13167     .finish();
13168            Ok(())
13169        }
13170    }
13171    pub struct PlanOpArgs {
13172        pub node_type: OpNode,
13173        pub node: Option<::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>>,
13174    }
13175    impl<'a> Default for PlanOpArgs {
13176        #[inline]
13177        fn default() -> Self {
13178            PlanOpArgs {
13179                node_type: OpNode::NONE,
13180                node: None,
13181            }
13182        }
13183    }
13184
13185    pub struct PlanOpBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
13186        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13187        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
13188    }
13189    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PlanOpBuilder<'a, 'b, A> {
13190        #[inline]
13191        pub fn add_node_type(&mut self, node_type: OpNode) {
13192            self.fbb_
13193                .push_slot::<OpNode>(PlanOp::VT_NODE_TYPE, node_type, OpNode::NONE);
13194        }
13195        #[inline]
13196        pub fn add_node(&mut self, node: ::flatbuffers::WIPOffset<::flatbuffers::UnionWIPOffset>) {
13197            self.fbb_
13198                .push_slot_always::<::flatbuffers::WIPOffset<_>>(PlanOp::VT_NODE, node);
13199        }
13200        #[inline]
13201        pub fn new(
13202            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13203        ) -> PlanOpBuilder<'a, 'b, A> {
13204            let start = _fbb.start_table();
13205            PlanOpBuilder {
13206                fbb_: _fbb,
13207                start_: start,
13208            }
13209        }
13210        #[inline]
13211        pub fn finish(self) -> ::flatbuffers::WIPOffset<PlanOp<'a>> {
13212            let o = self.fbb_.end_table(self.start_);
13213            ::flatbuffers::WIPOffset::new(o.value())
13214        }
13215    }
13216
13217    impl ::core::fmt::Debug for PlanOp<'_> {
13218        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13219            let mut ds = f.debug_struct("PlanOp");
13220            ds.field("node_type", &self.node_type());
13221            match self.node_type() {
13222                OpNode::ScanNodesOp => {
13223                    if let Some(x) = self.node_as_scan_nodes_op() {
13224                        ds.field("node", &x)
13225                    } else {
13226                        ds.field(
13227                            "node",
13228                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13229                        )
13230                    }
13231                }
13232                OpNode::ScanRelsOp => {
13233                    if let Some(x) = self.node_as_scan_rels_op() {
13234                        ds.field("node", &x)
13235                    } else {
13236                        ds.field(
13237                            "node",
13238                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13239                        )
13240                    }
13241                }
13242                OpNode::ExpandOp => {
13243                    if let Some(x) = self.node_as_expand_op() {
13244                        ds.field("node", &x)
13245                    } else {
13246                        ds.field(
13247                            "node",
13248                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13249                        )
13250                    }
13251                }
13252                OpNode::OptionalExpandOp => {
13253                    if let Some(x) = self.node_as_optional_expand_op() {
13254                        ds.field("node", &x)
13255                    } else {
13256                        ds.field(
13257                            "node",
13258                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13259                        )
13260                    }
13261                }
13262                OpNode::SemiExpandOp => {
13263                    if let Some(x) = self.node_as_semi_expand_op() {
13264                        ds.field("node", &x)
13265                    } else {
13266                        ds.field(
13267                            "node",
13268                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13269                        )
13270                    }
13271                }
13272                OpNode::ExpandVarLenOp => {
13273                    if let Some(x) = self.node_as_expand_var_len_op() {
13274                        ds.field("node", &x)
13275                    } else {
13276                        ds.field(
13277                            "node",
13278                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13279                        )
13280                    }
13281                }
13282                OpNode::FilterOp => {
13283                    if let Some(x) = self.node_as_filter_op() {
13284                        ds.field("node", &x)
13285                    } else {
13286                        ds.field(
13287                            "node",
13288                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13289                        )
13290                    }
13291                }
13292                OpNode::BlockMarkerOp => {
13293                    if let Some(x) = self.node_as_block_marker_op() {
13294                        ds.field("node", &x)
13295                    } else {
13296                        ds.field(
13297                            "node",
13298                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13299                        )
13300                    }
13301                }
13302                OpNode::ProjectOp => {
13303                    if let Some(x) = self.node_as_project_op() {
13304                        ds.field("node", &x)
13305                    } else {
13306                        ds.field(
13307                            "node",
13308                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13309                        )
13310                    }
13311                }
13312                OpNode::AggregateOp => {
13313                    if let Some(x) = self.node_as_aggregate_op() {
13314                        ds.field("node", &x)
13315                    } else {
13316                        ds.field(
13317                            "node",
13318                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13319                        )
13320                    }
13321                }
13322                OpNode::SortOp => {
13323                    if let Some(x) = self.node_as_sort_op() {
13324                        ds.field("node", &x)
13325                    } else {
13326                        ds.field(
13327                            "node",
13328                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13329                        )
13330                    }
13331                }
13332                OpNode::LimitOp => {
13333                    if let Some(x) = self.node_as_limit_op() {
13334                        ds.field("node", &x)
13335                    } else {
13336                        ds.field(
13337                            "node",
13338                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13339                        )
13340                    }
13341                }
13342                OpNode::UnwindOp => {
13343                    if let Some(x) = self.node_as_unwind_op() {
13344                        ds.field("node", &x)
13345                    } else {
13346                        ds.field(
13347                            "node",
13348                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13349                        )
13350                    }
13351                }
13352                OpNode::PathConstructOp => {
13353                    if let Some(x) = self.node_as_path_construct_op() {
13354                        ds.field("node", &x)
13355                    } else {
13356                        ds.field(
13357                            "node",
13358                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13359                        )
13360                    }
13361                }
13362                OpNode::UnionOp => {
13363                    if let Some(x) = self.node_as_union_op() {
13364                        ds.field("node", &x)
13365                    } else {
13366                        ds.field(
13367                            "node",
13368                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13369                        )
13370                    }
13371                }
13372                OpNode::CreateNodeOp => {
13373                    if let Some(x) = self.node_as_create_node_op() {
13374                        ds.field("node", &x)
13375                    } else {
13376                        ds.field(
13377                            "node",
13378                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13379                        )
13380                    }
13381                }
13382                OpNode::CreateRelOp => {
13383                    if let Some(x) = self.node_as_create_rel_op() {
13384                        ds.field("node", &x)
13385                    } else {
13386                        ds.field(
13387                            "node",
13388                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13389                        )
13390                    }
13391                }
13392                OpNode::MergeOp => {
13393                    if let Some(x) = self.node_as_merge_op() {
13394                        ds.field("node", &x)
13395                    } else {
13396                        ds.field(
13397                            "node",
13398                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13399                        )
13400                    }
13401                }
13402                OpNode::DeleteOp => {
13403                    if let Some(x) = self.node_as_delete_op() {
13404                        ds.field("node", &x)
13405                    } else {
13406                        ds.field(
13407                            "node",
13408                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13409                        )
13410                    }
13411                }
13412                OpNode::SetPropertyOp => {
13413                    if let Some(x) = self.node_as_set_property_op() {
13414                        ds.field("node", &x)
13415                    } else {
13416                        ds.field(
13417                            "node",
13418                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13419                        )
13420                    }
13421                }
13422                OpNode::RemovePropertyOp => {
13423                    if let Some(x) = self.node_as_remove_property_op() {
13424                        ds.field("node", &x)
13425                    } else {
13426                        ds.field(
13427                            "node",
13428                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13429                        )
13430                    }
13431                }
13432                OpNode::VectorScanOp => {
13433                    if let Some(x) = self.node_as_vector_scan_op() {
13434                        ds.field("node", &x)
13435                    } else {
13436                        ds.field(
13437                            "node",
13438                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13439                        )
13440                    }
13441                }
13442                OpNode::RerankOp => {
13443                    if let Some(x) = self.node_as_rerank_op() {
13444                        ds.field("node", &x)
13445                    } else {
13446                        ds.field(
13447                            "node",
13448                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13449                        )
13450                    }
13451                }
13452                OpNode::ReturnOp => {
13453                    if let Some(x) = self.node_as_return_op() {
13454                        ds.field("node", &x)
13455                    } else {
13456                        ds.field(
13457                            "node",
13458                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13459                        )
13460                    }
13461                }
13462                OpNode::ConstRowOp => {
13463                    if let Some(x) = self.node_as_const_row_op() {
13464                        ds.field("node", &x)
13465                    } else {
13466                        ds.field(
13467                            "node",
13468                            &"InvalidFlatbuffer: Union discriminant does not match value.",
13469                        )
13470                    }
13471                }
13472                _ => {
13473                    let x: Option<()> = None;
13474                    ds.field("node", &x)
13475                }
13476            };
13477            ds.finish()
13478        }
13479    }
13480    pub enum PlexusPlanOffset {}
13481    #[derive(Copy, Clone, PartialEq)]
13482
13483    /// Root table for a serialized Plexus query plan.
13484    pub struct PlexusPlan<'a> {
13485        pub _tab: ::flatbuffers::Table<'a>,
13486    }
13487
13488    impl<'a> ::flatbuffers::Follow<'a> for PlexusPlan<'a> {
13489        type Inner = PlexusPlan<'a>;
13490        #[inline]
13491        unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13492            Self {
13493                _tab: unsafe { ::flatbuffers::Table::new(buf, loc) },
13494            }
13495        }
13496    }
13497
13498    impl<'a> PlexusPlan<'a> {
13499        pub const VT_VERSION: ::flatbuffers::VOffsetT = 4;
13500        pub const VT_OPS: ::flatbuffers::VOffsetT = 6;
13501        pub const VT_ROOT_OP: ::flatbuffers::VOffsetT = 8;
13502
13503        #[inline]
13504        pub unsafe fn init_from_table(table: ::flatbuffers::Table<'a>) -> Self {
13505            PlexusPlan { _tab: table }
13506        }
13507        #[allow(unused_mut)]
13508        pub fn create<
13509            'bldr: 'args,
13510            'args: 'mut_bldr,
13511            'mut_bldr,
13512            A: ::flatbuffers::Allocator + 'bldr,
13513        >(
13514            _fbb: &'mut_bldr mut ::flatbuffers::FlatBufferBuilder<'bldr, A>,
13515            args: &'args PlexusPlanArgs<'args>,
13516        ) -> ::flatbuffers::WIPOffset<PlexusPlan<'bldr>> {
13517            let mut builder = PlexusPlanBuilder::new(_fbb);
13518            builder.add_root_op(args.root_op);
13519            if let Some(x) = args.ops {
13520                builder.add_ops(x);
13521            }
13522            if let Some(x) = args.version {
13523                builder.add_version(x);
13524            }
13525            builder.finish()
13526        }
13527
13528        #[inline]
13529        pub fn version(&self) -> Version<'a> {
13530            // Safety:
13531            // Created from valid Table for this object
13532            // which contains a valid value in this slot
13533            unsafe {
13534                self._tab
13535                    .get::<::flatbuffers::ForwardsUOffset<Version>>(PlexusPlan::VT_VERSION, None)
13536                    .unwrap()
13537            }
13538        }
13539        #[inline]
13540        pub fn ops(
13541            &self,
13542        ) -> Option<::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp<'a>>>> {
13543            // Safety:
13544            // Created from valid Table for this object
13545            // which contains a valid value in this slot
13546            unsafe {
13547                self._tab.get::<::flatbuffers::ForwardsUOffset<
13548                    ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp>>,
13549                >>(PlexusPlan::VT_OPS, None)
13550            }
13551        }
13552        #[inline]
13553        pub fn root_op(&self) -> u32 {
13554            // Safety:
13555            // Created from valid Table for this object
13556            // which contains a valid value in this slot
13557            unsafe {
13558                self._tab
13559                    .get::<u32>(PlexusPlan::VT_ROOT_OP, Some(0))
13560                    .unwrap()
13561            }
13562        }
13563    }
13564
13565    impl ::flatbuffers::Verifiable for PlexusPlan<'_> {
13566        #[inline]
13567        fn run_verifier(
13568            v: &mut ::flatbuffers::Verifier,
13569            pos: usize,
13570        ) -> Result<(), ::flatbuffers::InvalidFlatbuffer> {
13571            v.visit_table(pos)?
13572                .visit_field::<::flatbuffers::ForwardsUOffset<Version>>(
13573                    "version",
13574                    Self::VT_VERSION,
13575                    true,
13576                )?
13577                .visit_field::<::flatbuffers::ForwardsUOffset<
13578                    ::flatbuffers::Vector<'_, ::flatbuffers::ForwardsUOffset<PlanOp>>,
13579                >>("ops", Self::VT_OPS, false)?
13580                .visit_field::<u32>("root_op", Self::VT_ROOT_OP, false)?
13581                .finish();
13582            Ok(())
13583        }
13584    }
13585    pub struct PlexusPlanArgs<'a> {
13586        pub version: Option<::flatbuffers::WIPOffset<Version<'a>>>,
13587        pub ops: Option<
13588            ::flatbuffers::WIPOffset<
13589                ::flatbuffers::Vector<'a, ::flatbuffers::ForwardsUOffset<PlanOp<'a>>>,
13590            >,
13591        >,
13592        pub root_op: u32,
13593    }
13594    impl<'a> Default for PlexusPlanArgs<'a> {
13595        #[inline]
13596        fn default() -> Self {
13597            PlexusPlanArgs {
13598                version: None, // required field
13599                ops: None,
13600                root_op: 0,
13601            }
13602        }
13603    }
13604
13605    pub struct PlexusPlanBuilder<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> {
13606        fbb_: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13607        start_: ::flatbuffers::WIPOffset<::flatbuffers::TableUnfinishedWIPOffset>,
13608    }
13609    impl<'a: 'b, 'b, A: ::flatbuffers::Allocator + 'a> PlexusPlanBuilder<'a, 'b, A> {
13610        #[inline]
13611        pub fn add_version(&mut self, version: ::flatbuffers::WIPOffset<Version<'b>>) {
13612            self.fbb_
13613                .push_slot_always::<::flatbuffers::WIPOffset<Version>>(
13614                    PlexusPlan::VT_VERSION,
13615                    version,
13616                );
13617        }
13618        #[inline]
13619        pub fn add_ops(
13620            &mut self,
13621            ops: ::flatbuffers::WIPOffset<
13622                ::flatbuffers::Vector<'b, ::flatbuffers::ForwardsUOffset<PlanOp<'b>>>,
13623            >,
13624        ) {
13625            self.fbb_
13626                .push_slot_always::<::flatbuffers::WIPOffset<_>>(PlexusPlan::VT_OPS, ops);
13627        }
13628        #[inline]
13629        pub fn add_root_op(&mut self, root_op: u32) {
13630            self.fbb_
13631                .push_slot::<u32>(PlexusPlan::VT_ROOT_OP, root_op, 0);
13632        }
13633        #[inline]
13634        pub fn new(
13635            _fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13636        ) -> PlexusPlanBuilder<'a, 'b, A> {
13637            let start = _fbb.start_table();
13638            PlexusPlanBuilder {
13639                fbb_: _fbb,
13640                start_: start,
13641            }
13642        }
13643        #[inline]
13644        pub fn finish(self) -> ::flatbuffers::WIPOffset<PlexusPlan<'a>> {
13645            let o = self.fbb_.end_table(self.start_);
13646            self.fbb_.required(o, PlexusPlan::VT_VERSION, "version");
13647            ::flatbuffers::WIPOffset::new(o.value())
13648        }
13649    }
13650
13651    impl ::core::fmt::Debug for PlexusPlan<'_> {
13652        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13653            let mut ds = f.debug_struct("PlexusPlan");
13654            ds.field("version", &self.version());
13655            ds.field("ops", &self.ops());
13656            ds.field("root_op", &self.root_op());
13657            ds.finish()
13658        }
13659    }
13660    #[inline]
13661    /// Verifies that a buffer of bytes contains a `PlexusPlan`
13662    /// and returns it.
13663    /// Note that verification is still experimental and may not
13664    /// catch every error, or be maximally performant. For the
13665    /// previous, unchecked, behavior use
13666    /// `root_as_plexus_plan_unchecked`.
13667    pub fn root_as_plexus_plan(
13668        buf: &[u8],
13669    ) -> Result<PlexusPlan<'_>, ::flatbuffers::InvalidFlatbuffer> {
13670        ::flatbuffers::root::<PlexusPlan>(buf)
13671    }
13672    #[inline]
13673    /// Verifies that a buffer of bytes contains a size prefixed
13674    /// `PlexusPlan` and returns it.
13675    /// Note that verification is still experimental and may not
13676    /// catch every error, or be maximally performant. For the
13677    /// previous, unchecked, behavior use
13678    /// `size_prefixed_root_as_plexus_plan_unchecked`.
13679    pub fn size_prefixed_root_as_plexus_plan(
13680        buf: &[u8],
13681    ) -> Result<PlexusPlan<'_>, ::flatbuffers::InvalidFlatbuffer> {
13682        ::flatbuffers::size_prefixed_root::<PlexusPlan>(buf)
13683    }
13684    #[inline]
13685    /// Verifies, with the given options, that a buffer of bytes
13686    /// contains a `PlexusPlan` and returns it.
13687    /// Note that verification is still experimental and may not
13688    /// catch every error, or be maximally performant. For the
13689    /// previous, unchecked, behavior use
13690    /// `root_as_plexus_plan_unchecked`.
13691    pub fn root_as_plexus_plan_with_opts<'b, 'o>(
13692        opts: &'o ::flatbuffers::VerifierOptions,
13693        buf: &'b [u8],
13694    ) -> Result<PlexusPlan<'b>, ::flatbuffers::InvalidFlatbuffer> {
13695        ::flatbuffers::root_with_opts::<PlexusPlan<'b>>(opts, buf)
13696    }
13697    #[inline]
13698    /// Verifies, with the given verifier options, that a buffer of
13699    /// bytes contains a size prefixed `PlexusPlan` and returns
13700    /// it. Note that verification is still experimental and may not
13701    /// catch every error, or be maximally performant. For the
13702    /// previous, unchecked, behavior use
13703    /// `root_as_plexus_plan_unchecked`.
13704    pub fn size_prefixed_root_as_plexus_plan_with_opts<'b, 'o>(
13705        opts: &'o ::flatbuffers::VerifierOptions,
13706        buf: &'b [u8],
13707    ) -> Result<PlexusPlan<'b>, ::flatbuffers::InvalidFlatbuffer> {
13708        ::flatbuffers::size_prefixed_root_with_opts::<PlexusPlan<'b>>(opts, buf)
13709    }
13710    #[inline]
13711    /// Assumes, without verification, that a buffer of bytes contains a PlexusPlan and returns it.
13712    /// # Safety
13713    /// Callers must trust the given bytes do indeed contain a valid `PlexusPlan`.
13714    pub unsafe fn root_as_plexus_plan_unchecked(buf: &[u8]) -> PlexusPlan<'_> {
13715        unsafe { ::flatbuffers::root_unchecked::<PlexusPlan>(buf) }
13716    }
13717    #[inline]
13718    /// Assumes, without verification, that a buffer of bytes contains a size prefixed PlexusPlan and returns it.
13719    /// # Safety
13720    /// Callers must trust the given bytes do indeed contain a valid size prefixed `PlexusPlan`.
13721    pub unsafe fn size_prefixed_root_as_plexus_plan_unchecked(buf: &[u8]) -> PlexusPlan<'_> {
13722        unsafe { ::flatbuffers::size_prefixed_root_unchecked::<PlexusPlan>(buf) }
13723    }
13724    pub const PLEXUS_PLAN_IDENTIFIER: &str = "PLXS";
13725
13726    #[inline]
13727    pub fn plexus_plan_buffer_has_identifier(buf: &[u8]) -> bool {
13728        ::flatbuffers::buffer_has_identifier(buf, PLEXUS_PLAN_IDENTIFIER, false)
13729    }
13730
13731    #[inline]
13732    pub fn plexus_plan_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
13733        ::flatbuffers::buffer_has_identifier(buf, PLEXUS_PLAN_IDENTIFIER, true)
13734    }
13735
13736    pub const PLEXUS_PLAN_EXTENSION: &str = "plexus";
13737
13738    #[inline]
13739    pub fn finish_plexus_plan_buffer<'a, 'b, A: ::flatbuffers::Allocator + 'a>(
13740        fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13741        root: ::flatbuffers::WIPOffset<PlexusPlan<'a>>,
13742    ) {
13743        fbb.finish(root, Some(PLEXUS_PLAN_IDENTIFIER));
13744    }
13745
13746    #[inline]
13747    pub fn finish_size_prefixed_plexus_plan_buffer<'a, 'b, A: ::flatbuffers::Allocator + 'a>(
13748        fbb: &'b mut ::flatbuffers::FlatBufferBuilder<'a, A>,
13749        root: ::flatbuffers::WIPOffset<PlexusPlan<'a>>,
13750    ) {
13751        fbb.finish_size_prefixed(root, Some(PLEXUS_PLAN_IDENTIFIER));
13752    }
13753} // pub mod plexus